知识大全 Delphi中包的妙用
Posted 函数
篇首语:你今天的日积月累,早晚会成为别人的望尘莫及。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi中包的妙用相关的知识,希望对你有一定的参考价值。
Delphi中包的妙用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
自动化测试框架的基础是钩子 也就是常说的HOOK机制 但这在实际的应用过程中可能会遇到一些问题
一旦要做钩子 那么就必须获取函数地址 由于我原先设计的钩子的目标函数 都是Delphi的内部函数 也就是说 这些函数在编译之后 很难找到
当然了 也是有几种方式可以找到的
将代码植入到系统中 编译的时候可以直接找到
编译的时候 带上Map文件 可以通过Map找到函数地址 测试框架以Dll的方式远程注入
Delphi中的包 可以公布这些函数的地址
前两种方式 有一个最大的缺点 在于必须为自动化测试 特别编译一个版本 虽然说可以接受 但显然不是最好的方案 第三种方案虽然好 但是前提是系统必须构建在带包编译的基础上
幸好 我们目前的测试的系统就具备这样的条件
那么 对于自动化测试框架来说 只需要随意作为一个Dll 并注入到原系统中就可以了 如果原系统提供了注入的扩展 那是最好 因为这样调试起来很方便 否则就做成远程注入 不过调试的时候只能Attach了 很麻烦
这个时候 只需要将包含自动化测试框架代码的测试用例代码 对VCL的包 带包编译 就可以做到对包中函数的HOOK了 不过这里面还是有一些细节需要注意的 原先我用的是FastCode的HOOK代码 但是在代表编译的时候就失效了 经过追查 发现代表编译和非带包编译的代码不一样 由于VCL的代码 编译到了包中 那么本Dll在调用包中的方法的时候 加上了跳转指令 简单的就是一个call操作 在包装载的时候 call后的地址会更新
经过一些探索 发现中国的cnPack()中早就针对这个问题有了解决方案 其实方法也很简单 就是判断一下是否存在地址跳转 如果有的话 就取跳转后的地址 否则取当前地址
完成了钩子后 我们就会发现 在我的测试用例的Dll中 对Bpl中的方法 进行了HOOK 请注意 这里面有一个选择 就是在Dll内部HOOK 还是在Bpl内部HOOK 在Dll内部HOOK 只需要修改跳转地址即可 钩子的方法很简单 在Bpl中HOOK 则需要修改函数代码的前 个字节 这种方法复杂 但是使得入口单一 一处修改 全面有效
自动化测试框架 就是选用的后者的HOOK方法 这样 我们在Dll中 对Bpl中的方法进行了HOOK 所有带着此包编译的DLL或者EXE 都会受到影响 而这也正是我们想要的
cha138/Article/program/Delphi/201311/24672相关参考
能量潮指标OBV的妙用有哪些?能量潮指标OBV的妙用。1OBV主要用于选股以及跟庄股用,不相符交易参考。2OBV在弱势市集的使用代价高,在强势市集的使用代价有限,这主若是原因强庄股的能力主要在弱势中体
“对牛弹琴”是大家很熟悉的成语。在奶牛挤奶时播放音乐以提高产奶量,过去也曾作为笑话流传过。而今,它却是举世公认而且广泛采用的饲养手段了。只不过,作为一种现代化的饲养
120分钟KDJ的买点妙用防止主力做骗线的指标是:120分钟KDJKDJ指标是经典指标之一,有的朋友肯定会说,这个指标常被人做骗线,对,你说对了,常被主力做骗线的不止KDJ还有MACD,还有主图的K线
“经济稳定”的要素中包括_____。A、物价稳定B、财政收入增长C、国际收支平衡D、充分就业答案:ACD解析:经济稳定通常是指要实现充分就业、物价稳定以及国际收支平衡。除此之外,经济稳定还包括保持经济
现代科学分析表明,茶含有丰富的维生素、氨基酸、无机盐,还有茶多酚、咖啡碱等五百多种成分,其中很多成分是益于人体健康的营养或保健成分。因此,茶叶具有清热解毒、消暑利尿、生津止渴、提神醒脑的作用。现代医学
妙用JavaScript实现网页的任意缩放 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 现在网
MAND、RSI、W%R、KDJ、DMI、OBV以及BIAS等,这是乾龙软件和宏汇软件上常用的指标,也是市场投资者做技术分析的主要指标工具,这些都有着不同的相应适用技巧,但也均有不同程度的差异,不是滞
肥皂不仅可以洗涤抹布、窗帘、窗纱等用品,而且还有其他功用,如:旋螺丝钉之前,将螺丝钉头在肥皂上点一下,便很容易地旋进木头中。液化气减压阀口,有时皮管很难塞进去,如在阀口涂点肥皂,皮管就很容易塞进去了。
1、水霉病。对苗、种水霉病,用0.4%的盐水浸洗10~15分钟或用食盐和小苏打的混合液(二者的浓度均为0.03%)浸洗病鱼;对鲤鱼、鲫鱼卵水霉病,用5%食盐水每天浸泡一次,每次5分钟。 2、寄生虫鱼
1、水霉病。对苗、种水霉病,用0.4%的盐水浸洗10~15分钟或用食盐和小苏打的混合液(二者的浓度均为0.03%)浸洗病鱼;对鲤鱼、鲫鱼卵水霉病,用5%食盐水每天浸泡一次,每次5分钟。 2、寄生虫鱼