某C#桌面软件逆向过程

.NET
691
0
0
2022-10-16
标签   C#

一、背景

以下工具下载地址:down.52pojie.cn

最近在使用论坛的一款软件,修改文件内容,效果不错,但是这个软件不能实现批量操作文件,每次修改文件需要一个一个的填写文件路径,然后再点击确定让程序自己运行,效率还是比较低的,所以,我决定尝试着把它改造一下。

二、查壳

这里我使用了两种查壳工具:

  • Peid
  • 查壳
  • 使用这个工具查壳以后,显示的是无壳,但是凭借经验,我还是觉得有必要再使用其他工具检测一下
  • ExeInfoPe
  • 使用ExeInfoPe,发现软件的确加壳了,使用的是Eingma打包工具自带的壳,找到了壳,我就准备落实一下它。

三、脱壳

eingma是一个打包工具,可以将多个依赖全部打包到一个单一的exe文件中
1、内存Dump

这里我使用的Dump工具:

  • MegaDumper
  • 首先,运行这款软件,完整操作一遍它的功能,然后打开MegaDumper,找到我们这款软件的进程,在内存中把这个exe程序dump到指定的目录中。
2、修复软件

这里我使用的修复工具:

  • UniversalFixer
  • dump出来的程序无法直接反编译,打开UniversalFixer,然后将dump出来的目录中的exe拖入软件,点击Fix Assemly修复程序集即可。
四、反编译

这里使用的反编译工具:

  • de4net
  • dnspy

反编译后的代码是被混淆过的,但是不影响断点调试,直接修改功能保存即可:

五、注意

如果dnSpy运行软件显示缺少某个dll依赖,需要自己去手动去网上下载依赖,然后把它放到项目目录中,在dnSpy中手动添加依赖即可。