Android常用逆向工具+单机游戏破解

android开发环境搭建

我理解的学习路线是首先要掌握和了解常见的工具、搭建环境。然后就是缓慢的积累特征,通过长期的练习使自己进步,通过android逆向课程的学习。常用的工具如下:

android SDK工具包

(1)adb.exe:android debug bridge 安卓调试桥连接手机、模拟器。

D:\AndroidTools\Android_SDK\platform-tools

(2)monitor.exe:安卓设备监视器

D:\AndroidTools\Android_SDK\tools\monitor.bat

adb.exe 用于调试,monitor.exe用于监视

android adb shell命令约等价于linux shell命令

android集成开发的开发环境

(1)Android Studio

(2)IntelliJ IDEA

Android模拟器

(1)原生的模拟器

(2)BlueStacks[蓝叠]

(3)夜神

(4)海马玩

Android逆向工具

(0)集成类工具:jeb、apkkiller

(1)反编译工具:

baksmali.jar:将dex文件反汇编成smali代码

smali.jar:将smali代码汇编生成dex文件(android的可执行文件)

apktool.jar:基于smali、basksmali工具开发的,可以反编译apk文件成smali,也可以将smali文件回编译成apk文件,

(2)清单文件解密工具:

AXMLPrinter2.jar:清单解密工具,反编译apk中的xml文件

APKParse.jar:套用了Apktool中解析xml文件的源码。

APK15PBParse.jar:APKParse.jar修改而成,修复了原有工具的bug。

(3)APK签名工具:

signapk.jar:使用apktool生成的apk文件,是不能直接安装到模拟器或是手机中的,因为没有签名就会报错。

(4)dex转jar工具

dex2jar:将dex文件转化为java jar包,因为转成jar包之后,方便使用JD-GUI工具反编译成java源码。

(5)java源码反编译工具

JD-GUI:使用JD-GUI打开jar包,可以看到反编译的源码。

游戏破解思路

(1)找寻支付成功的信息,获取支付相关的函数。
(2)将支付成功的smali指令注入到支付失败的函数中。

操作步骤

(1)打开monitor,点击游戏中的购买按钮,抓取到支付的字符串。

(2)在apkkiller转换编码为unicode编码

(3)在apkkiller搜索字符串,然后使用自带的JD-GUI工具查看源码。

(4)在源码中定位到支付相关的函数。payCancel、payFailed、paySuccess

(5)到apkkiller中查找与支付相关函数相关的smali文件。然后smali指令中传参的常量值记录下来。

(6)在函数窗口处查找购买失败的函数(payFailed)、购买成功的函数(paySuccess)的函数传参值,将两者对比。

(7)对比出来传参值的区别后将购买成功(paySuccess)的函数传参值和购买失败(payFailed)的函数传参值相互替换。

(8)将修改后的值Ctrl+s保存后再编译一遍,得到编译后的APK放到模拟器中运行就可以达到破解的效果了。

(9)运行效果

posted @ 2017-04-10 01:09  17bdw  阅读(...)  评论(...编辑  收藏