文件名称: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)