B6B6B6 发表于 2015-5-1 13:09

安卓联通内购破解分析

本帖最后由 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的是因为支付时会弹烦人的支付确认提示窗,我改联通的就不会。顺便说下,我也算是个新人,算不上大牛,跟真正的安卓大牛比起来,我差太远了←_←。大家一起学习吧。







Shark恒 发表于 2015-5-1 13:20

赶快下载游戏,尝试一下{:5_116:}

l0v3cr4ck 发表于 2015-5-1 13:21

感谢分享,前排学习。

逍遥枷锁 发表于 2015-5-1 13:25

安卓逆向资料,很不错,谢谢。

浅念 发表于 2015-5-1 13:33

安卓逆向资料,很不错,谢谢。

Mrsin 发表于 2015-5-1 13:33

{:5_116:}= =楼主很厉害 佩服!

kangda666 发表于 2015-5-1 13:35

安卓方面的大牛

闪耀 发表于 2015-5-1 13:40

又有一个安卓大牛

B6B6B6 发表于 2015-5-1 16:36

Shark恒 发表于 2015-5-1 13:20
赶快下载游戏,尝试一下

谢谢Shark恒大大帮忙删除多余的图。(^_^)

Shark恒 发表于 2015-5-1 16:54

B6B6B6 发表于 2015-5-1 16:36
谢谢Shark恒大大帮忙删除多余的图。(^_^)

客气了~
页: [1] 2 3 4
查看完整版本: 安卓联通内购逆向分析