公司动态
安卓逆向_2 --- Androidkiller、apktool、jadx、jeb、gda
1、逆向工程逆向工程 (Reverse engineering) 也称 反向工程、还原工程。在计算机软件中是指通过对他人软件 (比如exe、apk 等编译后程序) 进行逆向分析研究以推导出软件的 设计思路、原理、结构、算法、处理过程、运行方法 等某些情况下还可以推导出软件的源代码。高级语言源程序经过编译变成可执行文件反编译就是逆过程。2、反编译 工具入门级Apktool、dextojar 都是基于命令行Apktool对 Android apk 文件进行逆向工程的工具dex2jar将dex文件变成一个(包含class文件的)jar 文件。jd-gui 用于显示 CLASS 文件中的 Java 源代码。jd-gui 下载https://github.com/java-decompiler/jd-gui初级Androidkiller 是基于 apktool 的图形化反编译工具jadx 是另外一个 图形化的反编译工具高级 jeb 是收费工具且功能强大可以动态调试 smali 代码。更多 反编译工具https://github.com/search?qjadxhttps://github.com/search?qdecompile可以 github 直接搜索 相关 关键字关于 反编译 注意事项1、反编译的目的是分析代码不是运行代码。2、一般反编译后的代码是无法直接编译通过。3、有些 app 进行了安全加固例如加壳、混淆导致无法反编译或者反编译后是乱码。AndroidKillerAndroid Killer 是经典的 Android 反编译工具。工具毕竟很老了无论是界面还是功能上都很难得到保证还是推荐 JEB Decompiler 等仍在维护的反编译工具。githubhttps://github.com/CherylVolta/android-killer直接下载解压https://codeload.github.com/CherylVolta/android-killer/zip/refs/heads/main使用方法请参考此文或自行搜索https://blog.csdn.net/yiran1919/article/details/132760445AndroidKiller 安装、设置及使用教程https://www.52pojie.cn/thread-726176-1-1.html动态调试 smalihttps://blog.csdn.net/zhangjianming2018/article/details/124512370AndroidKiller 修改应用名称https://www.cnblogs.com/zeussbook/p/11014144.htmlAndroid 反编译美柚https://www.jianshu.com/p/19b62aace407smali 插桩 插件 https://www.jianshu.com/p/a7d9c28337e5apktoolapktool 是谷歌提供的 apk 编译工具可以反编译和回编译(重新编译并打包就是修改资源文件之后 rebuild 一个 apk)。APK 其实就是一个压缩包可以把 .apk 修改为 .zip。通过这种方式来获取资源文件但是 xml 会乱码。这时就需要使用 apktool 反编译 apk 查看 xml 就不会乱码了。下载、文档https://apktool.org/docs/the-basics/introgithub 地址https://github.com/iBotPeaches/Apktool/releasesDex、Smali、Class、Java、Jar 之间的相互转换工具作用javacjava ------ classddxclass ------ dexbaksmalidex ------ smalismalismali ------ dexdex2jardex ------ jar ( class的压缩包 )apktoolapk ------ smali官网文档https://apktool.org/docs/installwindows 下安装包装脚本不是必需的但它很有帮助可以让你不必重复输入 java -jar apktool.jar下载 Windows 包装器脚本。右键单击将链接另存为apktool.bat)下载最新版本的 Apktool。将下载的 jar 重命名为 .apktool.jar将 和 移动到 Windows 目录。通常apktool.jarapktool.batC://Windows)如果您无权访问 则可以将这两个文件放在任何位置并将该目录添加到环境变量系统 PATH 变量中。C://Windows尝试通过命令提示符运行。apktoolLinux 下安装下载 Linux 包装脚本。右键单击将链接另存为apktool)下载最新版本的 Apktool。将下载的 jar 重命名为 .apktool.jar将 和 移动到 。需要 rootapktool.jarapktool/usr/local/bin确保这两个文件都是可执行的。(chmod x)尝试通过 CLI 运行。apktoolmacOS 下安装下载 Mac 包装器脚本。右键单击将链接另存为apktool)下载最新版本的 Apktool。将下载的 jar 重命名为 .apktool.jar将 和 移动到 。需要 rootapktool.jarapktool/usr/local/bin确保这两个文件都是可执行的。(chmod x)尝试通过 CLI 运行。apktool反编译 apk d 参数 反编译命令apktool d com.xxx.apkdecode和d是等效。apktooldbar.apk -o bazapktooldecodebar.apk -o baz执行过程中会输出主要步骤 log反编译结束后反编译的内容均在目录下的 相应文件夹下 -- 文件夹名字与 apk 同名。可以使用 -o 来指定反编译的输出目录如上命令为 反编译 bar.apk 到 baz 目录也可以使用绝对路径输出到任意目录。反编译 apk 成 dex 文件java -jar apktool_2.3.4.jar -s d crackme02.apk重新打包成apk b 参数 修改后需要重新打包成 apk 的命令apktool b 项目目录项目目录就是上一步反编译后生成的目录。build和b是等效。apktool b bar -o new_bar.apkapktool build bar -o new_bar.apk可以使用 -o 来指定重新打包的输出目录如上命令为 重新编译bar目录下的结构到 new_bar.apk也可以使用绝对路径输出到任意目录。重新打包工程中同样会输出主要步骤的 log。重新生成的 apk 位于目录中的 dist 目录下注意重新生成的 apk是没有经过签名的不能直接进行安装。需要重新签名打包完成后会发现指定的目录下出现了打包好的 apk 文件。但是这个apk没有签名需要重新签名之后才能安装。签名首先需要生成 keystore 文件命令keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystorekeytool 是 jdk 自带工具在Java/bin目录下进行签名命令jarsigner -verbose -keystore abc.keystore -signedjar nopassword_signed.apk nopassword.apk abc.keystore执行之后在当前目录下生成一个 xxx_signed.apk代表apk已经签名了可以安装了。framework每一个版本的 apktool 都自带有最新 AOSP 的 framework能支持绝大多数的 apk 反编译。framework 文档https://apktool.org/docs/in-depth/frameworksjadx (推荐)gitHub 下载https://github.com/skylot/jadxAndroid 反编译利器jadx 的高级技巧https://www.jianshu.com/p/e5b021df2170使用 jadx 直接打开 apk 文件就可以查看 反编译的源码。github 搜索 jadxhttps://github.com/search?qjadxtyperepositoriesjadx / jadx-mcp / ida-pro-mcphttps://mp.weixin.qq.com/s/pStDA9RKpo9nm9CmpRySggjadx-ai-mcp.jarhttps://github.com/zinja-coder/jadx-ai-mcp 通过 jadx-ai-mcp 插件AI 可以直接访问 jadx 的反编译结果从而可以对jadx中的代码搜索、类分析、交叉引用查询等操作jadx-mcp-serverhttps://github.com/zinja-coder/jadx-ai-mcppip install --upgrade githttps://github.com/mrexodia/ida-pro-mcpida-pro-mcp --installida-pro-mcp --configjeb (推荐)官网https://www.pnfsoftware.com/中文网站https://www.jebdecompiler.com/jeb_pro 下载https://down.52pojie.cn/Tools/Android_Tools/jeb_pro 下载https://crifan.github.io/android_re_tool_jeb/website/download_run/oracle java下载https://www.oracle.com/cn/java/technologies/downloads/注意需要 Java17 以上环境否则启动 jeb_demo 报错JEB Decompiler是一款功能强大的反编译工具主要用于代码分析和逆向工程。它能够将Android应用程序的Dalvik字节码反编译为可读的Java源代码同时支持对ARM平台编写的程序和恶意软件进行逆向工程。相比 jadxJEB 除了支持apk文件的反编译和Android App的动态调试还支持 ARM、MIPS、AVR、Intel-x86、WebAssembly、Ethereum(以太坊)等程序的反编译、反汇编动态调试等。另外JEB能解析和处理一些PDF文件是一个极其强大的综合性逆向和审计工具jeb 版本概述收费版本JEB Pro (可以动态调试 smali 代码)。JEB Pro 附带了以下反编译器DalvikAndroid Dex 文件Intel x86x86_32、x86_64、x87 (fpu)、MMX、SSE、其他 ISA 扩展对 sse2 和 avx 的支持有限/WIPARM32 位、Thumb16 位、aarch6464 位、大多数 ISA 扩展MIPS32 位、64 位RISC-VRV32、RV64Simatic S7 PLC (MC7)适用于 S7-300/S7-400 程序手册WebAssembly 模块 (wasm)以太坊合约EVM代码Java类文件免费版本社区版、演示版社区版 (JEB Community Edition) JEB Home Edition x86不支持Android的arm仅支持32位和64位的x86。演示版 (JEB Demo) 包含 JEB Pro 的大部分功能附带完整版中提供的所有模块但是使用时功能有很多限制主要用于试用功能演示。不同版本功能对比目前JEB 依赖于两个独立的反编译器管道DEXDEC( dexdec ) 是 Dex/Dalvik以及 Java反编译器。此反编译器专门用于 Dalvik 输入。参考实现的主要接口是IDexDecompilerUnit。GENDEC( gendec ) 是通用反编译管道可以处理所有类型的代码、本机代码、托管代码或其他代码。GENDEC 比 DEXDEC 更模块化、更开放。所有本机x86、arm 等以及非本机以太坊、WebAssembly反编译器插件都是基于 GENDEC 构建的。参考实现的主要接口是INativeDecompilerUnit。如何反编译按Tab键反编译代码汇编视图中在想要反编译的代码区域按Tab键反编译代码。反编译的代码单元将获得焦点并且插入符号将定位在与低级字节码或机器码最接近的代码区域上。使用选项进行反编译右键菜单中还提供使用选项进行反编译的功能。jeb 使用教程调试逆向分为动态分析技术和静态分析技术静态分析技术是指逆向者利用反汇编工具将二进制的可执行文件翻译成汇编代码通过对代码的分析来逆向软件动态调试则是指逆向者利用调试器跟踪软件的运行寻求逆向的途径。动态调试有两种方法方法 1Jeb 调试方法 2AndroidStudio smalidea 插件动态调试。菜单栏 --- 编辑 --- 语言 --- 可以设置简体中文中文教程https://www.jebdecompiler.com/support.html工作区https://www.pnfsoftware.com/jeb/manual/workspace/Actionhttps://www.pnfsoftware.com/jeb/manual/actions/视图https://www.pnfsoftware.com/jeb/manual/views/反编译https://www.pnfsoftware.com/jeb/manual/decompiling/调试https://www.pnfsoftware.com/jeb/manual/debugging/安卓分析https://www.pnfsoftware.com/jeb/manual/android/安卓调试https://www.pnfsoftware.com/jeb/manual/android-debugging/Native 代码 分析https://www.pnfsoftware.com/jeb/manual/native/WebAssembly 分析https://www.pnfsoftware.com/jeb/manual/webassembly/ethereum 分析https://www.pnfsoftware.com/jeb/manual/ethereum/其他杂项https://www.pnfsoftware.com/jeb/manual/miscjeb 使用教程https://crifan.github.io/android_re_tool_jeb/website/function_ui/动态调试 smalihttps://blog.csdn.net/freeking101/article/details/105910877jeb 动态调试 smalihttps://www.52hb.com/thread-49414-1-1.html动态调试 其实操作很简单首先确保 App 已经安装在了手机上并且能在电脑上通过 adb 命令与手机连接。然后运行adb命令。示例命令adb shell am start -D -n com.goldze.mvvmhabit/.ui.MainActivity这条命令的功能就是让 APP 以调试模式启动-D 指定 APP 以调试模式启动-n 指定启动入口这里设置示例APP 包名和MainActivity运行命令后手机上会显示如下界面这时回到 JEB 的界面点击 工具栏 里的 Debug 按钮之后会检测出正在运行的 Android 设备点击下方的 Attach 按钮Debugger 就成功挂载了手机上的 App 进程。与此同时手机上的 Waiting for Debugger 提示也消失了示例 App 正常运行并加载出了第一页数据这证明挂载成功了。在 JEB 中可以选中想要调试的 Smali 代码然后点击菜单栏中的 “Debugger” - “Toggle Breakpoint” 来添加断点gda (不依赖 java)gdahttps://github.com/charles2gan/GDA-android-reversing-Tool官网http://www.gda.wiki:9090/index.php激活Pro版所有功能 https://www.52pojie.cn/thread-1938478-1-1.html蓝奏https://www.lanzouw.com/b00mojrkva 密码baap 解压密码CXVUSER拖拽操作秒杀 Jadx媲美 JEB内置中文版菜单栏 --- Config --- Set Chinese轻松上手https://zhuanlan.zhihu.com/p/28354064GDA使用手册https://bbs.kanxue.com/thread-266700-1.htmGDA 不只是一款反编译器同时也是一款轻便且功能强大的综合性逆向分析利器不依赖 java 环境。支持 apk, dex, odex, oat, jar, class, aar文件的反编译支持python及java脚本自动化分析。其包含多个由作者独立研究的高速分析引擎:反编译引擎、漏洞检测引擎、 恶意行为检测引擎、污点传播分析引擎、反混淆引擎、apk壳检测引擎等等免费版、专业版 区别