前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RetDec:一款功能强大的基于LLVM的可重定目标机器代码反编译器

RetDec:一款功能强大的基于LLVM的可重定目标机器代码反编译器

作者头像
FB客服
发布2023-03-29 16:05:15
1.4K0
发布2023-03-29 16:05:15
举报
文章被收录于专栏:FreeBuf

 关于RetDec 

RetDec是一款功能强大的基于LLVM的可重定目标机器代码反编译器,该工具支持的反编译器不限于任何特定的目标体系结构、操作系统或可执行文件格式。

当前版本的RetDec支持下列文件格式:

ELF PE Mach-O COFF AR(文档) Intel HEX 原始机器代码

当前版本的RetDec支持下列体系结构:

32位:Intel x86、ARM、MIPS、PIC32和PowerPC 64位:x86-64,ARM64(AArch64)

 功能介绍 

1、提供带有详细信息的可执行文件静态分析数据; 2、编译器和封装器检测; 3、加载和指令解码; 4、基于签名的静态链接库代码移除; 5、提取和利用调试信息(DWARF、PDB); 6、指令语法重构; 7、C++类层次结构(RTTI、vtables)的检测和重构; 8、从C++二进制文件(GCC、MSVC、Borland)中分离符号; 9、函数、类型和高级构造器重构; 10、整合反汇编工具; 11、以两种高级语言输出:C和类似Python的语言; 12、生成调用图、控制流图和各种统计信息;

 工具安装 

广大研究人员可以访问该项目的【Releases页面】下载预编译的RetDec稳定版。

当前版本的RetDec支持Windows 7+、Linux、macOS和FreeBSD操作系统,请预留大约5-6GB的磁盘空间。

 工具使用 

Windows

1、安装Microsoft Visual C++ Redistributable for Visual Studio 2017;

2、安装UPX和Graphviz;

3、如需反编译名为text.exe的代码文件,可以运行下列命令:

代码语言:javascript
复制
$RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe(向右滑动,查看更多)

Linux

1、安装UPX和Graphviz;

2、如需反编译名为text.exe的代码文件,可以运行下列命令:

代码语言:javascript
复制
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe

(向右滑动,查看更多)

代码语言:javascript
复制

 使用RetDec代码库 

我们还可以直接在自己项目(需要使用CMake构建)中使用RetDec库。RetDec安装时包含了所有需要的头文件、代码库和CMake脚本。

接下来,就可以通过下列方式来使用其组件了:

代码语言:javascript
复制
find_package(retdec 5.0 REQUIRED   COMPONENTS      <component>      [...])target_link_libraries(your-project   PUBLIC      retdec::<component>      [...])

 Docker中构建RetDec 

构建镜像

在Docker中构建RetDec不需要在本地安装所需的依赖库,直接运行下列命令即可构建RetDec镜像:

代码语言:javascript
复制
docker build -t retdec - < Dockerfile
代码语言:javascript
复制

上述命令将从代码库的主分支构建镜像。

除此之外,我们也可以使用本地代码库拷贝来构建镜像,即使用开发版本的Dockerfile.dev:

代码语言:javascript
复制
git clone https://github.com/avast/retdec.gitdocker build -t retdec:dev . -f Dockerfile.dev

(向右滑动,查看更多)

代码语言:javascript
复制

容器运行

如果你的uid不是1000,请确保RetDec能够访问目录中包含的输入代码文件:

代码语言:javascript
复制
chmod 0777 /path/to/local/directory

接下来,你就可以在容器中运行反编译器了:

代码语言:javascript
复制
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary
代码语言:javascript
复制

(向右滑动,查看更多)

 许可证协议 

本项目的开发与发布遵循MIT和Zlib开源许可证协议。

 项目地址 

RetDec

https://github.com/avast/retdec

参考资料:

https://retdec.com/static/publications/retdec-slides-botconf-2017.pdf https://www.youtube.com/watch?v=HHFvtt5b6yY https://retdec.com/static/publications/retdec-slides-recon-2018.pdf https://retdec.com/publications/

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  功能介绍 
  •  工具安装 
  •  工具使用 
    • Windows
    • (向右滑动,查看更多)
    •  使用RetDec代码库 
    •  Docker中构建RetDec 
      • 构建镜像
      • (向右滑动,查看更多)
        • 容器运行
        • (向右滑动,查看更多)
        •  许可证协议 
        •  项目地址 
        • 参考资料:
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档