程序 源码反编译-推荐一款.NET编写的反编译源码工具Reko

(本文阅读时间:5分钟)

今天给大家介绍的是一款名为Reko的开源反编译工具,它是用C#开发的,研究人员可以使用Reko来反编译机器码。 我们知道.NET 7已经支持NativeAOT。 NativeAOT编译的.NET程序无法通过ILSpy等传统工具获取源代码。 这个Reko可能是唯一能够真正拿到NativeAOT编译出来的程序源码的。 当然,你必须首先会编程。

编译本质上是一个有损过程。 当将中级源代码程序转换为低级机器代码可执行二进制文件时,复杂数据类型和注释等信息会丢失。 有效的反编译通常需要用户的帮助。 用户可以提供被编译器丢弃的类型信息,并对过程进行注释或给出友好的名称。

微软 MVP 实验室研究员

程序 源码反编译_反编译出源码_反编译lib成源码

反编译lib成源码_反编译出源码_程序 源码反编译

张善友

深圳友浩达CTO&首席架构师,微软最有价值专家,微软SWAT专家程序 源码反编译,20多年软件开发经验,在腾讯工作12年,.NET基金会成员,.NET云原生顾问和解决方案专家,运营微信公众号“dotnet跨平台”和“分布式应用程序运行时”

程序 源码反编译_反编译出源码_反编译lib成源码

Reko不仅包含核心反编译引擎和前端代码分析模块,还提供了友好的操作界面。 目前,该工具提供 Windows GUI 和 ASP.NET 后端。 反编译引擎需要从后端获取用户输入,可接受的输入是单独的可执行文件或反编译后的项目文件。 Reko 项目文件还包含有关代码文件的附加信息,以帮助研究人员进行反编译或低格式输出。 整个过程中程序 源码反编译,主要负责解析输入代码的是反编译引擎。

反编译出源码_反编译lib成源码_程序 源码反编译

Reko的目标是帮助用户以最少的操作交互完成各种处理器架构和可执行文件格式的反编译过程。 需要注意的是,很多软件许可证都严格禁止他人反编译或反向分析该软件的机器码,所以希望大家不要将此工具用于恶意目的。

.NET 6 是跨平台的。 您可以在需要安装的操作系统上安装.NET 6.0。 如果需要开发Reko并使用VS 2022,则必须安装VS的C#组件。 建议在 Mac 和 Linux 平台上使用 Rider。

Windows 下载完 MSI 文件后,直接运行安装程序即可。 安装完成后,开始菜单中会创建一个“Reko Decompiler”快捷方式,直接点击该图标即可启动Reko客户端。

打开GUI客户端后,可以参考GUI.md文档开始工作。

Reko 从一个空项目开始。 二进制文件的剖析首先将其添加到项目中(使用菜单栏命令“文件”>“打开”)。 Reko 将尝试确定该文件是什么二进制文件格式。 常见格式如 MS-DOS 或 EXE 将手动加载; 它们的内部结构将被遍历,结果将在右侧的项目概述中突出显示。

要了解Reko的各种功能,您可以阅读用户指南.md | github。 如果您对该项目的内部运作感兴趣,请查看 reko wiki。