.net应用软件程序及核心dll反编译还原实例

.net反编译 dll反编译 项目还原

某国外系统应用程序A基于.net4.0开发,经检测未加壳,该软件引用4个非公开dll文件以实现功能。现欲将其可执行程序及相关dll文件反编译,还原成VS2010项目源文件以研究和测试其逻辑实现方式。

由于文件未加壳,因此可直接查看到相关代码。首先反编译可执行程序,将代码输出成文件后建立vs项目。加载时由于项目缺失版本信息,VS2010将提示升级项目,升级完成并加载后,在VS中的资源管理器中显示如下(部分截图):

net反编译

其中,Properties文件夹及代码是与程序属性设置相关的信息,并非程序逻辑代码。另外还可以看到有较多resx格式的程序资源文件,这些文件与程序的窗体代码本是一一对应的,正常的结构应该窗体代码、设计视图、资源文件代码对应统一,由于这里输出的代码并不存在设计视图,因此暂时无法对应起来,但是设计视图虽然不存在相关文件,但是相关的信息却并没有丢失,而是以程序的形式存在于窗体代码中,其中包括完整的控件定义及属性设置,因此可以将其反编译还原出来。

这里使用的是我工作室自行开发的风影代码重构工具自动还原.net项目代码和文件,如图所示:

代码重构工具

经反编译还原后的项目可以直接在vs中打开并在视图状态下编辑,如图所示:

dll反编译

至此,就可以在源文件基础上对项目进行可视化编辑及功能的修改了。不过由于反编译过程的不确定性,其中可能会存在若干代码跳转问题,控件定义问题等,那就需要分析代码然后手工修改了。

(注:本文为 [风影网络工作室] 原创文章,未经书面许可,严禁转载和复制本站的任何信息,违者必究)