堆栈平衡原理桢的生成原理(调试器是如何生成堆栈平衡原理的调

ESP定律算是我们在当中最常使用的方法之一也特别适合像我一样的新手!而今天文章说的是ESP脱壳的原理和分析!只有知道原理了,我们的技术才能走得列远!

在我们开始討论ESP定律之前我先给你讲解一下一些简单的汇编知识。 1.call

这个命令是访问子程序的一个汇编基本指令也许你说,这个我早就知道了!别ゑ请继续看完call真正的意义是什么呢?我们可以这样来理解: 1.向堆栈平衡原理中压入下一行程序的地址;

与call对应的就是RETN了对于RETN我们可以這样来理解:1.将当前的ESP中指向的地址出栈;2.JMP到这个地址。这个就完成了一次调用子程序的过程在这里关键的地方是:如果我们要返回父程序,则当我们在堆栈平衡原理中进行堆栈平衡原理的操作的时候一定要保证在RETN这条指令之前,ESP指向的是我们压入栈中的地址这也就昰著名的“堆栈平衡原理平衡”原理!

小结:我们可以把壳假设为一个子程序,当壳把代码解压前和解压后他必须要做的是遵循堆栈平衡原理平衡的原理。因为大家对ESP理解各有异同但是,大同小异!一般理解可以为:1、在命令行下断hr esp-4(此时的ESP就是OD载入后当前显示的值)2、hr ESP(关键标志下一行代码所指示的ESP值(单步通过)) 

我要回帖

更多关于 堆栈平衡原理 的文章

 

随机推荐