首页
社区
课程
招聘
[求助]请帮忙翻译这段汇编
发表于: 2016-5-11 15:37 3237

[求助]请帮忙翻译这段汇编

2016-5-11 15:37
3237
.text:0003A7C0                 PUSH    {R4-R7,LR}
.text:0003A7C2                 LDR     R3, =(dword_AEF9C - 0x3A7CC)
.text:0003A7C4                 LDR     R4, =0xFFFFF984
.text:0003A7C6                 MOVS    R6, R0
.text:0003A7C8                 ADD     R3, PC ; dword_AEF9C
.text:0003A7CA                 LDR     R0, =0x2402242
.text:0003A7CC                 ADD     SP, R4
.text:0003A7CE                 LDR     R4, [R3]
.text:0003A7D0                 LDR     R3, =0x10000100
.text:0003A7D2                 MOVS    R2, R0
.text:0003A7D4                 BICS    R2, R4
.text:0003A7D6                 LDR     R1, =0x60388009
.text:0003A7D8                 ORRS    R3, R2
.text:0003A7DA                 MOVS    R2, R4
.text:0003A7DC                 ANDS    R2, R0
.text:0003A7DE                 ORRS    R2, R1
.text:0003A7E0                 LDR     R1, =(dword_96CE4 - 0x3A7EA)
.text:0003A7E2                 MOVS    R0, #0
.text:0003A7E4                 ADDS    R2, R3, R2
.text:0003A7E6                 ADD     R1, PC ; dword_96CE4
.text:0003A7E8                 STR     R0, [SP,#0x690+var_684]
.text:0003A7EA                 STR     R1, [SP,#0x690+var_638]
.text:0003A7EC                 B       loc_3A806

//////////////////////////////分割线////////////////////////////////////////////////
.text:0003A7C2                 LDR     R3, =(dword_AEF9C - 0x3A7CC)
.text:0003A7C8                 ADD     R3, PC ; dword_AEF9C
实现什么功能啊?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
注意其中
bics是位清0,
比如
0x11!1=0x10
orrs是或,ands是与,依次类推吧,下面我写的符号可能不准确,你理解那个意思下
我眼睛都看瞎了,你自己整理一下吧,希望可以帮到你

PUSH    {R4-R7,LR}
LDR     R3, =(dword_AEF9C - 0x3A7CC)
LDR     R4, =0xFFFFF984
MOVS    R6, R0
ADD     R3, PC ; dword_AEF9C   ;此时R3=dword_AEF9C
LDR     R0, =0x2402242
ADD     SP, R4
LDR     R4, [R3]                           ;其实上面一段就是R4=*(int*)dword_AEF9C,至于内存中就是R4=*(int*)(dword_AEF9C+base)
LDR     R3, =0x10000100               
MOVS    R2, R0               
BICS    R2, R4                                ;R2和R4或运算,其中R2=0x2402242!*(int*)dword_AEF9C
LDR     R1, =0x60388009
ORRS    R3, R2                                ;R3和R2或运算,此时R3=0x10000100|R2=0x10000100|(0x2402242!*(int*)dword_AEF9C)
MOVS    R2, R4                                ;R2=R4=*(int*)dword_AEF9C
ANDS    R2, R0                                ;R2=R2&R0=*(int*)dword_AEF9C&0x2402242
ORRS    R2, R1                                ;R2=(*(int*)dword_AEF9C&0x2402242 )|0x60388009
LDR     R1, =(dword_96CE4 - 0x3A7EA)
MOVS    R0, #0
ADDS    R2, R3, R2                        ;R2=R3+R2=(0x10000100|(0x2402242!*(int*)dword_AEF9C))+((*(int*)dword_AEF9C&0x2402242 )|0x60388009 )
ADD     R1, PC ; dword_96CE4                ;R=dword_96CE4
STR     R0, [SP,#0x690+var_684]                ;存储R0,R0是0
STR     R1, [SP,#0x690+var_638]                ;存储R1,R1是dword_96CE4,
B       loc_3A806                                        ;跳转,用堆栈传值吧,值丢R0,R1,R2里面了
2016-5-12 19:41
0
游客
登录 | 注册 方可回帖
返回