游戏安全实验室 首页 游戏漏洞 查看内容

【游戏漏洞】简单破解安卓手游基础

发布于:2018-6-29 14:34   |    171638次阅读 作者: 外部投稿    |   原作者: l1nk


常用工具下载链接:

http://www.androiddevtools.cn/

本文主要用到的工具:MT管理器

思路:

拿到一个游戏一定要先进行试玩  看看有没有什么关键的字符串 并观察布局特征

当破解没有思路的时候   可以adb连接   打印log进行分析

DDMS也很好用  适合于快速定位

APK文件结构分析

实际上可以算作一个zip压缩包   解压后会得到

AndroidMainifest.xml    配置清单(二进制格式)

 

assets    资源目录,一般存放图片什么的

 

lib    动态库目录 一般存放so文件

 

res    资源库目录 一般存放xml布局文件和图标

 

classes.dex     安卓系统上的可执行文件,也是我们逆向的主要的文件,源码都被编译在里面,如有多个是因为每个dex里最多存放65535个方法,而项目的方法数超出了这个数量,所以被分成多个保存

 

META-INF    签名文件目录

 

resources.arsc    资源索引文件,包含语言包,汉化的话一般是反编译这个文件

 

首先要知道一些关键词

内购关键词:

和游戏搜索方法名

onResult,onchinabilling,resulton,Paycenter,Callback

联通游戏搜索方法名

OnPayResult,PyaResulton,Activity,result,callback

电信爱游戏搜索方法名

paySuccess成功,payCancel取消,payFailed失败

移动mm搜索方法名

onBillingFinish,Billing,CallBack

支付宝和银行卡方法名

handle,message

支付宝搜索字符:9000

360支付

onfinishedon,Activityresult

发送短信上限:android.permission.SEND_SMS

发送短信锁定支付式关建字符串

 

 

运营商网络特征码备注

中国移动46000、46002、46007、46020return 0 getMobileType

中国联通46001、46006、46010return 2 getOperatorType

中国电信46003、46005、46011return 1 getSimType

 

举例分析:

if-eqz v6 :label_104 意思是判断v6是否等于0 如果等于0就跳转到 label_104

所以当label_104对应为失败代码时 直接删除该跳转语句也就是if-eqz v6 :label_104

if-nez v3 :label_86 意思是如果v3不等于0就跳转到label_86 而他的代码是

label_86:

return_void

所以是正确代码 必须让他直接跳转到这里来 所以将if-nez v3 :label_86改为goto :label_86

如果有取消支付选项 可以将该选项加入最后的*switch中

move v1 v6意思是将v1的值传给v6

const/4 v1 1意思是将v1设置为1

 

4399游戏破解攻略http://a.4399.cn/(4399手机游戏官网)

1. 搜索两次单机(方法名)

2. 搜索两次侵权(方法名  有的游戏不需要)

3. 签名

(1) 街机大富翁

直接修改初始金币和经验

字符常量池直接过滤gold 找到player_gold 直接搜索 进入get_gold

Const/16 v2 0x64  保存后再看发现变成了负数(因为超过了最大范围)

所以直接改进制 去掉/16

将升级所需的经验值该小 进入assets资源文件夹 进入data 找到相应文件 以文本编辑器打开

 

 

其他游戏关键词:

1. 如果游戏是咪咕游戏http://g.10086.cn/(官网),就用onresult

(1)格斗三国志

如果看着不太对 没有正确错误什么的,就找路径

三网锁定 if都删了

(2)猪猪侠之传奇射击

进入之后发现啥都没有 可以搜索一下字符串 看看正常不 有没有什么.so文件之类的  看看classes.dex文件大不大 700多kb就算大 一般可能会加密而不会是加壳

直接搜payrSuccess   想弹窗题诗就直接吧paySuccess里边的代码全部粘贴到payFaile里   把方法路径改一下

(3)火柴人联盟

盗版验证弹窗  按钮事件    1就代表成功 0失败 2取消

常量搜索setPositiveButton  按钮事件触发check 看代码最后调用的是 popKuangInfo

直接搜索他 让其他调用他的直接return_void

去除短信权限  进入字符常量池 过滤sms  android.permission.SEND_SMS删去

(4)3D狂野飞车3-极速前进官方

发现有作弊应用某修改器 弹窗提示让我们卸载

 

2. 如果游戏是爱游戏http://www.play.cn/(官网),就用paysuccess

 

3. 如果游戏是mm游戏http://mm.10086.cn/(官网),就有 onbillingfinish

 

4. 百度手机助手 天天格斗

搜索onresult 发现没有支付相关的代码

接着搜索paysucess 后边带有listen的是说明

将成功的代码分别粘贴到取消和失败哪里  接着去掉短信权限

签名后安装购买道具还是会显示支付失败!!!

接着搜索paysucess代码里最后调用的那个方法名

5. 脑电波

支付宝内购  搜索9000 删除某跳转

微信内购   搜索onresp

 

 

新手必读背部分语法的意思(必背)

if-**”条件判定

 

goto :label_**”直接跳转到:label_**

 

"label:**"用于跳转的,就是执行它下面的一串代码

 

"if-eq vA, vB, :label_**" 如果vA等于vB则跳转到:label_**

 

"if-ne vA, vB, :label_**" 如果vA不等于vB则跳转到:label_**

 

"if-lt vA, vB, :label_**" 如果vA小于vB则跳转到:label_**

 

"if-ge vA, vB, :label_**" 如果vA大于等于vB则跳转到:label_**

 

"if-gt vA, vB, :label_**" 如果vA大于vB则跳转到:label_**

 

"if-le vA, vB, :label_**" 如果vA小于等于vB则跳转到:label_**

 

"if-eqz vA, :label_**" 如果vA等于0则跳转到:label_**

 

"if-nez vA, :label_**" 如果vA不等于0则跳转到:label_**

 

"if-ltz vA, :label_**" 如果vA小于0则跳转到:label_**

 

"if-gez vA, :label_**" 如果vA大于等于0则跳转到:label_**

 

"if-gtz vA, :label_**" 如果vA大于0则跳转到:label_**

 

"if-lez vA, :label_**" 如果vA小于等于0则转到:label_**

 

A,B指数字,**也是指数字

 

代码就这么多,要想学好破解一定要熟记每一个代码并知道其中的含义

 

 

一些常用的代码

弹窗的关键词: oncreate


成功代码:invoke-interface {v3,v2} Lcn/egame/terminal/paysdk/EgamePayListener;->paySuccess(Ljava/util/Map;)V
return-void

支付上限用到的代码:carrier_pay_out_limit              

这个是在文件里面搜索的代码:no_propriate_pay_method

破解盗版验证用到的代码:dialog_initconfig_msg          




来源:l1nk-邮件投稿

GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。

*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)

分享到:
踩0 赞0

收藏

上一篇:【游戏漏洞】内存遍历周围对象

下一篇:【游戏漏洞】代码实现HOOK明文发包

最新评论
B Color Image Link Quote Code Smilies

发表评论

top 问题反馈

返回顶部