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


  • 代码片段

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.定位循环体
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值