JEB Decompiler是一款功能强大的反编译工具,主要用于代码分析和逆向工程。它能够将Android应用程序的Dalvik字节码反编译为可读的Java源代码,同时支持对ARM平台编写的程序和恶意软件进行逆向工程。JEB Decompiler不仅适用于Android应用,还可以用于x86和x86-64程序的反编译。下面我们就来介绍一下JEB Decomplier反编译器。
反编译器是将单元作为输入(而非工件)的特殊模块。它们也会生成单元,代表反编译后的源代码部分。
1、反编译器
JEB Pro 附带了以下反编译器:
- Dalvik(Android Dex 文件)
Intel x86:x86_32、x86_64、x87 (fpu)、MMX、SSE、其他 ISA 扩展(对 sse2+ 和 avx 的支持有限/WIP)
ARM:32 位、Thumb(16 位)、aarch64(64 位)、大多数 ISA 扩展
MIPS(32 位、64 位)
RISC-V(RV32、RV64)
Simatic S7 PLC (MC7),适用于 S7-300/S7-400 程序(手册)
WebAssembly 模块 (wasm)
以太坊合约(EVM代码)
Java(类文件)
下图显示了一个子反编译单元,以及一组反编译类单元。
2、内部
目前,JEB 依赖于两个独立的反编译器管道:
- DEXDEC( dexdec ) 是 Dex/Dalvik(以及 Java)反编译器。此反编译器专门用于 Dalvik 输入。参考实现的主要接口是IDexDecompilerUnit。
GENDEC( gendec ) 是通用反编译管道,可以处理所有类型的代码、本机代码、托管代码或其他代码。GENDEC 比 DEXDEC 更模块化、更开放。所有本机(x86、arm 等)以及非本机(以太坊、WebAssembly)反编译器插件都是基于 GENDEC 构建的。参考实现的主要接口是INativeDecompilerUnit。
3、如何反编译
- 在汇编视图中,将插入符号放在您想要反编译的代码区域上。
按Tab键反编译代码(您可以自定义此功能)。
如果可以为当前代码单元创建反编译单元,则会创建一个新的反编译代码单元。
反编译的代码单元将获得焦点,并且插入符号将定位在与低级字节码或机器码最接近的代码区域上。
4、使用选项进行反编译
操作菜单中还提供使用选项进行反编译的功能。默认键盘快捷键是 MOD1+Tab。(在大多数平台上,MOD1 是 Control 键;在 macOS 上,它是 Command 键。)
当反编译器插件的当前设置与您想要在给定位置反编译的设置不完全一致时,请使用带选项的反编译来动态更改您的设置。
此操作还允许用户强制重新反编译已反编译的代码项。(更笨拙的替代方法是在项目层次结构中找到相应的反编译单元节点,将其删除,然后再次反编译。)
以上就是JEB Decomplier反编译器介绍。JEB Decompiler是一个面向专业人士的模块化逆向工程平台,旨在提高安全专业人士在分析和调试封闭源代码时的效率。