今天给大家介绍的是一款名叫Reko的开源反编译工具,该工具采用C#开发,广大研究人员可利用Reko来对机器码进行反编译处理。我们知道.NET 7 有了NativeAOT 的支持,采用NativeAOT 编译的.NET程序 无法通过ILSpy 之类的传统工具得到源码,这款Reko 可能是唯一一款可以把NativeAOT 编译的程序真正得到源码的,当然你得首先会编程才行。编译本质上是一个有损过程。 将高级源代码程序转换为低级机器代码可执行二进制文件时,诸如复杂数据类型和注释之类的信息会丢失。 有用的反编译通常需要用户的帮助。 用户可以提供被编译器丢弃的类型信息,并为过程添加注释或给出友好名称。

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

Reko的目标就是帮助用户在最小化操作交互的情况下,帮助用户完成对多种处理器架构和可执行文件格式的反编译处理。需要注意的是,很多软件许可证会禁止他人对该软件的机器码进行反编译或逆向分析,所以希望大家不要将本工具用于恶意目的。

项目地址:https://github.com/uxmal/reko 

工具下载和安装:https://github.com/uxmal/reko/releases/tag/version-0.11.1

.NET 6 是跨平台的,可以在你需要安装的操作系统上安装 .NET 6.0:https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0 ,如果需要开发Reko,并使用VS 2022,则必须安装VS的C#组件,如果在Mac,Linux平台上推荐使用Rider 。

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

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

Reko开始于一个空项目。二进制文件的分析从将它添加到项目中(使用菜单栏命令File > Open) 开始。Reko会尝试确定这个文件是什么二进制文件格式。常见的格式,比如MS-DOS或EXE会被自动加载;它们的内部结构会被从头到尾地分析加载(will be traversed),加载结果会在左侧的项目概览中中展现出来。

想了解Reko的各种特性,你可以读 user’s guide.md | github。如果你对项目的内部工作原理感兴趣,请看 reko wiki

推荐一款采用 .NET 编写的 反编译到源码工具 Reko的更多相关文章

  1. Android反编译(一)之反编译JAVA源码

    Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具  dex2jar   http://code.go ...

  2. 检测微信小程序是否被反编译获取源码

    众所周知,微信小程序的代码安全性很弱,很容易被别人反编译获取源码.我自己的小程序也被别人反编译拿到源码还上线了,非常无语. 既然客户端不好防范,服务端还是可以做点手脚的. 小程序的Referer是不可 ...

  3. Android反编译调试源码

    Android反编译调试源码 1. 反编译得到源码 直接在windows 命令行下输入命令java -jar apktool_2.0.0.jar d -d 小米运动_1.4.641_1058.apk ...

  4. VS反编译查看源码时,会把类实现的所有接口都直接显示

    今天在看ArrayList,发现一个很有意思的问题.从VS里反编译看,ArrayList继承了ICollection. IEnumerable.IList和ICloneable,而IList又继承了I ...

  5. 一、Vs2019扩展多了 导航到反编译的源码中运行

    一.导航到反编译的源码中运行

  6. vue项目打包后使用reverse-sourcemap反编译到源码(详解版)

    首先得说一下,vue项目中productionSourceMap这个属性.该属性对应的值为true|false.   当productionSourceMap: true,时: 1.打包后能看到xxx ...

  7. 推荐一款好用的java反编译软件——JavaDecompiler

    这款反编译器叫 "Java Decompiler",在网上也是久负盛名,最近因为工作需要找来用了下,果然不错,之前都是用eclipse的插件jad来看源码的.下面这个链接是Java ...

  8. 客户的一个紧急bug,我用了两种方式进行 C# 反编译修改源码

    一:背景 1. 讲故事 周五下午运营反馈了一个紧急bug,说客户那边一个信息列表打不开,急需解决,附带的日志文件也发过来了,看了下日志大概是这样的: 日期:2020-11-13 12:25:45,92 ...

  9. java反编译获取源码

    最近在研究反射,想做一个东西,把运行的java程序饭编译(Decompile)成.java文件.现思路如下: 1.写出程序反编译一个类 2.将所有类反编译 3.java代码注入一个正在运行的java程 ...

  10. Android:反编译查看源码

    下载>>>>>>>>>>>>>>> 使用图形化反编译工具:Androidfby 打开Androidfby中的A ...

随机推荐

  1. 4.maven私服nexus2迁移到nexus3

    注意,本文讲解的是针对我们原来所用的nexus2.14.5版本的升级配置流程,如果您的老私服版本并不是这个,那么请先参考这里:升级兼容性 – Repository Manager 2到3.选定对应可升 ...

  2. mongodb停止关闭服务

    停止服务的方式有两种:快速关闭和标准关闭,下面依次说明: (一)快速关闭方法(快速,简单,数据可能会出错) 目标:通过系统的kill命令直接杀死进程: 杀完要检查一下,避免有的没有杀掉. #通过进程编 ...

  3. 1_MySQL

    一. 什么是数据库 概念: 数据库是按照数据结构来组织, 存储和管理数据的仓库, 是一个长期存储在计算机内的, 有组织的, 有共享的, 统一管理的数据集合 分类: 网状结构数据库: 美国通用汽车公司I ...

  4. 中小制造企业需要ERP和MES吗?

    并不是所有中小制造企业都需要ERP和MES,这个取决于你的规模和管理思维与模式!匹配很重要,不同规模的企业做不同的选择!比如你大型企业,一般是要使用ERP的,其工厂也应该需要上MES系统,ERP主要用 ...

  5. strut2 标签加载图表。

    //===============================================超市订单量走势图========================================= v ...

  6. 网页计时访问器application对象

    网页计时访问器 application对象代表Web应用本身,整个Web共享一个application对象.开始于服务器打开结束与服务器关闭.在不同的浏览器打开j计时器仍然有作用.除非把服务器关闭 & ...

  7. web share api 分享

    概述 Navigator.share()  方法通过调用本机的共享机制作为 Web Share API 的一部分.如果不支持 Web Share API,则此方法为 undefined. 此项功能仅在 ...

  8. 硬核剖析ThreadLocal源码,面试官看了直呼内行

    工作面试中经常遇到ThreadLocal,但是很多同学并不了解ThreadLocal实现原理,到底为什么会发生内存泄漏也是一知半解?今天一灯带你深入剖析ThreadLocal源码,总结ThreadLo ...

  9. 第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍

    目录 1 背景 1.1 为什么需要分布式文件服务 1.1.1 单机时代 1.1.2 独立文件服务器 1.1.3 分布式文件系统 1.2 什么是FastDFS 2 系统架构 2.1 Tracker集群 ...

  10. 修改Oracle共享池大小

    1.  sysdba登录数据库 [oracle@ufdb165 ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Production on Wed Au ...