Crunch 5.0.0 压缩壳脱壳

前言:Crunch5.0.0 脱壳笔记

首先先进行查壳,如下图所示

将壳程序载入到调试器中,如下图所示

这里没看到可以利用的ESP定律,那么这里就可以尝试看看其他地方,比如日志中的异常信息是不是可以进行利用,如下图所示

当前EP是处于0x46B000的位置,这里看下区段是在哪个区段中,如下图所示,可以看到是在.edata区段

这里你可以看到日志中的异常信息,比如 INT 3中断是在0x46E88F,也是处于.edata区段,当前壳程序默认的代码段是在0x401000的位置

那么这里可以尝试先跟到最后一次异常的位置0x46E88F,先进行如下设置,如下图所示,把异常忽略都关了

通过shift+F9来进行跟,直到来到如下的位置0x46E88F

这里再给代码段下个访问断点,如下图所示

再次shift+F9来到OEP,如下所示

方法很多,看到其他文章其实也可以用ESP定律,如下特征所示,同样也可以来到OEP的位置

004271B0 55 PUSH EBP

接着进行转储运行,如下图所示

但是我发现如果放在其他系统上会有问题,调试器重新加载可以发现OEP已经变掉了,原本的话OEP应该是在004271B0的位置

这里观察下导入表的情况,如下图所示,可以看到导入表中的情况还是原来壳程序的情况

那么既然是原来的壳程序的情况,为什么在本地系统上还可以正常的运行呢?我不知道我理解的对不对,只谈个人的见解

你可以看到如下图中的INT表中的偏移值是存在的,INT表中不管是程序加载前还是加载后保存的都是DLL中函数名称的信息,那么此时操作系统在加载程序的时候,默认就会以INT表中的函数名称来填充IAT表中的函数地址,那么此时这几个函数地址对应的IAT表中的函数就已经填充完了,那么其他的函数的地址呢?一个程序肯定不止这些啊,其他的函数地址就是被原来的壳程序进行填充的,那么被填充的地址只能在当前的系统中运行,如果到了其他系统中的话,函数地址就不对,最终就会导致出错

所以这里我们还是可以通过importREC进行修复下,如下图所示

在其他系统下也可以正常运行,如下图所示

posted @   zpchcbd  阅读(151)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2020-03-10 内网渗透(四)
点击右上角即可分享
微信分享提示