在上一篇中我们介绍了如何使用XenoCode来加密程序,接下来我们将对加密后的程序进行逆向解密.
1.工具准备:WinDbg(源码级调试工具),可以点击这里下载.
2.运行上一篇中生成的WpfEventViewer_Builded.exe,打开系统任务管理器,
我们看到WpfEventViewer_Builded.exe运行后的2个进程.其中一个是.Net程序进程(WpfEventViewer.exe).
另一个是Xenocode进程(WpfEventViewer_Builded.exe).
3.运行windbg_cn.exe
按F6或从菜单栏--"文件"--"附加到进程(T)...", 如图,选择.Net程序进程(WpfEventViewer.exe)
看需要选择是或否.这里选择了否.
4.Dump过程
在命令窗口输入以下语句.
.loadby sos mscorwks
紧接着输入:
!DumpDomain
命令运行后结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Assembly: 002c7468 [C:\Test\Soft\WpfEventViewer.exe]
ClassLoader: 002c74d8
SecurityDescriptor: 002a5b40
Module Name
01652c5c C:\Test\Soft\WpfEventViewer.exe
...
Assembly: 002e8508 [C:\Test\Soft\WpfEventViewer.Controls.dll]
ClassLoader: 002e8578
SecurityDescriptor: 002a62b0
Module Name
016581bc C:\Test\Soft\WpfEventViewer.Controls.dll
...
|
从得到的结果我们看到了.真正的WpfEventViewer.exe进程的模块代码为:01652c5c
而其引用的类库WpfEventViewer.Controls.dll的模块代码为:016581bc
5.导出文件.
接下来就导出该模块.
先在C盘建个Dump文件夹,然后在Windbg的窗口输入:
!SaveModule 01652c5c C:\Dump\WpfEventViewer.exe.exe
再到Dump文件夹查看,看到了吧,原来的167KB的程序文件被还原出来了.
按照同样的方法将Skins.dll还原出来.
!SaveModule 016581bc C:\Dump\WpfEventViewer.Controls.dll
如此,本实例的2个文件就都被还原出来了.我们是看看能不能正常运行...看到了吧.是可以正常运行的.
再把他们拉入Reflector.看,这时候,他们是能被Reflector查看的.但部分源码被混淆的厉害.
至此,关于那个啥的反编译介绍到这里就结束了.如果大家有什么好的心得都可以拿出来分享哈~
本文来自piz菜的博客,原文地址:http://www.cnblogs.com/pizcai/archive/2010/11/24/1886979.html