当前位置:   article > 正文

反编译apk_jadx反编译apk

jadx反编译apk

1:反编译没有加壳加固的apk(so文件的反编译后续在搞)

    UI 工具:jadx-gui  ;

    也可以用该工具中的jadx  dos中执行命令:jadx -d  QQ.apk  生成QQ目录即为反编译的代码

    Linux中命令:./jadx -d  QQ.apk

resources目录下是资源文件;

sources目录下是代码文件;

 

2:反编译加壳加固的apk:

  apk加壳

   所谓 Apk 加壳,就是给目标 Apk 加一层保护程序,把重要数据信息隐藏起来。加壳程序可以有效阻止对程序的反编译和逆向分析。Apk 壳本质的功能就是实现类加载器。系统先执行壳代码,然后将加了密的 dex 进行解密操作,再加载到系统内存中运行。

安卓 dex 加壳原理

加壳过程中主要有三个程序:

  • 需要加壳的源 Apk1(未加壳的原始应用)
  • 壳程序 APK2(用来解密并运行 apk1 程序)
  • 加密工具 (将源 APK1 进行加密,并和壳程序 APK2 的 dex 合并成新的 dex)

加壳过程:

  • 得到需要加密的 apk 和自己的脱壳程序 apk1。
  • 利用加壳工具对源 apk 进行加密。把加密后的 apk 数据写入脱壳程序的 Dex 末尾,并在文件尾部添加加密数据的大小;修改脱壳程序 Dex 头中的signature 和 file_size 头信息;合并得到新的 Dex1 文件。
  • 然后将新的 Dex1 文件替换原脱壳程序 apk1 中 dex 文件。生成新的 apk,叫做脱壳程序 apk。

脱壳过程:

  • 读取 Dex 文件末尾数据获取待脱壳加密数据长度。
  • 从 Dex 文件读取脱壳数据,解密加密数据。以文件形式保存解密的数据到 *.apk 文件.
  • 通过 DexClassLoader 动态加载 *.apk。

壳史

第一代壳:DEX 加密 (混淆技术)

  • Dex 字符串加密
  • 资源加密
  • 对抗反编译
  • 反调试
  • 自定义 DexClassLoader

第二代壳:Dex 抽取与 So 加固 (加壳技术)

  • 对抗第一代壳常见的脱壳法
  • Dex Method 代码抽取到外部
  • Dex 动态加载
  • So 加密

类抽取常规的有隐藏 dex 文件和修改 dex 结构。隐藏 dex 文件是通过对目标 dex 文件进行整体加密或压缩方式把整个 dex 转换为另外一个文件存放在 assert 文件夹中或者其它地方,然后利用类加载器技术进行内存解密并加载运行。而修改 dex 结构则是抽取 DexCode 中的字节码指令后用零去填充,或者修改方法属性等操作,运行时在内存中做修正,修复等处理工作。

关于 Dex 动态加载,就要提到 dalvik 虚拟机了。它和 java 虚拟机一样,在运行程序时首先需要将对应的类加载到内存中。在标准虚拟机中,类加载可以从 class 文件中读取,也可以是其他二进制流,这样就可以在程序运行时手动加载 class,从而达到代码动态执行的目的。常用的有两个类:DexClassLoader 和 PathClassLoader,PathClassLoader 是安卓应用中的默认加载器。区别:

  • DexClassLoader 可以加载任何路径的 dex/dex/jar
  • PathClassLoader 只能加载 data/app 中的 apk,也就是已经安装到手机中的这个也是 PathClassLoader 作为默认的类加载器的原因,因为一般程序都是安装了,再打开,这时 PathClassLoader 就去加载指定的 apk.

第三代壳:Dex 动态解密与 So 混淆 (指令抽离)

  • Dex Method 代码动态解密
  • So 代码膨胀混淆
  • 对抗之前出现的所有脱壳法

第四代壳:arm vmp(指令转换)

vmp:用 vmp 加固后的还原过程比较复杂和困难,需要用大量的时间作分析。

加固方案区分:国内提供 apk 加固的第三方技术公司有:娜迦、爱加密、梆梆加固、360加固保、百度加固、腾讯加固等。大多数加密后都会生成相应的特征 so 文件。这样就可以根据 so 来查壳

常用脱壳软件

VirtualXposed

VirtualXposed:无需root手机即可使用Xposed框架。

ZjDroid

ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者可以通过ZjDroid完成以下工作: 1、DEX文件的内存dump 2、基于Dalvik关键指针的内存BackSmali,有效破解主流加固方案 3、敏感API的动态监控 4、指定内存区域数据dump 5、获取应用加载DEX信息。 6、获取指定DEX文件加载类信息。 7、dump Dalvik java堆信息。 8、在目标进程动态运行lua脚本。

FDex2

FDex2,可以从安卓app中dump导出有用的dex文件,供后续再从dex导出jar包,jar包导出java源码,功能非常的强大。

frida

frida的原理是,通过在PC上安装Frida,手机上运行frida-server,实现PC对手机的控制,同时通过js注入的方式,将dex从“壳”里“钩”出来。它是一款基于Python的hook(钩子)工具,因此在安装它之前我们需要先配置Py环境,现在的frida仅支持3.7以下的环境,3.8以上的暂不支持。FRIDA-DEXDump

dumpDex

dumpDex是一款Android脱壳工具,需要xposed支持

drizzleDumper

drizzleDumper是一款基于内存搜索的Android脱壳工具,可以从运行中的安卓app中,利用ptrace机制,导出dex文件

VirtualXposed脱壳需要安装xposed软件及下载apk软件 模块dumpDex、FDex2 ,配置完毕重启手机或者模拟器就行,网上很多资料,这里主要说下frida;

frida-dexdump脱壳方法介绍:

 环境软件安装:

  1. pip install frida-tools
  2. pip install frida-dexdump

记好 frida-dexdump所在目录后面要用;

adb shell  

getprop ro.product.cpu.abi  可拿到手机cpu 架构 我这里是x86_64然后去下载frida-server根据自己CPU架构选择

https://github.com/frida/frida/releases/tag/16.0.0

 adb push frida-server-16.0.0-android-x86_64  /data/local/tmp

adb shell

cd /data/local/tmp/

chmod 777 /data/local/tmp/frida-server-16.0.0-android-x86_64

启动服务./frida-server-16.0.0-android-x86_64

然后在新开dos 进入frida所在目录 :AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\Scripts

 

执行:frida-ps -U 查看正在运行的应用。

       frida-dexdump -U -p  进程id

       frida-dexdump -U -n  名称

就可以在frida-dexdump所在目录看到生成的dex文件然后再用dex2jar2.0 指令转化成jar 在解压就能拿到反编译后的代码了。  d2j-dex2jar.bat classes.dex

或者利用jadx-gui 操作:

    jadx -d  dexdir classes.dex 生成dexdir 目录即为反编译的代码

    Linux中命令:./jadx -d  dexdir  QQ.apk

3:获取apk的基本信息

  (1)获取签名信息指令:keytool -printcert -jarfile xx.apk

 也可根据META-INF目录下的签名信息操作:

keytool -printcert -file  xx.RSA 

同时打开xx.SF

 

  如果.SF文件抬头包含X-Android-APK-Signed: 2,则表明该apk是V1和V2混合签名;
  如果.SF文件抬头不包含X-Android-APK-Signed: 2,则表明该apk是纯V1签名;
  如果连.SF文件都没有,则表明该apk是纯V2签名;
(2):  获取apk编译信息:aapt dump badging C:\Users\housc\Desktop\xx.apk

package name:包名

versionCode:版本号

versionName:版本名称

sdkVersion: 最低编译环境SDK版本

targetSdkVersion:当前编译环境SDK版本

uses-permission:权限申请

over!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/547078
推荐阅读
相关标签
  

闽ICP备14008679号