欢迎光临散文网 会员登陆 & 注册

易锦Android逆向工程师精英计划2023

2023-08-17 21:00 作者:bili_74890469624  | 我要投稿

Android逆向分析大全

分析步骤

通用逆向分析步骤

  • 1.了解该模块正向编程相关方法

  • 2.使用apktool解密apk,得到资源、jni模块等文件

  • 3.从apk提取出dex文件,使用dex2jar转换成jar文件,再用java逆向工具得到java源码 dex->jar->java

  • 4.根据特征(字符串、常量、包名类名方法名、manifest文件、布局文件等方式)或调试手段定位到关键代码

  • 5.分析变量含义类型、函数逻辑、模块流程

  • 6.对变量、函数、类进行标注、恢复成高级语言 ->c

Android程序的特点相比在于使用混淆方式打包,将包名、类名、函数名改成不易看懂的字母,从而使生成的apk小很多(android studio提供了release编译方式,使用proguard混淆),因此反编译apk最多的工作在于重构这些名称,这一点和pc上一致,对于android native程序(jni)则和pc上基本一致,不同之处在于常见的是arm汇编。

安卓上APK调试步骤:

  • 1.Apk(debuggable)或系统(ro.debuggable=1)设置为可调试

  • 2.在虚拟机中启动服务端(adbd/android_server)

  • 3.在主机端连接客户端调试器(IDA/jdb/adt),设置断点

安卓上linux程序调试步骤:

  • 1.在虚拟机中启动服务端(gdb_server/linux_server)

  • 2.在主机端连接客户端调试器(IDA/gdb_for_windows),设置断点

对于apk的反编译,由于资源和xml都进行了编码,因此反编译时必然要解析相应的resource.arsc/AndroidManifest.xml等文件,对于做过保护处理的apk通常会在这里做手脚干扰Apktool、dex2jar等反编译工具因此很有必要掌握编译、调试这些工具源码的方法(见“如何编译、调试apktool和dex2jar”)

分析工具

  • 集成IDE:APK改之理、JD-GUI、JEB(1.4破解 2.0)、jadx

  • 解压(apk, jar):WinRar

  • 解析资源:apktool

  • 反编译引擎(jar, class):dex2jar工具集、jd-core(JD-GUI,JD-Eclipse反编译核心)、fernflower(Android Studio反编 、procyon

  • 回编译:aapt、dex2jar工具集

  • 调试器:IDA、jdb、adt等

  • 辅助工具:DDMS 如果是虚拟机可以看到所有进程

APK改之理

  • 整合&提供了全套解压、反编译代码和资源、回编译、签名功能,强大的正则搜索,修改smali字节码等功能

  • 集成ApkTool、Dex2jar、JD-GUI工具

  • 可视化操作,全自动的反编译、回编译、签名Apk

  • 正则表达式搜索资源及源码

JD-GUI

轻量级反编译,反编译jar/class等java字节码文件(能力一般),提供简单的搜索能力

JEB

  • 反编译apk/jar工具(能力较强)

  • 强大的正向、反向索引,一定程度重命名能力,一定搜索能力

  • 支持注释、插件

  • 交互式可视化操作,全自动的反编译

  • 支持重命名

Dex2jar工具集

dex2jar是一个工具包,反编译dex和jar,还提供了一些其它的功能,每个功能使用一个bat批处理或 sh 脚本来包装,只需在Windows 系统中调用 bat文件、在Linux 系统中调用 sh 脚本即可。在bat中调用相应的jar主类完成特定功能,例如d2j-dex2jar.bat中的内容是:@"%~dp0d2j_invoke.bat" com.googlecode.dex2jar.tools.Dex2jarCmd %*。常用的有dex2jar jar2dex dex2smali smali2dex

  • d2j-apk-sign用来为apk 文件签名。命令格式:d2j-apk-sign xxx.apk 。

  • d2j-asm-verify 用来验证jar 文件。命令格式:d2j-asm-verify -d xxx.jar。

  • d2j-dex2jar 用来将dex 文件转换成jar 文件。命令格式:d2j-dex2jar xxx.apk

  • d2j-dex-asmifier 用来验证dex 文件。命令格式:d2j-dex-asmifier xxx.dex。

  • d2j-dex-dump 用来转存dex 文件的信息。命令格式:d2j-dex-dump xxx.apk out.jar 。

  • d2j-init-deobf 用来生成反混淆jar 文件时的初始化配置文件。

  • d2j-jar2dex 用来将jar 文件转换成 dex 文件。命令格式:d2j-jar2dex xxx.apk。

  • d2j-jar2jasmin 用来将jar 文件转换成jasmin 格式的文件。命令格式:d2j-jar2jasmin xxx.jar

  • d2j-jar-access 用来修改jar 文件中的类、方法以及字段的访问权限。

  • d2j-jar-remap 用来重命名jar 文件中的包、类、方法以及字段的名称。

  • d2j-jasmin2jar 用来将jasmin 格式的文件转换成 jar 文件。命令格式:d2j-jasmin2jar dir dex2jar为d2j-dex2jar 的副本。

  • dex-dump为d2j-dex-dump 的副本

Apktool反编译&打包工具

  • 反编译apk:apktool d file.apk –o path

  • 回编译apk:apktool b path –o file.apk

常见文件格式

Apk

Android package,android安装程序文件,本质上是压缩包,解压得到classes.dex、resources.arsc、AndroidManifest.xml、so文件以及资源文件

  • Resources.arsc资源描述文件

  • Classes.dex所有代码编译过得darvik字节码文件,可能会有多个

  • AndroidManifest.xml 编译过的AndroidManifest.xml文件


易锦Android逆向工程师精英计划2023的评论 (共 条)

分享到微博请遵守国家法律