bfjesso/jesso-decompiler
GitHub: bfjesso/jesso-decompiler
一个跨平台的轻量级 C 反编译器,可将 x86/x86-64 架构的 PE 和 ELF 二进制文件转换为 C 代码。
Stars: 10 | Forks: 1
# Jesso Decompiler:适用于 Windows 和 Linux 的 C 反编译器
Jesso Decompiler 是一个静态文件分析器,它可以反汇编编译后的二进制文件并生成 C 代码。在 Windows 上,JDC 将处理
portable executable 文件,而在 Linux 上,它将处理 ELF 文件。所有二进制文件必须是 x86/x86-64 机器码。
GUI 使用 [wxWidgets](https://wxwidgets.org) 制作。
该反编译器仍在开发中,反汇编器尚未完全涵盖 Intel 指令集。

# 安装
如果您不想自行编译,bin 目录中已经提供了预编译的二进制文件。
## Linux
要在 Linux 上编译 GUI,您需要 gcc、g++ 和 make。您还需要获取并构建 wxWidget 的源代码。克隆 jesso-decompiler 后,
您必须使用 wx-config 的路径更新 Makefile。之后只需运行 "make jdc-gui" 即可构建。
```
git clone https://github.com/bfjesso/jesso-decompiler.git
cd jesso-decompiler
make jdc-gui
```
## Windows
您可以使用此仓库中包含的 Visual Studio 项目来构建 JDC。您还需要安装 wxWidgets。
# 工作原理
Jesso Decompiler 的工作原理是获取二进制文件,从文件数据中收集信息,反汇编代码字节,然后分析
反汇编后的指令。
## 文件处理
根据您运行的是 Windows 还是 Linux 版本的 JDC,它将处理 PE (portable executable) 文件,或 ELF (executable and linkable format)
文件。无论哪种情况,JDC 所做的本质上是一样的:
1. 查找导入信息,包括函数名称和地址
2. 从所有包含可执行指令的节(如 ".text")中获取字节
3. 从所有包含数据的节中获取字节,用于解析反编译器中的常量
## 反汇编
反汇编的工作原理是逆向 Intel 的指令编码系统。JDC 中的反汇编器是通过参考 Intel 的开发者手册制作的,该手册
可以在[这里](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)找到。目前,反汇编器尚未完全包含所有操作码。
## 反编译
在反编译函数之前,JDC 需要分析所有反汇编后的指令。这意味着识别所有函数的开头和结尾,
并从文件的数据节加载字节,用于将常量解析为值。
在反编译函数时,JDC 所做的第一件事是查找函数内的所有条件。这意味着通过
寻找条件跳转 (Jcc) 来识别 if 语句和循环。在此之后,JDC 会遍历函数中的每条指令,并检查条件的开头/结尾、
返回语句、内存或变量赋值或函数调用。其中每一个都有单独的例程来反编译它们。
标签:C反编译器, ELF文件分析, GUI工具, Linux开发, PE文件分析, Windows开发, wxWidgets, x86架构, 二进制分析, 二进制安全, 云安全监控, 云安全运维, 云资产清单, 代码还原, 反汇编器, 客户端加密, 恶意代码分析, 文件解析, 编译原理, 逆向工程, 配置文件, 静态分析