- 积分
- 24
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
楼主 |
发表于 2009-8-1 00:28:32
|
显示全部楼层
ADD       R2, R6, #0 和MOV  R2, R6是一样的
FUNC3 里面改变了CPSR的值(准确的说是在GetBuffer函数里面),返回时并没有被改变,可以直接BEQ
R5里面确实是群组信息
DCB    0
DCB    0  
只是为了下面ARM模式 ...
binghelingxi 发表于 2009-7-31 20:28
修改了几个小地方然后编译。。。
得不到vkp,只能得到elf
并且elf中的对应字串和原始vkp也有部分区别。奇怪了。。。
明明是按反汇的代码来修改的,竟然会出错了。。。- #define AutoAnswer 0xA09DE7AB
- #define PATCH_ID 0xCD09
- RSEG BODY
- CODE16
- BODY:
- ADD R2, R6, #0 //这个和MOV R2, R6有区别吗?
- ADD R0, R5, #0 //一开始就来这两句,都不知道是什么意思。
- PUSH {R0-R7,LR}
- BL FUNC3
- BEQ FUNC2
- CMP R5, #0
- BEQ FUNC1
- CMP R5, #0xB
- BGT FUNC2
- CMP R5, #3
- BLS FUNC2
- SUB R5, #2
- FUNC1:
- BL FUNC4
- BEQ FUNC5
- FUNC2:
- POP {R0-R7,PC}
- FUNC5:
- POP {R0-R7}
- B FUNC6
- NOP
- ADD R2, R6, #0
- ADD R0, R5, #0
- PUSH {R0-R7,LR}
- BL FUNC3
- BEQ FUNC8
- CMP R5, #0
- BEQ FUNC7
- CMP R5, #0xB
- BGT FUNC8
- CMP R5, #3
- BLS FUNC8
- SUB R5, #2
- B FUNC9
- FUNC7:
- MOV R0, #1
- SWI 0x7D //7D: IsIncognitoCall
- CMP R0, #0
- BNE FUNC9
- MOV R5, #0xA
- FUNC9:
- BL FUNC4
- BEQ FUNC10
- FUNC8:
- POP {R0-R7,PC}
- FUNC10:
- POP {R0-R7}
- B FUNC6
- FUNC4:
- PUSH {R1-R7,LR}
- ADD R4, R5, #2
- LDRB R1, [R6,#1]
- CMP R1, #0
- BEQ FUNC11
- MOV R0, #0
- B FUNC12
- FUNC11:
- SWI 0xB6 // B6: GetProfile()
- FUNC12:
- MOV R1, #0xB
- MUL R0, R1
- ADD R0, R0, R6
- MOV R5, #0xFF
- LDRB R2, [R0,R4]
- LSL R2, R2, #1
- ADD PC, R2
- NOP
- B RP2
- B EndCall
- B EndCallBusy
- B RP1
- B Answer
- EndCallBusy:
- MOV R0, #0
- MOV R1, #0
- SWI 0x66 // 66: EndCallBusy
- B RP1
- EndCall:
- SWI 0x65 //65: EndCall
- B RP1
- Answer:
- LDR R5, =AutoAnswer
- BLX R5
- RP1:
- MOV R5, #0
- RP2:
- ADD R0, R5, #0
- POP {R1-R7,PC}
- NOP
- FUNC6:
- BX PC
- CODE32
- LDMFD SP!, {LR} //这个就完全没见过,看不懂什么意思了。。
- ADD LR, LR, #4
- BX LR
- FUNC3:
- CODE16
- PUSH {R0-R5,R7,LR}
- LDR R0, =PATCH_ID
- SWI 0xC4 //C4: GetBuffer
- BEQ PF1
- MOV R6, R0
- PF1:
- POP {R0-R5,R7,PC}
- END
复制代码 |
|