0%

app脱壳小记

缘起

三周前做浦发银行项目,对app进行抓包测试时发现数据都是加密的,正好uknown大哥才讲了APPhook,于是去尝试着去hook,然后在搭建过程东搜搜西问问的,无意间找到了一键脱壳360加固的方法,下面大致说一下

缘来

frida安装

照着大哥博客所说进行frida安装

物理主机

1
2
pip install frida -i https://pypi.douban.com/simple --trusted-host pypi.douban.com 
pip install frida-tools -i https://pypi.douban.com/simple --trusted-host pypi.douban.com

这样安装的是最新版,最好使用frida --version查看一下版本,好便于frida-server下载

虚拟机或者真机

以下的操作都是需要Androidroot权限

首先需要知道Android是多少位的

1
2
3
adb shell 
cat /proc/cpuinfo
看内容中是否有x86或64字眼判断

然后去https://github.com/frida/frida/releases下载与主机frida的版本

1
2
3
4
5
6
7
8
9
10
这里server要和pip安装的version一致
模拟器

* frida-server-12.8.11-android-x86
* frida-server-12.8.11-android-x86_64

真机

* frida-server-12.8.11-android-arm
* frida-server-12.8.11-android-arm64

照着上面的字样下载后,把文件放入Android系统的/data/local/tmp

1
2
3
4
5
adb push frida-server-12.8.11-android-x86 /data/local/tmp/ 
adb shell
cd /data/local/tmp
chmod 777 frida-server-12.8.11-android-x86
./frida-server-12.8.11-android-x86

只要执行了server没有报错就说明成功了

脱壳

  • 夜神模拟器启动对应加壳的app

  • 使用模拟器自带的adb执行adb shell dumpsys window | findstr mCurrentFocus命令,获取app的对应的包

  • 下载Frida-Apk-Unpack在主机上

  • 进入模拟器shell模式开启frida-server服务

  • 主机上执行frida -U -f com.xxx.xxx(放获取的包名) -l dexDump.js --no-pause。执行成功会反馈存在.dex以及路径

然后通过adb pull把dex导出来

adb pull 手机存储路径 电脑路径

然后使用jadx-gui反汇编dex就可以看到源码

结缘

目前测试用这种方法能脱壳部分360加固和梆梆加固(项目中只有这两种加固),需要在模拟器上能安装才行。后续客户拿了一个夜神模拟器安装不上的,在真机上测试.。因为在进行脱壳过程中会重启系统,导致不能以这种方式脱壳。个中原因我没怎么接触过二进制方面的知识点,所以也不是很清楚