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进行修复下,如下图所示
在其他系统下也可以正常运行,如下图所示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-03-10 内网渗透(四)