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


  • 代码片段

arm 汇编代码还原--for语句还原_第1张图片

  • 代码特征
*循环变量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
  • 还原后的代码
for(int var_1c=var_38;var_1c<(var_18+var_38);var_1c+=0x400)
{
    sub_DEB77E7E8(var_1c,0x400);
}
  • 总结
    1.定位循环变量
    2.定位条件判断
    3.定位步长
    4.定位循环体

你可能感兴趣的:(arm汇编)