不闻不若闻之|

butt3rf1y

园龄:8个月粉丝:1关注:1

一次简单的脱壳

涉及:ESP 定律

例:https://files.cnblogs.com/files/blogs/824994/Magic_Shell.zip?t=1724993084&download=true

x64dbg 打开 -> 符号 -> magic_shell.exe

下断点

F9 运行到 EP

单步过 push,能看见 RSP 的值变红

根据 ESP 定律,下硬件断点


F9 跳转后在最近的 jmp 跳转下断点

运行到断点处 F7 步入

这个位置就是 OEP,使用插件 Scylla dump 出就可以了

ESP 定律
ESP 定律的本质在于利用堆栈的平衡原理。在程序中,当执行函数调用时,会使用栈来保存函数的返回地址和局部变量。当函数执行完成时,栈中的数据将被弹出并恢复到调用函数之前的状态。这个过程涉及到两个关键的指令:callret。call 指令会将下一条指令的地址压入栈中,以便在函数执行完成时能够返回;而 ret 指令则会将栈顶的地址弹出并跳转到这个地址,从而完成函数调用的返回操作。

一般流程:当单步执行时只有 ESP(RSP)变红,变红就是值发生改变,因此找到 ESP 所指向的内存位置,下硬件断点,F9 运行到停下的位置,接着一般有一处跳转,完成跳转之后的地方就是 OEP。

适用范围:几乎全部的压缩壳,部分加密壳。

posted @   butt3rf1y  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起