第7章so逆向流程控制分析

第7章so逆向流程控制分析

 

环境配置

1、 Ubuntu15.10系统IP:192.168.153.130

2、 工具 make 和 IDA

 

 

1、 交叉编译使用make命令

编译后会生成if、if.o、if.S文件

2、 接着使用IDA工具打开if文件查看ARM汇编代码

3、 查看if0的流程图语句,双击if0位置后按空格键进入


将var_8参数位置重命名为p1(注意:按“N”键进行修改)

 

4、 注解if0流程语句



5、 ARM汇编对应的if0流程语句写法

Int if0(int p1){

          If(p1)

                   Return 1;

          Return 0;

}

6、 注解if1流程语句


7、 ARM汇编对应的if1流程语句写法

Int if1(int p1){

if(p1<=9)

Return 5;

         Elseif(p1>10)

                  Return6;

         Elseif(p1==10)

                  Return7;

         Returnp1;

}

8、 注解if2流程语句


9、 ARM汇编对应的if1流程语句写法

Int if2(int p1){

         If(p1<=10)

         Return1;

         Elseif(p1>10)

         {

         If(p1<=19)

         Return 2;

}

         Elsereturn 3;

}

 

 

 

if总结:

         cmpR0,#0xA   这是一个典型的IF

         BGLloc_8039

If-else总结:

         cmpR0,#0xA

         BLEs1

B出口

S1:

…….

 

If-else-if 总结:

cmp R0,#0xA

BGT s1

B出口

S1:

cmp R0,#0xA

BLE s2

……

B出口

S2:

 

10、sum求和

        

 

 

11、ARM汇编对应的for流程语句写法

         Intsum (int p1, int p2){

                  Intp1 = 0;

                  Intp2 =0;

         For(intvar_count=p1;var_count<=p2;var_count++)

                  {

                          Var_8= var_8 + var_count

                          Returnvar_8;

}

}

 

12、while循环


13、ARM汇编对应的while流程语句写法

Int while1(int p1){

         Intvar_8 = 0;

         While(p1--)

                  {

                  Var_8++;

}

         Return var_8;

}

 

14、dowhile循环


15、ARM汇编对应的do while流程语句写法

Int dowhile1(int p1){

         Intp2 = 0;

         Do{

                  P2++;

}while(p1--);

Return p2;

}

 

 

16、外for循环

 

17、ARM汇编对应的外for流程语句写法

For(int i=0;i<=99;i++)

{

         Printf(“%d”,i);

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随行之旅

python国产化自动化

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值