Delphi在BASM中让“jmp proc”返回到下一行

时间:2015-08-31 03:58:00
【文件属性】:
文件名称:Delphi在BASM中让“jmp proc”返回到下一行
文件大小:10KB
文件格式:RAR
更新时间:2015-08-31 03:58:00
BASM Delphi源码 lelecode.com 其它类别 摘要:Delphi源码,其它类别,BASM   本示例用于演示如何在BASM中使得“jmp proc”执行后返回到下一行。      尽管使“jmp proc”执行后返回到下一行的方法很多,但要实现如下   两个目标却是比较难于做到的:    1. 不破坏栈结构,使proc()与当前函数有相同的入口参数(stdcall)    2. 代码通用,不需要每次都计算地址      这样的需求可能出现在使用raw hook技术实现的API拦截上。      本例实现了满足上述需求。但它同时导致一个严重问题:由于修改了栈   上的返回地址,因此事实上当前的JmpCall()过程在执行完并返回(ret)   时,将取得一个非确定的地址值。      这在本例中的直接后果就是:代码未尾的"readln;"一行将无法执行到。      要避免这个问题,应该使用一个内存地址来暂存“当前的”返回地址,   并在“jmp proc”之后修正堆栈。
【文件预览】:
Lelecode.com
----JmpCall_Demo()
--------说明.txt(2KB)
--------JmpCall_Demo.dpr(351B)
--------JmpCall_Demo.exe(16KB)

网友评论