安卓逆向010之实战破解内购(斗地主)

快速定位关键代码

1、 分析流程

	搜索特征字符串
	
	搜索关键api
	
	通过方法名来判断方法的功能

2、 快速定位关键代码

反编译APK程序
	
	Android Manifest.xml => 报名/系统版本/组件
	
程序的主activity(程序入口界面)
	
	每个Android程序有且仅有一个主activity
	
	分析程序的执行流程
	
需重点关注的application(APK)
	
	Application执行时间
	
授权验证

3、 定位关键代码的技巧
在这里插入图片描述

实例分析

~Jadx分析

Jadx可以在这下载:

https://github.com/skylot/jadx/releases
使用jadx打开,搜索“9000”,

在这里插入图片描述

打开对应的代码处,

在这里插入图片描述


22行,在比较a是不是等于9000,

23~29行,逻辑判断,等于2、等于7、等于30分别做对应的操作。

这里一个小问题是这里的“ 2、7、30 ”分别对应的什么,

安装软件,先看看界面,或许可以找到一些关键信息。

在这里插入图片描述

这里可以判断

23、25、27行的“  2、7、30 ”对应的是天数。
24、26、28行的“ 2、6、20 ” 对应的就是金额。

简单总结支付的逻辑就是,当我们先选择对应的“套餐”,调转支付宝支付,

支付宝将结果返回,支付成功返回9000,否则为8000。

假设支付成功,则获取你刚刚选择的是哪个“套餐”,发放相对应的记牌器天数。

在这里插入图片描述

~AndroidKiller分析

查找“9000”,跳转到对应的位置,

在这里插入图片描述


	49行,定义一个V1,值为9000
	
	51行,把V0与V1比较,
	
	53行,将结束保存到V1内
	
	55行,假设V1=0,跳转到“:cond_4” 

先说说常见的判断条件语句:

在这里插入图片描述

我们可以跟着到“:cond_4”处,看看代码是什么意思。

在这里插入图片描述


	198行,给V1赋值“8000”,这里就是支付失败的含义了。
	
	200行,把V0与V1进行比较,
	
	202行,将结果保存到V0中,
	
	204行,假设V0=0,跳转到“ :cond_1”,
	
	206行,直接跳转到“:goto_1”,
	
	跟踪到“ :cond_1”,发现下边就是结束本次流程,返回空。

在这里插入图片描述

总结这个“:cond_4”处,就是支付失败了的逻辑,

关键点分析


这里的思路就和明确了,即不让他跳转到“ 支付失败 ”的“:cond_4”,

而是让代码继续向下执行“ 支付成功 ”的代码,

	比如直接注释掉” If-eqz v1, :cond_4 ”

	或者将上述语句改为“ If-nez v1, :cond_4 ”,

这样付款成功就失去了效果,但是付款失败反而得到记牌器。
	
	当然除了上述,还有很多其他的方法,这里就抛砖引玉一下。

修改完毕,CTRL + S保存之后直接回编译即可完成破解。

附带常见方法名:


和游戏方法名onResult,onchinabilling,resulton,Paycenter,Callback

爱游戏方法名:paySuccess(成功)payFailed(失败)payCancel(成功)

沃游戏方法名:OnPayResult,PyaResulton,Activity,result,callback

4399游戏方法名:notifydelivergoods  

支付宝和银行卡方法名:handle,message

移动MM方法名:onBillingFinish,Billing,CallBack

360支付:onfinished   onActiv  ityresult

支付宝搜索字符串:9000

咪咕游戏搜索常量:onresult

发送短信权:android.permission.SEND_SMS

锁定支付模式关键字符串:CHINA_TELECOM

支付上限:carrier_pay_out_limit, no_propriate_pay_method

谷歌广告:Missing internet permission in AndroidManifest.xml

おすすめ

転載: blog.csdn.net/weixin_43970718/article/details/119516439