您的位置:首页 > 编程语言

arm 汇编代码还原--for语句还原

2017-12-15 19:53 211 查看
代码片段



代码特征

*循环变量x初始化*
LDR R3=[R11,#_0x38]
STR R3=[R11,#_0x1C] ;此处相当于for(dword var_1c=var38;)
B   loc_DE87FDF8    ;先跳转到循环判断处

loc_DE87FDE0:
**循环体**
LDR R0,[R11,#_0x1C]
MOV R1,#0x400
BL  sub_DEB7E7E8

**步长计数**
LDR R3,[R11,#_0x1C]
ADD R3,R3,#0x400    ;步长为0x400
STR R3,[R11,#_0x1C] ;循环变量var_1c+=0x400相当于for(;;var_1c+=0x400)

loc_DE87FDF8:
**判断体**
LDR R2,[R11,#_0x18]
LDR R3,[R11,#_0x38]
ADD R3,R2,R3
MOV R2,R3
LDR R3,[R11,#0x1c]
cmp R2,R3
BHI loc_DE87FDE0 ;此处相当于for(;var_1c<var_18+var_38;) jmp loc_DE87FDE0


还原后的代码

for(int var_1c=var_38;var_1c<(var_18+var_38);var_1c+=0x400)
{
sub_DEB77E7E8(var_1c,0x400);
}


总结

1.定位循环变量

2.定位条件判断

3.定位步长

4.定位循环体
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: