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

来源:互联网 发布:微医挂号网可靠吗 知乎 编辑:程序博客网 时间:2024/06/04 23:23

  • 代码片段

for语句汇编代码

  • 代码特征
*循环变量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.定位循环体