安卓联通内购破解分析
本帖最后由 B6B6B6 于 2015-5-2 22:40 编辑联通逆向分析,以史上最牛游戏2为例,适合像我这样的新人,使用到的软件MT文件管理器。本贴可能有错误的地方,希望大牛们能指出,以免我误人子弟,我也需要学习。
教程正式开始,首先点击apk,点查看,点那个AndroidMainfast.xml文件如图
,点菜单键选择过滤,输入sms如图
,然后把那个有androidpermission字眼的如图
,删除那句,删除后如图
,保存。然后选择更新到压缩文件,这样游戏就没有发送短信权限。
接着再次查看apk,如图点classes.dex文件
,点编辑代码,点搜索类,然后点选搜索方法名,搜索payResult如图
,这里发现搜索到4个类,一个个点进查看payResult方法,最后发现第二有可疑代码如图
,点进去点方法列表,点payResult方法发现有success和Fail关键字如图
,
仔细观察发switch_4:是跳转到成功,那就好办了,直接再最下面的代码中switch_后的数字改为4就OK了,修改前如图
改后代码如下
.sswitch_data
2 : switch_4
3 : switch_4
9 : switch_4
15 : switch_4
.end sswitch_data
保存,然后返回,(因为我的是移动卡,所以我要让软件获取sim运营商时强制返回为联通的),那好返回到搜索类那里,搜索46001并选择搜索字符串如图
,这时只搜到一个类,点击搜索方法,搜索字符串46001如图
,这时只有两个方法,一个一个来,点进去,在getSubscriberId()Ljava/lang/String;如图
代码下面的move-result-object v0代码的下面添加这一句const-string v0 "46001"
如图
另一个方法也一样在 getSubscriberId()Ljava/lang/String;代码下的
move-result-object v11代码下面添加const-string v11 "46001" 如图
这里的v0和v11是由那个move-result-object后的v*决定的,那个是v0就v0,是v11就v11,到此代码修改完毕,保存,一直返回直到提示是否更新到压缩文件中,点是。最后对apk重新签名,安装测试,搞定!大家可以用史上最牛游戏3试试,此方法适用于大部分联通内购,我不敢说全部,而且逆向后内购时,不会弹支付提示窗而直接成功!最后这里补充一下,有些游戏例如红雀(大家可以试下),用MT搜索payResult后能找到switch判断代码,但是没有success和Fail等字眼来判断哪句是成功的,这时可以直接猜(人品好就一猜就中),也可以结合其他内购(例如移动MM)方式来推测哪句是成功,我一般就是这样做的,不逆向移动MM的是因为支付时会弹烦人的支付确认提示窗,我改联通的就不会。顺便说下,我也算是个新人,算不上大牛,跟真正的安卓大牛比起来,我差太远了←_←。大家一起学习吧。
赶快下载游戏,尝试一下{:5_116:}
感谢分享,前排学习。
安卓逆向资料,很不错,谢谢。
安卓逆向资料,很不错,谢谢。
{:5_116:}= =楼主很厉害 佩服!
安卓方面的大牛
又有一个安卓大牛
Shark恒 发表于 2015-5-1 13:20
赶快下载游戏,尝试一下
谢谢Shark恒大大帮忙删除多余的图。(^_^)
B6B6B6 发表于 2015-5-1 16:36
谢谢Shark恒大大帮忙删除多余的图。(^_^)
客气了~