改变程序执行流程

往期推荐

IDA调试修改内存数据

IDA调试界面介绍及快捷键

IDA调试环境搭建

IDA静态分析

一:分析程序执行流程

1.将IDA切换为视图模式,如下图所示。

改变程序执行流程

2.在视图模式下,看到这里存在BLX 和CMP两个函数,如下图所示。

改变程序执行流程

3.当BLX函数执行完毕后,会把返回值放到R0寄存器,然后执行cmp指令,就会将R0的值和0进行比较,不同的结果执行不同的分支,如下图所示。

改变程序执行流程

4.此处如何跳转,完全取决于跳转指令BNE(不等于则跳转),如下图所示。

改变程序执行流程

5.按空格切换回来,如下图所示。

改变程序执行流程

如果R0和0不相等,就跳转到后面loc_1084这里,如果相等,就执行下面的LDR指令。

二:通过修改寄存器的值来改变程序执行流程

手动修改R0的值,来改变程序的执行流程。把原本不为零的R0寄存器的值改为零,使“BNE loc_1084”指令中的条件不满足,无法跳转至对应的地址位置,从而改为执行下面LDR指令,这样就完成了改变程序执行流程的操作。

小结

通过今天的分享,我们了解了如何简单的对寄存器的值进行修改,从而改变程序的执行流程。

如果你也对安卓逆向感兴趣。可以加入下方的群,大家一起讨论问题,或者扫描下方二维码关注公众号,关注回复 “安卓逆向” 获取免费教程

安卓逆向交流学习:1139349849
vx:Yjxiaox

改变程序执行流程