请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4123|回复: 0

教你学习破解安卓手游apk文件技术

[复制链接]

497

主题

30

回帖

7182

积分

管理员

积分
7182
发表于 2019-9-14 17:39:12 | 显示全部楼层 |阅读模式
常用工具下载链接:
http://www.androiddevtools.cn/
本文主要用到的工具:MT管理器

破解思路:
拿到一个游戏一定要先进行试玩  看看有没有什么关键的字符串 并观察布局特征
当破解没有思路的时候   可以adb连接   打印log进行分析
DDMS也很好用  适合于快速定位

要破解APK,首选我们要搞清楚APK文件包的结构,这也是教程里黑色老师经常说到的,要分析一个游戏,得先会玩那个游戏,才能写好辅助
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         
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|爱淘机论坛 ( 鲁ICP备2022040313号-4 )

GMT+8, 2024-4-16 19:01 , Processed in 0.074017 second(s), 23 queries .

Powered by 爱淘机论坛

© 2001-2023

快速回复 返回顶部 返回列表