今天给大家介绍的是一款名叫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. 大家都在用MySQL count(*)统计总数,到底有什么问题?

    在日常开发工作中,我经常会遇到需要统计总数的场景,比如:统计订单总数.统计用户总数等.一般我们会使用MySQL 的count函数进行统计,但是随着数据量逐渐增大,统计耗时也越来越长,最后竟然出现慢查询 ...

  2. MySQL集群搭建(5)-MHA高可用架构

    1 概述 1.1 MHA 简介 MHA - Master High Availability 是由 Perl 实现的一款高可用程序,出现故障时,MHA 以最小的停机时间(通常10-30秒)执行 mas ...

  3. LOJ139 树链剖分

    题目 感觉这已经不能说是模板了吧...... 解析: 难点在于换根后对子树进行的操作,设rt为当前根节点,u为操作子树: u=rt时,就是对整棵树操作,没事么好说的. rt不在u的子树范围内,操作对象 ...

  4. KVM导入Ubuntu Cloud 镜像创建虚机及调整磁盘大小

    Ubuntu Cloud Images Ubuntu官网会给各种公有云平台提供cloud镜像, 例如AWS, MS Azure, Google Cloud, 以及本地虚机环境例如 QEMU, VMwa ...

  5. Windows活动目录_票据——敬请期待!

    票据:域控&域机子之间的信任密钥 [缺省40天更换一次] 域用户登录过程 域用户的账户密码(用信任密钥加密的)传递至域控: 域控验证账户密码成功后,构造域用户SID和组SID(用信任密钥加密的 ...

  6. C语言爱心表白程序

    #include <stdio.h> #include <math.h> #include <windows.h> #include <tchar.h> ...

  7. 15行python代码实现人脸识别

    方法一:face_recognition import cv2 import face_recognition img_path = "C:/Users/CJK/Desktop/1.jpg& ...

  8. 八、指定节点pod运行在固定节点

    指定pod运行在固定节点 一.指定固定节点:Pod.spec.nodeName Pod.spec.nodeName 将 Pod 直接调度到指定的 Node 节点上,会跳过 Scheduler 的调度策 ...

  9. pod(五):pod hook(pod钩子)和优雅的关闭nginx pod

    目录 一.系统环境 二.前言 三.pod hook(pod钩子) 四.如何优雅的关闭nginx pod 一.系统环境 服务器版本 docker软件版本 Kubernetes(k8s)集群版本 CPU架 ...

  10. Pyserial 学习

    # 连接串口 ser = serial.Serial("COM12", 115200, timeout=0.5, bytesize=8, parity=serial.PARITY_ ...