.NET反混淆神器de4dot使用介绍

news2024/10/2 22:30:47

最近在逛看雪时,发现一个帖子,[原创]常见语言基础逆向方法合集-软件逆向-看雪-安全社区|安全招聘|kanxue.com。里面介绍 了常见语言基础逆向方法合集。关于.net程序逆向这块,介绍了三个工具。

.NET Reflector  .NET Decompiler: Decompile Any .NET Code | .NET Reflector (反编译任何 .NET 代码,即使没有源代码)

dnspy GitHub - dnSpy/dnSpy: .NET debugger and assembly editor (.NET 程序集调试器和资源编辑器)

de4dot (.NET 反混淆和脱壳工具) 目前.NET程序加壳这一块我还没涉及到,所以本文只介绍反混淆相关的功能。

在经过初次尝试以后,发现这个工具确实强大,虽然被混淆后的代码不能完成恢复成原来的样子(像变量名这种已经丢失了),但基本不影响阅读源码了。 

de4dot最后更新是在3年前,不继续更新了,有点可惜。技术影响力太大了,有时候也不是什么好事,就挺无奈的。

1、下载源码编译

项目地址:GitHub - de4dot/de4dot: .NET deobfuscator and unpacker.

这里有两个解决方案文件,一个是基于.NET Core的(de4dot.netcore.sln),一个是基于.NET Framework的(de4dot.netframework.sln)

如果使用.net core版本,需要安装netcoreapp3.1和netcoreapp2.1

如果使用.net framework版本,需要安装net 35和net45

我这里直接编译的.net framework版本,没有编译.net core版本了。

注意:

如果选择.net framework版本建议使用Visual Studio 2019及以下版本编译,因为Visual Studio 2022不带.NET Framework 4.5的包,直接编译会报错,还得折腾在Visual Studio 2022下安装NET45的开发包。(同理,新版本vs也没带.net core 2.1)

不过这里还是整理了在Visual Studio 2022下安装NET 45的解决方案,可以参考以下链接:

https://ldqk.xyz/73?t=vl40kuee4phc

https://blog.walterlv.com/post/how-to-support-net45-on-vs2022-or-later.html

具体我也没有去尝试,因为我用另外一台机器上的Visual Studio 2019编译通过了

不用修改任何设置,直接可以编译通过,输出路径为解决方案路径下的Debug目录

2、如何反混淆.NET 程序集

最简单粗暴的方式,

1、将文件拖入到de4dot.exe运行即可

2、命令行下输入

1 de4dot.exe "D:\xxx.exe"

运行后文件在程序集的目录下生成一个带-cleaned的新程序集。

也可以通过 -f 和-o 参数,指定输出 路径

-f : 指定.NET 程序集文件

-o : 指定输出 文件

1 de4dot.exe file1 -f "D:\xxx.exe" -o "D:\output\xxx_cleaned.exe"

这里我准备了一个程序集测试,我先用某混淆工具进行混淆,使用.NET Reflector反编译显示如下:

使用de4dot反混淆后

3、反混淆整个文件夹

-r  xxx : 指定输入文件夹,包括子文件夹

-ru : 跳过不支持的混淆工具混淆过的文件

-ro : 指定输出文件夹

1 de4dot -r "D:\input" -ru -ro "D:\output"

4、检测混淆工具名称

可以通过 -d 参数查看

1 de4dot.exe -f "D:\a\xxx.exe" -d

输出为:

1 de4dot v3.1.41592.3405
2 
3 Detected Dotfuscator (D:\a\xxx.exe)

如果使用 -r ,则输出 整个文件夹里全部文件使用的混淆工具名称

5、指定混淆工具名称

de4dot可能检测不准确混淆工具的名称,可以通过 -p 参数指定

1 de4dot file1.dll -p sa

de4dot中支持的完整的混淆工具简写可以在不带参数运行时的界面上看到

6、其它用法

可以在不带参数运行时,看到全部参数及说明,或者通过项目主页上的README.md了解更详细的使用说明。我这里基本已经能满足使用需求,所以也就不再进行深一步的探讨了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++中string类常用函数的用法介绍

在C中,string是一个功能强大的类,用于处理和操作文本数据。它属于C标准库中的字符串库部分,专门用于处理字符串。与传统的C风格字符串相比,它提供了动态内存管理、类型安全和丰富的操作方法。 目录 一、构造和初始化 二、获取字…

算法训练,项目

一.木材加工 题解: 二分答案,左边0,右边可以为最长的木头,但我直接赋值了一个很大的值,进行二分,随后写个check;内部遍历木头截取为mid木块的个数,要是>k,满足要求,还…

【时时三省】(C语言基础)一维数组

山不在高,有仙则名。水不在深,有龙则灵。 ——csdn时时三省 数组 数组就是一组数 数组的官方定义是一组相同类型元素的集合 一堆数组的创建和初始化 求组的创建 数组是一组相同类型元素的集合。数组的创建当时是: type_t arr&#x…

【JavaEE】定时器

目录 前言 什么是定时器 如何使用java中的定时器 实现计时器 实现MyTimeTask类 Time类中存储任务的数据结构 实现Timer中的schedule方法 实现MyTimer中的构造方法 处理构造方法中出现的线程安全问题 完整代码 考虑在限时等待wait中能否用sleep替换 能否用PriorityBlo…

Linux网络——深入理解 epoll

目录 一、epoll 模型 1.1 前导知识 1.1.1 宏 offsetof 1.1.2 手动计算 1.2 epoll 模型 二、 epoll 工作模式 2.1 水平触发 特点: 2.2 边缘触发 特点: 边缘触发模式中的循环读取 结合非阻塞模式的优势 一、epoll 模型 经过了之前的学习&#…

什么是容器查询?分享 1 段优质 CSS 代码片段!

本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿! 大家好,我是大澈! 本文约 700 字,整篇阅读约需 1 分钟。 今天分享一段优质 CSS 代码片段,使用容器查询…

【算法设计题】实现以字符串形式输入的简单表达式求值,第2题(C/C++)

目录 第2题 实现以字符串形式输入的简单表达式求值 得分点(必背) 题解 1. 初始化和变量定义 2. 获取第一个数字并存入队列 3. 遍历表达式字符串,处理运算符和数字 4. 初始化 count 并处理加减法运算 代码详解 🌈 嗨&#xf…

你还在为PDF文件烦恼吗?试试这四款合并工具吧!

每天应对工作都是一个头两个大的,其中pdf的文件问题就是恼人的工作量之一了,这几年的工作经历下来也找了各种可以帮助解决PDF文件问题的工具,好在使用了一些助力我高效工作的软件,今天针对其中遇到的解决pdf合并问题的四款宝藏工具…

当Vercel的域名验证规则碰上JPDirect这种不配合的同学把我的脑袋擦出了火星子

文章目录 前言问题简单说明Vercel主要功能和特点 JPDirectNameServers解决方案 总结 前言 处理域名转移这件事已经过去好几天,终于抽出点时间来总结一下,解决这件事大概花了2周多时间,因为时差的原因导致沟通缓慢,今天准备长话短…

【leetcode】平衡二叉树、对称二叉树、二叉树的层序遍历(广度优先遍历)(详解)

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构、LeetCode专栏 📚本系…

Zookeeper未授权访问漏洞

Zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。Zookeeper的默认开放端口是2181。Zookeeper安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者…

通信原理实验——PCM编译码

PCM编译码 实验目的 理解PCM编译码原理及PCM编译码性能熟悉PCM编译码专用集成芯片的功能和使用方法及各种时钟关系熟悉语音数字化技术的主要指标及测量方法 主要仪器设备及软件 硬件:多功能实验箱、示波器、导线 软件:无 实验原理 1. 抽样信号的量…

锅总浅析SRE

SRE简介 SRE(Site Reliability Engineering,站点可靠性工程)是由Google开发的一种运维理念和实践方法,其核心思想是用软件工程的方式来管理和运维系统,以提高系统的可靠性、效率和可扩展性。 SRE的核心理念 自动化&…

【Slf4j】项目中使用 slf4j 的好处

前言 背景 项目依赖了三方包,三方包有日志打印的代码。需要将三方包的日志打出来。问题 是怎么做到项目的日志格式和依赖中的日志格式保持一致的?结论 查阅资料后,发现是 slf4j 帮忙做了桥接。这里做下记录。 实验 starter 依赖 log4j主项…

【全网最全】2024年第五届“华数杯”全国大学生数学建模竞赛完整思路解析+代码+论文

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

常见的MySQL数据库面试题

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 总结一下mysql中常…

【最新】精选8家优秀大学生AI论文写作网站

在当前的学术环境中,AI论文写作平台为大学生提供了极大的便利和高效性。以下是8家优秀的AI论文写作网站推荐: 一、千笔-AIPassPaPer 千笔-AIPassPaPer是一款AI原创论文写作平台,能够在10分钟内产出3万字的内容,并提供真实网络数据…

广州城市信息模型(CIM)白皮书学习

CIM平台定义 以建筑信息模型(BIM)、地理信息系统(GIS)、物联网(IoT)等技术为基础,整合城市地上地下、室内室外、历史现状未来多维多尺度信息模型数据和城市感知数据,构建起三维数字空间的城市信息有机综合体。 广州CIM平台建设历程 2019 年 6 月住房和…

关于手机中的红外遥控

在手机电路中,有这么不起眼的一部分,虽看似简单,但是却给我们的生活在一定程度上带来了极大的便捷-红外遥控部分。 其置于手机顶部,并在壳体处挖开一个小孔,用于红外信号对外界的传递。如果你感兴趣的话,不…

【时时三省】unity test 测试框架 使用 code blocks 移植(核心文件:unity.c)

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 目录 1,使用 Code::Blocks 17.12 创建工程 2,移植文件至该工程下: 移入的文件为: 被移入的文件介绍: 更改代码: 向工程添加文…