jjpatcher is a Java ME applet used to patch Sony Ericsson A2 firmware at runtime.
This repository builds the arm.bin payload using the GNU ARM Embedded Toolchain instead of FASMARM.
This project has been migrated from:
- ❌ FASMARM (Flat Assembler for ARM)
- ✅ GNU arm-none-eabi toolchain
- Standard ARM assembler (GNU AS syntax)
- Cross-platform build (Linux / macOS / Windows)
- No custom assembler build required
- Easier maintenance and portability
- Builds arm.bin for multiple A2 firmware targets
- Automatic chipset define selection (DB3150 / DB3210 / DB3350)
- Automatic build directory creation
- Automatic packaging into Patcher.jar
- Single make builds everything
- Small output (~5KB payload)
Install the following:
-
GNU ARM Embedded ToolchainMust provide:
arm-none-eabi-gcc arm-none-eabi-ld arm-none-eabi-objcopy
On Linux:
sudo apt install gcc-arm-none-eabi
On Windows:
Install ARM GNU Toolchain and ensure it is in PATH. -
Java Development Kit (JDK) Required for:
- Updating Patcher.jar
- Running jar command
Verify:
jar --version
-
Make (Linux/macOS)
- On Windows:
- Use MSYS2 / WSL / Git Bash
- Use provided build_gcc.bat
- C702_R3EF001
- C902_R3EG004AO
- C902_R3EG004AS
- T700_R3EG004
- W595_R3EF001
- W595_R3EG004_Orange
- W760_R3EF001
- W760_R3EM001
- W902_R3EG004
- W980_R3EG004
- F100_R1HA035
- J105_R1GA026_Orange
- J105_R1HA035
- T707_R1FA035
- W508_R1FA035
- C510_R1HA035
- C901_R1GA028
- C903_R1GA028
- C905_R1FA035
- T715_R1GA026
- T715_R1HA035
- W705_R1GA031
- W715_R1GA030
- W995_R1HA035
- J10_R7CA061
- J10_R7CA065
- J20_R7CA064
- J108_R7EA011
- U10_R7AA071
- U10_R7BA084
- U100_R7AA076
- W20_R7DA062
- Build All Targets
make- Build All + Package
make package- Clean
make cleanIf not using Make:
build_gcc.bat
This will:
- Build all targets
- Package all targets
- Place output in build/
Each target directory inside build/ will contain:
build/<TARGET>/
├── arm.o
├── arm.elf
├── arm.bin
├── Patcher.jar
├── Patcher.jad
└── <TARGET>.ziparm.bin→ Compiled ARM runtime payloadarm.elf→ Linked ELF (for debugging)Patcher.jar→ jjpatcher with embedded payloadPatcher.jad→ Java descriptor file
- CPU target: arm926ej-s
- Link address: 0x00000000
- Chipset selection is controlled via:
- DDB3150
- DDB3210
- DDB3350
Firmware-specific configuration is injected using:
-DDEVICE_CONFIG="target/gcc/<TARGET>.S"- This project targets Sony Ericsson A2 platform only
- Payload size is intentionally small (~5KB)
- Runtime injection behavior differs slightly between early and late DB3150 revisions
build.batis kept for compiling legacy FASMARM-based builds
For more information, visit the following link:
MobileFree Forum - a2 runtime patcher
Patch /tpa/preset/system/ams/jab3b4ded00cb34b3cc77a6699f87ac10753fa701.b created by jjpatcher using bpatch
jjpatcher 0.4(c) den_poarm.bin(c) IronMaster