为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 编程开发 查看内容

.Net反编译技术详解及4个反编译工具介绍

2018-6-15 13:21| 投稿: xiaotiger |来自: 互联网

摘要: Net反编译技术详解及4个反编译工具介绍什么是反编译?高级语言源程序经过编译变成可执行文件,反编译就是逆过程。即通过技术手段将可执行文件还原成源代码。此文讲解如何将.net(c#、F#、vb.net)编写的可执行文件还原 ...

Net反编译技术详解及4个反编译工具介绍

什么是反编译?

高级语言源程序经过编译变成可执行文件,反编译就是逆过程。即通过技术手段将可执行文件还原成源代码。此文讲解如何将.net(c#、F#、vb.net)编写的可执行文件还原成c#代码。

了解.net(c#)的编译过程

C#源代码经过编译器的编译之后,变成MSIL微软中间语言。其实也就是一个可执行文件,也可以叫做程序集(.exe文件)。

注意:不是所有的exe文件都叫程序集,这个文件是由微软中间语言组成的才叫程序集。

当程序被执行时,微软中间语言(程序集)将被CLR翻译成平台对应的CPU指令,然后交给CPU执行。

注意:CPU的指令并不是相同的,不同平台的CPU指令可能有比较大的区别。如:Intel和AMD在开机或者关机的时候Intel可能为111 而AMD可能为000。不同型号的CPU指令也可能有区别。如:四核和双核。

C#代码的编译过程如下图所示:

c#反编译过程:

反编译过程即将.net 程序集转换成IL中间语言,然后再将IL转为c#代码。还原率接近90%。

反编译工具介绍:

说到.net 反编译工具,很多人第一反应都是Reflector这款神器。但是我呢认为这是个垃圾软件,为什么呢,因为他收费啊,而且没有什么特别出众的功能,所以本文不加以介绍。本文主要介绍ILSpy、dnSpy、JetBrains和Telerik JustDecompile以及可直接修改程序集的reflexil插件和脱壳反混淆的de4Dot插件。

文本的示例程序:

特意用c#写了一个checkMe程序,用来展示说明以下各个工具的功能。程序很简单,一个登陆框,输入对的密码即可显示主窗体,显示一个“今日头条很伟大”的字样.

checkMe

1、ILSpy:

ILSpy是一个开源免费的.Net反编译软件,基于MIT许可证发布。作者在工作中使用最频繁的就是它。,ILSpy 是为了完全替代收费的Reflector而生,它是由 iCSharpCode 团队出品,这个团队开发了著名的 SharpDevelop 。ILSpy的使用和上面的Reflector完全类似,可以直接把dll、exe拖放到左侧,然后在右侧查看反编译以后的代码。

ilSpy

另外ILSpy支持插件,比如使用 Debugger插件可以进行调试,使用reflexil插件可以直接修改程序集。支持类、函数、变量、字符串等多种搜索。

以上的示例程序,使用ILSpy查找登陆密码如下:

ilSpy

2、dnSpy

dnSpy是近几年的新秀,功能远比ILSpy强大,甩Reflector几条街。被汉化、破解、逆向方面的人才奉为神器。软件自带调试和修改程序集的功能

dnSpy

dnsyp功能菜单

dnspy可直接调试修改程序集。可添加修改类、方法、变量等。可操作合并程序集、禁用内存映射。可在16进制编辑器中直接定位方法体、字段。也可以16进制编辑器中直接修改方法和字段。更多强大的功能亲们自己下载dnspy摸索体验一下

下面我们使用dnspy来调试一下我们刚刚的checkMe程序。选择checkme,点击转到入口点。

打一个断点:

然后点击启动,F10、F11可单步跟入

再测试下将主窗体显示的“今日头条很伟大”改成“dnspy很强大”。首先定位到相关代码,并点击编辑方法:

点击编译,然后保存模块

看下效果

3、JetBrains dotPeek

JetBrains是捷克的一家软件开发公司,出品了大量著名的开发工具,包括:IntelliJ IDEA、PHPStorm、ReSharper、TeamCity、YouTrack等等,每一款产品都如雷贯耳。dotPeek 是 JetBrains 开发的一款.Net反编译工具,是.Net工具套件中的一个相比于前面几款工具来说,dotPeek算比较小众的一款,它生成的代码质量很高,它还会尝试到源代码服务器上抓取代码。DotPeek的导航功能和快捷键非常便捷。它还能精确查找符号的使用,同时支持插件。DotPeek不能与Visual Studio集成。个人感觉它最大的特色就是Visual Studio风格,这对于那些长期在Visual Studio下进行开发的人来说应该更亲切一点。

JetBrains dotPeek

4、Telerik JustDecompile

Telerik JustDecompile是一个免费的.NET反编译器,但是有商业化支持,和抢到的抓包软件Fiddler是一家公司的产品。它生成的代码质量也很高。它可以为反编译程序集得到的代码创建一个项目。JustDecompile提供了健壮的查找功能,能够支持全文查找和符号使用查找。它和ILSpy一样还有一个插件系统,目前在Telerik的网站上有两个可用的扩展。JustDecompile不能与Visual Studio集成。

Telerik JustDecompile

5、de4Dot和reflexil插件

de4dot是一款.net脱壳反混淆的软件,可独立运行,也可作为插件集成到ILSpy和JustDecompile中。支持以下混淆器种类:

  • Agile.NET (aka CliSecure)
  • Babel.NET
  • CodeFort
  • CodeVeil
  • CodeWall
  • CryptoObfuscator
  • DeepSea Obfuscator
  • Dotfuscator
  • .NET Reactor
  • Eazfuscator.NET
  • Goliath.NET
  • ILProtector
  • MaxtoCode
  • MPRESS
  • Rummage
  • Skater.NET
  • SmartAssembly
  • Spices.Net
  • Xenocode

由于我的checkMe没有进行混淆,这里无法直观演示这个功能,只上一个图吧

JustDecompile的de4dot插件

reflexil是一款修改程序集的插件,支持修改IL代码和编辑函数。它同样可以集成到ILSpy和JustDecompile中。

下图演示,使用JustDecompile的reflexil插件,讲我们的checkme程序主窗体的文字“ dstrdnSpy很强大”修改为“请关注技术囧途自媒体”

定位到相关代码,然后点击插件->reflexil

reflexil插件

找到文字,点击右键Edit

保存程序集

下面看下效果

希望大家能多多关注,有不懂的地方可以随时私信问我,都会耐心解答。找不到软件下载链接的也可以私信和我要,文章里不能写链接。


小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部