dot net程序逆向工程基本方法
最近对一个dot net程序进行了逆向工程,修改了部分资源和功能。
为了备忘,特记录如下文.
1、确定其开发语言
- 不同语言逆向工具不同,后续选择何种调试工具
- 使用PEiD
2、确定其是否“加壳”、代码混淆
- 都是反调试的手段,后续选择去壳工具
- 使用DotNet Id
3、工具脱壳
- 使用De4dot
- de4dot.exe -r c:\my\files -ro c:\my\output
4、代码静态反汇编
- 使用.NET Reflector
- 分析代码逻辑,找到待修改处
5、代码修改
使用.NET Reflector插件
- Reflexil.Reflector.AIO.dll:修改代码
- Reflector.BamlViewer.dll:修改资源
直接修改IL文件
- 微软自带IL 反汇编程序 (ildasm)
6、编译回可执行程序
- 使用微软自带IL 反汇编程序(ilasm)
- 使用.NET Reflector反汇编验证修改结果
- 直接运行看效果
7、小结
- 逆向方法、流程和工具使用
- 开发语言、平台架构
- 其他备用工具
- 文本编辑器
- 字符转换工具
- 资源修改工具
- 耐心、清醒