App解固脱壳方式 您所在的位置:网站首页 apk文件加密工具有哪些 App解固脱壳方式

App解固脱壳方式

2024-01-11 04:15| 来源: 网络整理| 查看: 265

案例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文件

image.png

新APK运行

先加载壳APP--->壳APP读Dex文件末尾的源APKD大小---->在内存中壳APP解密出源APP--->运行源APP 壳APK有自己的Application对象

源APK有自己的Application对象

壳APK启动时 在AndroidMenifest.xml里找源APK的Application 执行它的oncreate方法 启动源APK

Dex文件格式:  任何类型的文件都有文件格式,对应的软件按照文件格式来就能解析出类型,.xml .json .jpeg

image.png

三、如何查看有没有壳

用apktool对apk进行反编译,或者修改apk的后缀为zip,进行解压。查看解压后的文件下的lib目录,

image.png

可以看到这两个是用了腾讯的乐加固,或者我们不确定的话可以用jadx打开apk,也是可以发现的

image.png

都是壳的代码。不过即使怎么加壳,它都会去调源apk的Application,打开AndroidManifest.xml文件,

image.png

可以看到,上面一个是壳的,下面是源apk的Application。

逆向/脱壳方法

反编译/Hook技术和动态调试

Hook:先取得要Hook函数/方法的控制权,不用破坏程序

动态调试:反调试,汇编,计算内存地址

四、Hook技术

改变程序执行流程的一种技术 在函数被调用前,通过HOOK技术,先得到该函数的控制权,实现该函数的逻辑改写

image.png

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

image.png

image.png

接下来就可以运行app,然后我们去/data/user/0/com.iCitySuzhou.suzhou001该目录下查看,多出来两个dex文件

image.png

把这两个文件拉到电脑用kadx打开,第一个是壳

image.png

打开第二个很明显看到这才是源apk的源码,而且可以发现它对源码进行混淆了

image.png

所以到这里我们的脱壳就成功了。

后面会用frida进行脱壳。。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有