![]() ![]() I’ve done it by WinHEX replace options because there was too much hit to made it by hand (almost 2000 replaces). Both instructions are 4-bytes long so I just replaced every occurrence in code section of PE file. Which moves value from Rx register into program counter. In ARMv4 we have: MOV PC, Rx (hex: 0xF0A0E1) We could replace this instruction with some ARMv4 equivalent which could not change execution mode but just jump into location through register. But, as I mentioned before – AutoMapa never goes into Thumb mode, bit 0 of this register is always cleared. If bit 0 of the Rx is set, CPU enters in Thumb mode and starts to process instructions in Thumb instruction set from given address. It is unconditional branch to the address from Rx register. This instruction is described as branch and exchange. It do however uses one new instruction: BX Rx (hex: 1xFFF2E1) But it is not.Ĭontinuing my investigation I discovered that AutoMapa never gets into Thumb mode – it run in default ARM mode all the time. It found out that AutoMapa ( wce42Am.exe) is compiled for ARMv5 instruction set with some additional instructions called Thumb mode and SIMPad CPU – StrongARM has only implemented ARMv4 (without Thumb mode). I’ve started to investigate what’s the reason – I’ve googled for information. One of them was AutoMapa (for navigation). ![]() ![]() There is pack of dlls for SIMPad to run some of them (google for simpad fake dlls), also there is program changing PE headers which modify minimum system version required to run. Unfortunately Siemens was never released WinCE 4.2 for his product, last of the 4.x line system which is required for many programs. It’s not a secret that I get it to play around with – I like vintage hardware like this. It is an old ARM-based 8,4″ touchscreen device with Windows CE 4.1 on board. About two years ago I bought a Siemens SIMPad tablet. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
January 2023
Categories |