逆向.NET程序常用的一些工具
1.dotPeek
- 官网地址:
https://www.jetbrains.com/decompiler/ - 是一个免费的.net逆向工具,可以将.net程序反汇编为等价的C#或者IL代码支持dll、exe、winmd文件的反汇编
- 由JetBrain出品,有较为良好的软件支持
2.Net Reflector
- 官方网址:
http://www.red-gate.com/products/dotnet-development/reflector/ - 拥有良好的用户体验和强大的插件功能以及完美的智能反编译能力,使用它不仅能看到反编译后的IL源码甚至能直接反编译出C#源码,而且和编写时的代码几无二致。
3.dnSpy
- 官网地址:https://github.com/0xd4d/dnSpy
- 是一个开源的.net调试器和汇编器
4.dotPeek逆向——两道CTF题
4.1.
dotPeek安装
4.1.1.
从官网下载安装程序,双击安装程序直接安装
4.1.2.
默认安装目录
C:\Users\你的用户名\AppData\Local\JetBrains
4.2.题一
4.2.1. 需要输入正确的账号密码
4.2.2. 将程序拉进dotPeek软件
4.2.3. 找到源码
4.2.4.
btnLogin、checkPassword() 等函数很可能与登录相关
4.2.5. 找到账号密码
4.2.6. 登录成功,出现flag
4.3.题二
4.3.1. 仅输入密码
4.3.2.将程序拉进dotPeek软件
App一般是初始化用的,我们一般关注MainWindow
4.3.3. 程序只有一个按钮,Button_click很有可能就是对应着这个按钮的
4.3.4.
通过源代码可以看出文本框输入不正确时会返回,
而输入正确时会弹出一个含有flag的MassageBox
4.3.5.
可以通过分析文本框中输入的字符
数组长度为5,
分别对应Letters数组中的Letters[5]、Letters[14]、Letters[13]、Letters[25]、Letters[24],即FONZY
4.3.6.输入密码,获取flag
4.3.7. 也可以直接破解MessageBox中的内容
与Letters[]数组一一对应,得到flag为FLAG{I_LOVE_FONZY}
5. .net总结
使用虚拟机的编程语言往往会面临比较严重的代码安全问题,.NET程序如果未经过适当的加密和保护,很容易被逆向人员还原出完整的程序逻辑。
可以看出.net程序逆向后,保存了比较完整的函数名等信息,也得出了比较完整的程序逻辑。