1、首先逆向一款app软件,先查看是否加固(MT管理器或者ApkScan查壳等工具查看)
2、若被加固(360加固等),可以使反射大师apk进行脱壳。(此处暂时不详细讲)
3、分析代码,可使用jadx工具查看app源码。
4、修改代码,此处代码为smali代码,可使用AndroidKiller工具修改。
这里讲关于修改app会员的方法【注:不会与服务端做校验前提下】
我用自己写的app做为例子,假设这里就是当前会员时间
然后打开SDK文件夹下tools文件夹里面monitor.bat,如图所示
可以看到时间显示id,这时候使用jadx查看源码分析,将APK拖入jadx中,如图所示,
此时我们搜索刚才查看到的id名字,可以看到被编译后的代码,我们选中一个逐步分析。
可见这里有关于时间代码,因为这里是假设,此处flag就是用于模拟服务端是否有会员,因为这里写flag为false,则显示当前会员时间。
此时用AndroidKiller工具对apk进行反编译,进行分析smali代码
iget-boolean v1, p0, Lcom/hba/Testapplication/MainActivity;->flag:Z 这个以意思就是flag的值给p0,然后p0给v1
if-eqz v1, :cond_0 判断v1,如果v1为true则继续执行下面的代码,否则跳转到 cond_0 处
因为这里flag为假,则跳转到这里
:cond_0
invoke-virtual {v0, v2}, Landroid/widget/TextView;->setVisibility(I)V
修改会员思路
第一步,让flag为true,只需要修改v1,在if-eqz上面一行写上 const/4 v1,0x1 即可。
第二步,修改时间,因为不与后端服务器做校验,只需要修改代码生成的时间
这个我写了个date的工具类,如图所示
然后将java代码转变成smali代码,这里用到的工具为java2smali 工具
然后将这段代码粘贴到该类里面
修改的代码改成如下,即可
成功!