| | | | | ___ \ / __ \ | | \ \ / / | |
| || | _____ | |/ /__ _ _ _ | / / ___ | | ___ \ V / _ __ | | ___ _ __ ___ _ __
| _ |/ _ \ / / // | | | / __| | / _ \ / _ |/ _ / | ' | |/ _ | '/ _ \ '|
| | | | __/> <| |\ \ (| | || __ \ _/\ () | (| | __/ /^\ \ |) | | () | | | __/ |
_| |/_//__| __,|_, |/_/_/ _,|_/ / ./||___/|| ___||
/ | | |
|/ |_|
Hex-Rays 反编译插件,用于在逆向工程过程中实现更好的代码导航。CodeXplorer 可自动完成 C++ 应用或现代恶意软件(如 Stuxnet、Flame、Equation、Animal Farm 等)的代码逆向重构 :octocat:
CodeXplorer 插件是 最早公开的 Hex-Rays 反编译器插件之一。我们自 2013 年夏季 以来持续更新该项目,并频繁贡献新功能。此外,CodeXplorer 的最有趣特性已在众多安全会议上展示,如:REcon、ZeroNights、H2HC、NSEC 和 BHUS 👾
贡献者:
Alex Matrosov (@matrosov)
Eugene Rodionov (@rodionov)
Rodrigo Branco (@rrbranco)
Gabriel Barbosa (@gabrielnb)
支持的 Hex-Rays 产品版本: 我们始终关注 IDA 和反编译器的最新版本,因为希望利用新版 SDK 中引入的有趣特性。这也意味着我们仅针对 Hex-Rays 产品的最新版本进行测试,不保证在旧版本上的稳定运行。
为何不使用 IdaPython: 所有代码均用 C/C++ 开发,因为这是为 Hex-Rays 反编译器支持复杂插件的更稳定方式。
支持的平台: x86/x64 的 Windows、Linux 和 Mac。
HexRaysCodeXplorer - Hex-Rays 反编译器插件,用于更便捷的代码导航。在伪代码窗口中右击上下文菜单,可显示 CodeXplorer 插件命令:

💎 以下是 CodeXplorer 插件的主要功能: 💎

重构的结构将显示在“输出窗口”中。有关类型重构特性的详细信息,请参阅博文“HexRaysCodeXplorer 中的类型逆向重构”。
此外,CodeXplorer 插件支持将重构后的类型自动导入 IDA 本地类型存储中。

struct_local_data_storage 时,识别出两个虚函数表,并因此生成了两个对应的结构:struct_local_data_storage_VTABLE_0 和 struct_local_data_storage_VTABLE_4。



将类型导出到文件 – 将所有类型信息(包括重构的类型)转储到文件。
虚函数调用导航 在 HexRays 伪代码窗口中实现。将 C++ 对象表示为 C 结构后,该功能允许通过鼠标点击导航到作为结构字段的虚函数调用:



对象浏览器支持以下功能:
为 VTBL 自动生成结构并导入 IDA 本地类型
导航虚函数表列表,通过点击跳转到“IDA 视图”窗口中的 VTBL 地址
显示当前虚函数表位置的提示
点击菜单中的「Show XREFS to VTBL」显示交叉引用列表


批处理模式包含以下功能:
示例(转储函数名前缀为 "crypto_" 的函数的类型和 ctrees):
idaq.exe -OHexRaysCodeXplorer:dump_types:dump_ctrees:CRYPTOcrypto_path_to_idb
编译:
Windows:
src/HexRaysCodeXplorer/PropertySheet.props,更新 IDADIR 和 IDASDK 路径,分别指向 IDA 安装路径和 IDA7 SDK 路径。HexRays SDK 应位于 $IDADIR\plugins\hexrays_sdk(默认情况)Release | x64 和 Release x64 | x64 配置Linux:
Mac:
.pmc 文件扩展名应为 .dylibexport IDA_DIR="/Applications/IDA\ Pro\ 7.0/ida.app/Contents/MacOS" && export IDA_SDK="/Applications/IDA\ Pro\ 7.0/ida.app/Contents/MacOS/idasdk" && make -f makefile7.macHexRaysCodeXplorer.xcodeproj使用 CMake:
============================================================================
关于 CodeXplorer 插件的会议演讲: