这里要补充两个smali指令 一个是if-eqz 另一个是if-nez 这两条指令是相对的
(1)if-eqz vA, vB, :cond_" 如果vA等于vB则跳转到:cond_
(2)if-nez vA, vB, :cond_" 如果vA不等于vB则跳转到:cond_

破解游戏思路

1.将支付成功的代码复制到支付失败和支付取消的代码处替换

2.在Success()处 switch选择替换 也可以替换函数入口

删除可能会产生费用的危险权限:
在AndroidManifest.xml里搜索(或者可以直接搜索下面的这个)
android.permission.SEND_SMS
删掉

应该是避免破解不成功不小心扣费的问题,在虚拟机环境中可以忽略此项

动态调试smali

原帖:https://www.52pojie.cn/thread-658865-1-1.html

1.AndroidKiller反编译后将smali代码打包文件夹导出 改名src 放入一个新建文件夹中

2.打开Android Device Monitor

3.找到要调试APK的包名和入口的Activity

image.png

这里要注意一下 在application标签里面要有 android:debuggable="true" 这句代码,没有是不能调试apk的 现在调试的这个例子默认是有这句代码的 有的apk中没有这句代码要自行添加上

image.png

4.把自己要调试的APK安装到手机中 并用数据线连接手机 打开USB调试模式

5.adb shell am start -D -n hfdcxy.com.myapplication/(hfdcxy.com.myapplication)(此处可以省略).MainActivity 对apk进行动态调试 这条命令运行后手机屏幕将会进入到调试界面(如果手机屏幕没有进入到调试界面说明USB没有连接好手机 或者USB调试模式 没有打开 或者其他原因)

adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity

image.png

6.记住Android Device Monitor中上一步找到的apk名字 得到online id和端口

记住下图圈起来的两个值 然后把Android Device Monitor关掉(这里一定要关掉,因为它会占用8700端口 导致后面转发端口失败)

image.png

7.打开命令行窗口 输入命令 adb forward tcp:8700 jdwp:19509 转发8700 端口 (这里 jdwp是自己Android Device Monitor中要调试app的Online值 )

8.导入第一步获得的smali文件夹,右键src Make Directory As --->Source Root

9.配置远程调试的选项,选择Run-->Edit Configurations 并增加一个Remote调试的调试选项,端口选择:8700

10.选择File-->Project Structure 配置JDK

11.下断点开始调试Run-->Debug'smali'

image.png

F8执行下一步 F9运行程序

image.png

可以调试smali代码了

注:
1.每次打开相同的app时online id 都会改变 要重新进行7 重新转发
2.打开Android Device Monitor时候在当前界面找不到再次打开的地方,要重新打开Android Studio
最后修改:2021 年 09 月 09 日
如果觉得我的文章对你有用,请随意赞赏