ARM、THUMB硬patch技巧

下面内容涵盖硬patch时会使用的技巧:

一、修改函数中调用的字符串变量

1、在data段找个位置存放字符串以\00结尾,记下地址A

2、找到函数中的 

    09 48  LDR  R0, =(aDataLocalTmpTe - 0xD62)     ,记下地址B

.   78 44  ADD     R0, PC ;记下地址C

    LDR  R0, =(aDataLocalTmpTe - 0xD62)  等于 LDR R0,[pc, #100],也就是说aDataLocalTmpTe - 0xD62计算的这个偏移存放在当前pc+100处的位置,记地址D,此时pc+100处的数据如:

text:0000F168 9C 6D 00 00 off_F168        DCD aDataLocalTmpTe - 0xF14A


道先计算字符串离当前PC的位置存放到当前函数下面的数据偏移里,

1、字符串到调用PC :偏移A=地址A-地址C-4

2、偏移A存放到函数尾部的F168处

3、计算地址B处的Opcode,详情查看thumb指令的LDR opcode格式(https://ece.uwaterloo.ca/~ece222/ARM/ARM7-TDMI-manual-pt3.pdf),

48主要是操作哪个寄存器,偏移主要是09这个字节,这个偏移的计算方法是:

(地址D-地址B-2)/4=opcode




你可能感兴趣的:(ARM、THUMB硬patch技巧)