—-Creaked by B.S. 6/14/2017 2:10:58 PM
无聊练手,当作学习Android优秀源码的笔记
仅供学习研究,请勿用作商业用途,如若喜欢请支持正版!
原程序:(貌似android 5.x 以上版本运行不起来)
游道易官网: http://www.yodo1.cn/archives/omg-td.html
B.S.内购破解版:
也可以去各大安卓市场搜索下载最新版本:(推荐支付接口比较熟悉的移动,咪咕游戏,爱游戏)
中国移动应用商城: http://mm.10086.cn/android
腾讯应用宝: http://android.myapp.com/
360手机助手: http://zhushou.360.cn/
有图有真相,动画演示:
1. 找到支付相关的sdk类的关键破解点在”onResult”Method中
public void onResult(int arg0, String arg1, Object arg2)
1 | .method public onResult(ILjava/lang/String;Ljava/lang/Object;)V |
2. android killer出马java反编译后到路径
package com.yodo1.sdk.game.smspay;
移动咪咕和支付接口,相关源码,直接上图.当然还有电信,联通的
关键在这个switch里,使他总是走case 1:支付成功.有时候需要向上层调用回溯才能定位到他支付校验的代码,让他支付校验的代码总是返回真即可.可以在最后的smali汇编代码里修该为这个样子.
秒杀所有smspay支付
.class Lcom/yodo1/sdk/game/smspay/YgSmsPayAdapterCMCC$1;
.super Ljava/lang/Object;
.source “YgSmsPayAdapterCMCC.java”
1 | .line 46 |
1 | public void onResult(int arg0, String arg1, Object arg2) { |
3. 破解修改的另一处更简单的地方:
也可以试试修改这里
通过logcat定位到的字符串所在的类一个内部类或者嵌套类里
successMessage or failedMessage is null
android killer 找到下面这个类的smali文件
.class Lcom/yodo1/sdk/game/Yodo14GameSmsPay$2;
.super Ljava/lang/Object;
.source “Yodo14GameSmsPay.java”
删掉原来的.method public onCanceled()V方法实现,用下面的.method public onSuccess()V里的代码来替换.
1 | .method public onCanceled()V |
改为:
1 | .method public onCanceled()V |
这几个函数接口原来的源码为:
1 | public void onCanceled() |
4. 后记(一点总结和补充):
先破解电信支付(不弹窗支付窗口的,不弹消息的购买成功的修改方法有很多种),然后把联通和移动的接口强制改为电信接口.
破解电信支付:
.class Lcom/yodo1/sdk/game/smspay/YgSmsPayAdapterTelsub$1;
.super Ljava/lang/Object;
.source “YgSmsPayAdapterTelsub.java”
用onSuccess函数,替换掉onCanceled,onFailed函数.修改smali汇编代码,变为下面这个样子:
1 | .method public payCancel(Ljava/lang/String;)V |
统一接口,强制改为电信的支付接口:
.class public Lcom/talaya/share/utils/OperatorUtils;
.super Ljava/lang/Object;
.source “OperatorUtils.java”
修改getOperatorChannelId让其所有条件下的返回值全部返回为2;
1 | .method public static getOperatorChannelId(Landroid/content/Context;)I |
所以,以后遇到热门的支付的游戏,简单的破解步骤就是:
先搜索”46003”,修改代码让它getOperatorChannelId全部返回2,即:中国电信,的接口;
然后用onSuccess函数,替换掉onCanceled,onFailed函数.也就是说,只要将对应的方法在Smali代码中全部替换成”???Success”的代码即到达在支付界面,无论点击“返回”或者“关闭”都能到达破解成功的效果。为了以防万一,还要可以将AndroidManifest.xml文件中的发送短信权限“android.permission.SEND_SMS”删除。
可以尝试搜索的关键词:
1、”Succeed”、”Fail”、”Cancel”、”Success”、”Failure”相应的关键词有“paySucceed””payFailed”、”payCanceled”和
有“onSucceed””onFailed”、”onCanceled”等等2、”purchase”、”purchaseCode”、”pay”、”payCode”、”resultCode”、“onBillingFinish”等
运营商网络 | 特征码 | 备注 |
---|---|---|
中国移动 | 46000、46002、46007 | |
中国联通 | 46001、46006、46010 | |
中国电信 | 46003、46005、46011 | |
中国铁通 | 46020、 | 归属移动 |
顺便说一句,保存软件数据和缓存配置卸载app的方法,相当于adb uninstall [-k]
可以直接在手机/data/app/文件夹里删掉类似com.yodo1.olympus.QIHU36001-1.apk文件.格式: [package包名]-x.apk的文件,x为1-N的数字.