前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

软件逆向:脱壳esp定律,以及原理

qiguaw 2025-01-13 17:09:46 资源文章 39 ℃ 0 评论

软件破解中经常用到ESP定律脱壳,什么是ESP定律,其原理又是什么呢。

前面我们提到了外壳扫描,用来确定可执行程序是什么语言编写的,运行依赖的cpu架构,以及是否有壳保护。

在反汇编和调试之前,我们首要任务就是脱壳,如果实在无法脱壳,只能进行带壳调试。

今天就来讲一讲如何脱upx这种压缩壳,这里就需要用到提及的ESP定律。

今天的案例是来自看雪论坛的《逆向分析 160个CrackMe五星052》,工具x64dbg。

0x01 ESP定律原理

首先来看一下OEP入口处代码,可以看到第一条指令是pushad。

这条命令对应的动作是把所有寄存器入栈,用来保存线程上线文环境,此条命令已经是upx还原原始代码的开始步骤了,接下来他会将代码还原至指定位置,然后popad还原线程上线文,然后去真正的OEP代码地址执行。

ESP定律就是利用了popad还原上下文寄存器这一动作。

0x02 ESP定律操作方法。

1. 当EIP停到OEP处,F8步过执行一步,此时ESP地址为红色,如下图


  1. 在红色地址处右键选择“Follow In Dump"
  1. 数据窗口处,ESP位置处,选中第一字节,右键下硬件访问断点。
  1. F9运行,直至触发硬件断点。取消硬件断点。
  1. F8走几步,跟踪到jmp处,jmp后就是OEP。


  1. OEP

找到了OEP接下来就是dump内存,和修复工作了。接下来的工作可以参考我的另一篇文章《x64dbg插件Scylla脱壳修复》。


#binge# #脱壳ESP定律# #黑客技术# #软件调试# #逆向工程# #软件破解# #比特艺术大师#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表