博客已经成功切换为 Wordpress! My blog has been switched to Wordpress!

【易语言】HOOK指令概念及运用

编程分享 edwardfang 7年前 (2011-08-31) 380次浏览 7个评论

我们平时写程序时,比如读HP,MP,都会用一个时钟设定周期去读,然后判断值再进行相应的操作。但是利用时钟反复的读取非常占用系统资源,如果时钟设慢了又达不到想要的效果。在这种情况下HOOK指令就可以达到非常好的效果了。

.HOOK原理

我们经常会去搜索到一个血值,然后CE查找访问,找到类似Mov edx,eax的代码。Mov指令就是赋值指令,将EAX的值赋给EDX,所以这里EAX就是我们想要获取到的血值。那如何达到HOOK的目的呢?很简单,我们在自己程序内写一个接收EAX参数的子程序,那么只要Push eax,再Call我们的子程序地址上去,我们的子程序就能接收到EAX的值,并进行相应的处理,处理完后再转回原汇编继续运行。可以说我们获得血值的时间比显示血值的时间更早,并且又避免了时钟反复的进行无用功。

顺便提一句,如果子程序中EAX用传址方式传参的话,还能修改EAX的值然后返回。

.实际运用

这里我写了一个类似血值变化的小程序。当我们按“变”后,Value的值就会变化,并且下面那个编辑框显示读取到的值。我们跟着HOOK的原理一步一步往下做。

点击查看原图

由于字数太多 就不在博客里打了 放在 word 文档中 源码也打包上来!

新手教学 —— HOOK 指令概念及运用.zip 

HOOK 指令源码.zip


回味依旧 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【易语言】HOOK 指令概念及运用
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(7)个小伙伴在吐槽
  1. 博主您好,感谢您这篇文章。但我只搜到了百度文库里的这篇文章,且后面的例子模糊不清,能否请您给一个能够看到整篇清晰文章的方式。您说的附件和文件我在本页面没有找到。
    larfa2014-05-26 00:41 回复
    • @larfa:附件已添加 谢谢提醒
      • @↗℡ 浮华 青春:感谢!学习尝试下,有不懂的地方再向您求助,还望博主赐教。
        larfa2014-05-26 21:08 回复
        • @larfa:额 担当不起啊 当时我也只是对此感兴趣从一个技术论坛转载过来的 不过那论坛现在似乎没了
  2. 这个也是类似的 要用到CE调用的 根据教程一步一步来吧 方法差不多的//@QQ651619598:求解下 怎么打开我想要的网址后,在浏览器单击鼠标左键 实现快照的功能,用到的hook不太懂
    ↗℡浮华青春2012-02-26 11:08 回复
    • @↗℡浮华青春:用SPY++看下单击消息监控 就有, HOOK不同于CE CE的那个绘图HOOK只是运用的HOOK技术 内存等修改 是另一种技术
      戲子2013-04-29 21:51 回复
  3. 求解下 怎么打开我想要的网址后,在浏览器单击鼠标左键 实现快照的功能,用到的hook不太懂
    QQ6516195982012-02-25 17:22 回复