Featured image of post APP脱壳

APP脱壳

App脱壳

参考资料如下:

Android应用破解全解析:Frida-Dexdump脱壳工具实战指南,零基础也能玩转APK逆向!

https://mp.weixin.qq.com/s/-d1-JREI4mvKHXLq7cCA6g

脱壳与加固 | 一代壳(落地加载)的学习

https://mp.weixin.qq.com/s/6jVmeS5MtIn0srtPwAQxIg

1.认识常见壳

脱壳的目的就是帮我们撕开这层包装,暴露出原始的代码(例如dex文件),方便我们反编译、分析或学习。

1.1.使用工具进行查壳

1.2.解压APP查看lib目录下文件判断是什么壳

1.3.一些常见脱壳工具

2.frida-dexdump

1
2
3
frida-dexdump -UF                //先启动APP

frida-dexdump -U -f com.iCitySuzhou.suzhou001  //根据包名来拖

将脱出来的壳使用JADX进行打开,一个细节,使用JADX进行打开时,一定不要勾选verify dex file checksum before load,否则你是查不到具体代码的

3.blackdex

https://github.com/CodingGay/BlackDex

使用方法很简单,下载编译好的文件后,打开APP,选择要脱壳的APP,直接运行即可

但是这个拖出来的壳不太行,APP的核心代码都没有

4.frida-unpack

https://github.com/dstmath/frida-unpack/tree/master

原理:利用frida hook libart.so中的OpenMemory方法,拿到内存中dex的地址,计算出dex文件的大小,从内存中将dex导出。 ps:查看OpenMemory的导出名称,可以将手机中的libart.so通过adb pull命令导出到电脑,然后利用: **nm libart.so |grep OpenMemory**命令来查看到出名。 其中android 10为**/apex/com.android.runtime/lib/libdexfile.so**方法为**OpenCommon**

1
2
3
frida -U -f 包名 -l 脚本名 --no-pause 

//脱壳完成后dex文件保存在data/data/包名/

我这边不知道为什么运行环境有问题

1
2
3
或者使用该命令

python frida_unpack.py com.paopaotalk.im

但是到实际目录下去看也未发现存在dex文件

其它一些frida系列脱壳脚本:https://github.com/GuoQiang1993/Frida-Apk-Unpack

https://github.com/LLeavesG/FART-Fix

5.反射大师脱壳

https://mp.weixin.qq.com/s/6jVmeS5MtIn0srtPwAQxIg

对安卓版本有要求

img

6.使用apksheller加固

https://github.com/yongyecc/apksheller

1
python sheller.py -f Challenge0x1.apk
By Lsec
最后更新于 Sep 15, 2025 17:43 +0800
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计
¹鵵ҳ