[置顶] 第7章so逆向流程控制分析

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

 

环境配置

1、 Ubuntu15.10系统IP:192.168.153.130

2、 工具 make 和 IDA

 [置顶] 第7章so逆向流程控制分析_第1张图片

 

1、 交叉编译使用make命令

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

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

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

[置顶] 第7章so逆向流程控制分析_第2张图片

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

 

4、 注解if0流程语句


[置顶] 第7章so逆向流程控制分析_第3张图片

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

Int if0(int p1){

          If(p1)

                   Return 1;

          Return 0;

}

6、 注解if1流程语句

[置顶] 第7章so逆向流程控制分析_第4张图片

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

Int if1(int p1){

if(p1<=9)

Return 5;

         Elseif(p1>10)

                  Return6;

         Elseif(p1==10)

                  Return7;

         Returnp1;

}

8、 注解if2流程语句

[置顶] 第7章so逆向流程控制分析_第5张图片

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求和

        

 [置顶] 第7章so逆向流程控制分析_第6张图片

 

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循环

[置顶] 第7章so逆向流程控制分析_第7张图片

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

Int while1(int p1){

         Intvar_8 = 0;

         While(p1--)

                  {

                  Var_8++;

}

         Return var_8;

}

 

14、dowhile循环

[置顶] 第7章so逆向流程控制分析_第8张图片

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

Int dowhile1(int p1){

         Intp2 = 0;

         Do{

                  P2++;

}while(p1--);

Return p2;

}

 

 

16、外for循环

[置顶] 第7章so逆向流程控制分析_第9张图片

 

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

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

{

         Printf(“%d”,i);

}

你可能感兴趣的:([置顶] 第7章so逆向流程控制分析)