小白反编译某手游(一):工具&环境配置
背景:反编译一款APP手游,由cocos2dx开发,解密出lua脚本及资源素材。**一、需要的工具和环境**
1、PYTHON 3.11.2
2、VSCODE
3、FRIDA 16.1.4
4、NODEJS 18.17.1
5、ADB
6、一台ROOT后的手机(不建议用模拟器,有坑)
7、IDA 7.7 PRO
8、XXTEA解密器
9、TexturePacker 6.0.1
10、luajit-decompiler-V2
**二、配置工具和环境**
**PYTHON****安装及配置**
1、本次反编译用到的PYTHON为3.11.2版本,下载地址:(https://www.python.org/downloads/release/python-3112/),一直下拉到底可以看到下载地址。
如果是64位系统点击下载我标识的安装包即可,下载下来是一个exe程序,直接一路下一步到安装完成即可。
2、默认安装完成后的路径会在C:\Users\你的电脑用户名\AppData\Local\Programs\Python\Python311
3、打开电脑的"编辑系统环境-高级-环境变量",双击Path进入编辑
4、新建两条环境变量:
C:\Users\你的电脑用户名\AppData\Local\Programs\Python\Python311
C:\Users\你的电脑用户名\AppData\Local\Programs\Python\Python311\Scripts
5、设置完成后打开CMD,输入:
```
>>python --version
```
Python 3.11.2 //该内容为上面的指令输入后会输出的,能正常输出即表示安装配置成功
**VSCODE**** 、 ****FRIDA**** 、 ****NODEJS****安装及配置**
1、VSCODE的安装就不详述了,这玩意傻瓜式安装即可。安装完成后点击左侧扩展,搜索python进行安装
2、在顶部选择"终端-新建终端",在终端中输入如下信息,安装FRIDA:
```
>>pip install frida=16.1.4
>>pip install frida-tools
```
3、安装完成后,打开CMD,输入:
```
>>frida --version
```
16.1.4 //该内容为上面的指令输入后会输出的,能正常输出即表示安装配置成功
4、因为FRIDA支持PYTHON和NODEJS脚本,但对JS的支持更好,后续HOOK也基本上会用JS来写,所以接着安装NODEJS。
下载NODEJS,地址:(https://nodejs.org/dist/v18.17.1/node-v18.17.1-x64.msi),下载完成后也是无脑点下一步安装即可。
5、安装完成后,配置系统环境变量,将NODEJS以下加入环境变量中(根据你自己安装位置的差别,替换下位置):
C:\Program Files\nodejs\
C:\Program Files\nodejs\node\_global
6、打开CMD,输入:
```
>>node -v
```
v18.17.1 //该内容为上面的指令输入后会输出的,能正常输出即表示安装配置成功
PS:到此处Frida的客户端是安装完成了,但是在手机上的服务端还没有安装,会在下面ROOT一台手机的板块说明。
**ADB****安装及配置**
1、因为我没有纯装ADB过,所以我是先安装了一个雷电模拟器。然后在雷电模拟器安装的根目录下就有ADB,我就直接用了。
2、因此,只需要下载安装一个雷电模拟器,然后通过环境变量,增加一下雷电安装的根目录位置即可。
3、我的雷电模拟器是安装在D:\LeiDian\LDPlayer4,因此在环境变量中直接新增这个位置就好了。
4、打开CMD,输入:adb,回车后能获得一大串内容即表示配置成功了。
**ROOT 一台手机**
说明:非常不建议大家用FRIDA去跟模拟器配合,因为模拟器的架构是x86的,手机的架构是arm64的,因此,如果你要处理的APP没有为x86框架单独做支持,那么后面IDA的分析和HOOK都完全找不到北。(判断APP是否支持x86架构的方法是:将你的APP后缀从.apk改成.zip,然后解压后,看lib文件夹中有没有x86的文件夹,没有的话表示不单独支持x86架构,一般我们分析arm64的就好),我这里ROOT的是一款小米手机,安卓系统版本是 Android 11。
1、解锁小米BL操作教程:(https://www.bilibili.com/video/BV1ba411h7xC/)
2、刷入第三方Recovery TWRP:(https://www.bilibili.com/video/BV1ku411D7pL/?spm_id_from=333.999.0.0&vd_source=44ef4484e82d6ef390c1b213a307defa)
3、刷入Magisk:(https://www.bilibili.com/video/BV1zP4y1c7J6/)
4、用USB线将手机和电脑连接起来,在电脑上打开CMD,输入:
```
>>adb shell
>>su
```
5、此时打开你手机上的Magisk软件,下边栏里面点一下"超级用户"功能,进去可以看到你刚才连入手机的电脑信息,把他的开关打开给他授权。
6、下载你安装的对应版本的FRIDA的服务端推送到手机上,因为我之前安装的FRIDA客户端版本是16.1.4,所以从官网下载他对应的服务端文件(https://github.com/frida/frida/releases/download/16.1.4/frida-server-16.1.4-android-arm64.xz),将下载后的文件解压后得到文件:frida-server-16.1.4-android-arm64(假设存在位置在D:\)
7、打开电脑的CMD,输入:
```
>>adb push D:\frida-server-16.1.4-android-arm64 /data/local/tmp
>>adb shell
>>su
>>cd /data/local/tmp
>>chmod 777 frida-server-16.1.4-android-arm64
>>ls -l //这条指令能够帮助你查看下chmod是否生效将文件的可读权限成功改成了-rwxrwxrwx
```
**其他配置项**
至此,各方面环境基本上已经OK了。如果想在FRIDA的HOOK过程中需要脚本提示。可以跟着我这样操作:
1、未来打算HOOK的文件都放到D:\HOOK文件夹中。打开CMD,输入:
```
>>cd D:\HOOK
>>npm install --save @types/frida-gum
```
2、在D盘建立一个HOOK文件夹,创建一个hook.js的文件。用VSCODE打开它,创建两个终端:
2.1、在第一个终端中输入(作用为启动FRIDA服务端和转发端口):
```
>>adb forward tcp:27042 tcp:27042
>>adb forward tcp:27043 tcp:27043
>>adb shell
>>su
>>cd /data/local/tmp
>>./frida-server-16.1.4-android-arm64 //输入完该条指令后,没有返回任何提示表示OK,并且不要关掉该终端
```
2.2、在第二个终端中输入(测试FRIDA服务端是否正常启动,并教你如何运行HOOK脚本):
```
>>cd D:\HOOK
>>frida-ps -U //输入该指令后会列出当前手机所有运行的程序,能正常列出表示手机的FRIDA服务端正常运行
>>frida -U -f 包名 -l hook.js //以后脚本需要调整,在VSCODE打开的hook.js里面调整就好了,hook的反馈是及时生效的
``` hkok456 发表于 2023-9-27 12:30
python安装教程都有了
是啊,我自己也还比较初级,每次看各位大佬的一些帖子或资料,但环境匹配不上总会出现各种各样的问题让人奔溃。所以我怎么操作的,什么环境全部一一说明,确保到按照这个操作大家都一定可以ok stacia 发表于 2023-9-28 16:56
请问如果我是用安卓虚拟机,那么用ida和Frida是不是就没问题了?
如果也不行,那是不是我host不用x64而是 ...
在PC上运行的安卓虚拟机,据我了解都是X86架构的,这个我没找到可以改的方式。
如果X86架构,这个APP又没有单独做这个架构的适配,就会导致在虚拟机中运行的那些SO等文件名全部会变掉。这样用Frida去HOOK原来的so文件是HOOK不到的。这样会大大增加分析麻烦。 完整地介绍了工具和环境,这个很重要。谢谢楼主。 楼主非常耐心的讲解了配置步骤,对小白很友好,赞 谢谢分享小白反编译某手游(一):工具&环境配置 强强强,学习一下
有其他工具的下载地址吗? 对小白很友好,赞 谢谢博主{:1_893:} python安装教程都有了{:301_977:} feiyu361 发表于 2023-9-27 09:42
有其他工具的下载地址吗?
晚点我传个网盘地址发给大家