csjwaman 发表于 2022-6-17 14:43

“c# CrackMe 大佬来练练手!!! ”的简单脱壳过程

本帖最后由 csjwaman 于 2022-6-18 07:52 编辑

看到论坛上这个CrackMe,有的大佬分分秒秒就搞定了。

但除了jy04468108大大,其他人基本上没说具体的脱壳方法。

本人是NET脱壳的小白,花了几个小时总算也搞定了,将过程简单记录下,供和我一样的小白参考。

目标文件在:https://www.52pojie.cn/thread-1649380-1-1.html

脱壳过程:

将x64dbg设置成系统断点:



然后载入CrackMe.exe
下断:VirtualProtect用条件断点:RDX==0x6600



当RDX为0x6600时(koi模块的大小),后面就对koi模块的代码进行解密了。



断下后取消条件断点,改为普通断点,F9一次,断在:



此时,RCX==0x1BC45550178(基址可能不一样,但后面的0x178不会变)
接下去就要对文件头相关项进行擦除了。在文件头被擦除前保存模块。
在RCX上右键——》在内存布局中转到



在内存布局中,在地址0x1BC45550000上右键——》将内存转存到文件
保存为koi.exe



保存出来的文件是不能直接运行的。用dnSpy.exe查看一下
此时,代码还是混淆的:



用de4dot.exe去混淆后:



然后用ildasm.exe反编译,再修改IL文件,将所有与Confuser相关的代码全部删除,
重新编译成EXE文件,即可。重新编译后的文件只有8K大小。

csjwaman 发表于 2022-6-17 20:17

jy04468108 发表于 2022-6-17 20:13
不要乱说,我不是大大。。。不过你用x64dbg来脱.net壳,还是有创意。有空试试我前几天发的壳。

只有你说了脱壳方法,所以你是大大:lol

csjwaman 发表于 2022-6-18 17:54

jy04468108 发表于 2022-6-18 14:56
昨晚用你的方法复现成功了,请教下,你是如何知道当RDX=0x6600的时候这个6600是koi的大小,还有f9到下一次 ...

当RDX=0x6600的时候,我查看了该区段起始地址处,明显是一个PE头,所以猜测就是KOI了。F9到下一次断下时,RCX的值为PE头相关项位置,跟踪几步就可以发现相关项位置的数据被清零了。

Hmily 发表于 2022-6-17 16:05

最好贴一些分析的图片插入正文,这样文章看起来丰满一些。

csjwaman 发表于 2022-6-17 16:37

Hmily 发表于 2022-6-17 16:05
最好贴一些分析的图片插入正文,这样文章看起来丰满一些。

不会编辑,插不了图片{:1_896:}

hehaohw 发表于 2022-6-17 16:48

这个壳里面含有打包的DLL如何脱出来?

Hmily 发表于 2022-6-17 17:40

csjwaman 发表于 2022-6-17 16:37
不会编辑,插不了图片
看这里:https://www.52pojie.cn/misc.php? ... &id=29&messageid=36

帖子下方就有编辑按钮,找不到就在浏览器里安ctrl+F搜索。

csjwaman 发表于 2022-6-17 20:12

Hmily 发表于 2022-6-17 17:40
看这里:https://www.52pojie.cn/misc.php? ... &id=29&messageid=36

帖子下方就有编辑按钮,找不到就 ...

好的,下次发时注意。

csjwaman 发表于 2022-6-17 20:13

hehaohw 发表于 2022-6-17 16:48
这个壳里面含有打包的DLL如何脱出来?

没有试过。有目标软件吗?

jy04468108 发表于 2022-6-17 20:13

不要乱说,我不是大大。。。不过你用x64dbg来脱.net壳,还是有创意。有空试试我前几天发的壳。

Hmily 发表于 2022-6-17 23:44

csjwaman 发表于 2022-6-17 20:12
好的,下次发时注意。

不用下次,现在就可以操作。
页: [1] 2 3
查看完整版本: “c# CrackMe 大佬来练练手!!! ”的简单脱壳过程