登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
App解固脱壳方式
案例App:引力播一、常见的壳通常是看lib文件夹下so库特征,以下是市面上常见的不同厂商对APP的加固特征: 爱加密:libexec.so,libexecmain.so,ijiami.dat 梆梆: libsecexe.so,libsecmain.so , libDexHelper.so libSecShell.so 360:libprotectClass.so,libjiagu.so,libjiagu_art.so,libjiagu_x86.so 百度:libbaiduprotect.so 腾讯:libshellx-2.10.6.0.so,libBugly.so,libtup.so, libexec.so,libshell.so,stub_tengxun 网易易盾:libnesec.so 二、加固原理壳dex 读取源dex文件,加密后,写进一个新的dex文件
新APK运行 先加载壳APP--->壳APP读Dex文件末尾的源APKD大小---->在内存中壳APP解密出源APP--->运行源APP 壳APK有自己的Application对象 源APK有自己的Application对象 壳APK启动时 在AndroidMenifest.xml里找源APK的Application 执行它的oncreate方法 启动源APK Dex文件格式: 任何类型的文件都有文件格式,对应的软件按照文件格式来就能解析出类型,.xml .json .jpeg
三、如何查看有没有壳用apktool对apk进行反编译,或者修改apk的后缀为zip,进行解压。查看解压后的文件下的lib目录,
可以看到这两个是用了腾讯的乐加固,或者我们不确定的话可以用jadx打开apk,也是可以发现的
都是壳的代码。不过即使怎么加壳,它都会去调源apk的Application,打开AndroidManifest.xml文件,
可以看到,上面一个是壳的,下面是源apk的Application。 逆向/脱壳方法 反编译/Hook技术和动态调试 Hook:先取得要Hook函数/方法的控制权,不用破坏程序 动态调试:反调试,汇编,计算内存地址 四、Hook技术改变程序执行流程的一种技术 在函数被调用前,通过HOOK技术,先得到该函数的控制权,实现该函数的逻辑改写
Hook可以在在Java层、Native层(.so库) 在代码层 寻找要Hook的地方 进行Hook 改下代码逻辑
五、脱壳工具脱壳原理: 在壳APK解密源APK后,源APK被加载前,拦截这个过程中的系统函数 把内存中Dex dump出来。 手动脱壳: 通过动态调试,跟踪计算Dex源文件的内存偏移地址,从内存中Dump出Dex文件 ,难度大,寄存器,汇编,反调试,反读写 IDA。 工具脱壳: HOOK技术/内存特征寻找 简单易操作 基于xposed 脱壳工具: Fdex2:Hook ClassLoader loadClass方法 通用脱壳 dumpDex:https://github.com/WrBug/dumpDex 逆向框架: 筑好底层 提供开发接口 xposed(Java 编译,只能在java层) frida(Python Javascript 代码注入,可以hook住java层、Native层) 六、开始脱壳(用FDex2脱壳)首先我们打开xposed,把FDex2打开,并选择我们要的app
接下来就可以运行app,然后我们去/data/user/0/com.iCitySuzhou.suzhou001该目录下查看,多出来两个dex文件
把这两个文件拉到电脑用kadx打开,第一个是壳
打开第二个很明显看到这才是源apk的源码,而且可以发现它对源码进行混淆了
所以到这里我们的脱壳就成功了。 后面会用frida进行脱壳。。。
from:https://blog.csdn.net/qq409732112/article/details/109382336
|