-
-
简单的apk判定跳转修改
-
发表于:
2018-3-12 19:34
2881
-
说在前面,这些是一些简单的判定修改总结,针对对象为apk的各类型本地验证,以简单例子说明。
基本思路:
(1)smali目录下存放了程序所有的反汇编代码。
(2)res目录则是程序中所有的资源文件。
(3)往往错误提示信息通常是关键代码的地方。
(4)在逆向的时候,先试用一下app对app有一个了解。
(5)在引用字符串的时候会在res/values目录下的string.xml文件中查找
第一种方法:条件修改
修改判定条件,例如将"否"修改为"是",
我们的目标就是向下执行,所以修改判定条件。
我们把if-ne v2,v3 :cond_4修改为if-eq v2,v3 :cond_4,这样就成功的修改了判定。
第二种方法:跳过判定
我们在判定代码前执行跳转代码,或者将判定nop掉
这样在执行过程中就不会执行判定语句,也就成功的跳过了判定。
第三种:跳转位置修改
这一种方法目的是修改判定后执行的方法体。

我们可以看到这个判定为假后执行cond_4,我们把cond_4修改为cond_X(不能与已存在的冲突)或其他,然后将cond_X放在目标代码前面,这样在判定为假后依然会执行目标代码。

最后一种就是修改方法体内容
比如说将目标方法体1的内容替换掉方法体2的内容,这样在执行过程中不论是方法1或者方法2,都将执行方法体1,常用于简单的单机游戏支付。
ps:本文测试的demo取自某博客,
[培训]科锐逆向工程师培训第53期2025年7月8日开班!