挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运寻找会做《单机》游戏修改器的开发作者长期合作,价格不是问题!联系QQ:1874088565
IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██.
.. .
查看: 4192|回复: 6
打印 上一主题 下一主题

[图文教程] 教程APIHOOK(图)

[复制链接]
3正式会员
174/300

174

积分

41

主题

6

听众
已帮网友解决0 个问题
好评
-1
贡献
133
海币
2440
交易币
0
跳转到指定楼层
楼主
发表于 2017-4-20 09:54:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


API  API是指一个DLL链接库中对外揭露的子程序函数.如上节写入用的钩子DLL 钩子DLL接口 这个子程序即是 揭露 的揭露特点.有揭露特点的DLL函数才干被其它外部的程序调用.到达拓展 程序的功用.
虽然各种高档言语都供给林林总总的库函数给程序员运用。削减程序员去声明某DLL的一些API函数费事,但这些高档言语编出来的EXE或DLL文件,终究仍是得去调用操作体系中的那些API函数功用.
体系的一些常用的DLL的API函数,其功用,构造,参数,返回值基本上都是一样的,也即是说XP与2003里的同一个DLL中同一个API函数, 通常都是一样的,只需极少数的会被调整改动过。而这些API都是微软已界说的,若想运用体系中这些API功用,就必需得依照微软所设定的标准去调用。
本节讲的主题是去阻拦一个软件调用一个API功用时所传递的参数还有返回值等的技能.这种技能被称为HOOKAPI。阻拦API的功用不论是在 规划还有其它的各种旁门技能中是常用的。能够阻拦对API调用的技能有许多,这儿只讲其间两种.

输入表 或称导入表,函数导入表等,英文名IAT表.用户编写的程序,许多功用终究都将调用体系的API。调用的进程通常是
用户代码 → 输入表 → API函数
输入表中保存着某需求被引证的API在进程内存中的地址,这种地址被称为函数进口.当用户代码需求调用某API时,在输入表中找到该API的函数进口,然后会转到该进口处往下履行API函数代码。
假如,咱们在程序的输入表中找到那个API的进口地址,把该进口地址修正为咱们自已所编的一个子程序,终究当用户代码从输入表中查找那个API地址 调用时,会调用咱们的子程序,而不是那个API。。此刻若咱们的子程序的参数和返回值的规划与那个API是一样的话,就能得到用户调用那个API时的一切 参数数据,到达一种监督接收作用。

下面来规划一个程序,该程序运用上面的钩子DLL技能,把一个DLL文件刺进方针程序。
在DLL中规划一个能够修正IAT输入表中某个API地址的功用。
这儿咱们要演示的是阻拦 gdi32.dll 这个DLL文件中的 SetTextColor API函数,该API是用来操控显现的文本内容字体色彩.
有关这个API的声明格局还有参数与返回值等构造能够参阅 Win32API 方面的文档,引荐咱们看 新编Windows32 API 参阅大全 这个电子书.
gdi32.dll 中的API函数 SetTextColor 阐明.
有关这个 SetTextColor 在VBAPI文档中的声明格局,该API在 gdi32.dll 中,该DLL是体系DLL文件.
SetTextColor 共有两个整数型参数,一个整数型返回值
VB言语里的 long 数据类型是4字节长,等于易言语里的整数型.
这个VBAPI文档咱们能够在网上下载到,别的也能够去下载易言语网站上的那个 易用API 软件.
也能够在易言语 菜单->东西->履行易导游->API帮手.exe 里找到这个API的声明格局
易导游里的 API帮手.exe 程序
先规划一个EXE程序,把DLL写入进方针程序里.由该DLL中完成阻拦 SetTextColor 的功用.
EXE代码.用装置钩子DLL()来写入
钩子DLL代码.留意红框部份的代码.
在程序集变量或全局变量里,声明 类_APIHOOK 这个功用.以后就能够进行装置IATHOOK了,需求留意装置IATHOOK时的API称号大小写要准确.
由于IATHOOK,一次装置后直到该进程被停止前会一向有用.所以只需求在退出时再康复就行了.
见 SetTextColor接口 这个子程序要与API的参数,返回值等一样,在这儿能够处理截获的参数,与供给返回值.
注,在装置了IATHOOK功用以后,在不需求该HOOK时需求调用康复IATHOOK,别的,在DLL退出时,也一定要调用康复IATHOOK,否则的话,在钩子DLL卸载时会发生非法操作或内存格局过错等意外的……
IATHOOK比如运转作用图.把计算器上的显现的字体都变成了赤色.
装置钩子DLL写入到方针进程空间后,会进行IATHOOK阻拦SetTextColor这个API函数的调用,该API函数的作坊是设置文本前景色,即文本色彩.阻拦到该API调用时,把前景色彩替换为 赤色.
下面再介绍第二种方法,APIHOOK.
上面是在IAT输入表中修正其API地点的内存地址进行阻拦,但有些时候,程序在调用API时并不一定经过IAT输入表。程序能够在运转进程中动态的去获取指定API在内存中的地址,然后去调用,这么的话,运用IATHOOK也就落空了。
很显然,不论程序代码是不是会经过IAT输入表,但其终究仍是得从那个API在内存的地址处履行。假如用IAT阻拦不到的 话,那么,咱们能够在那个API地点的内存地址处,用机器码修正其进口前几字节进行强行跳转到咱们自界说的子程序去。只需跳到了咱们的子程序里就能得到程 序调用该API时所传递过去的参数了。。
下面有个测验程序.exe
测验程序.exe 每秒会更改一次修正框中的值.
关于易言语来说,运用 修正框1.内容=“????????” 就能把一些文本数据设置到修正框上显现出来,看似对修正框控件的内容特点进行赋值,事实上,程序正在悄悄的调用了 SetWindowTextA 这个API把文本内容设置到修正框里的。
本节的比如,是在 SetWindowTextA 的内存进口处,修正,使程序在调用该API时会被强行跳转到咱们自界说的子程序上。这么咱们的子程序就能得到原程序调用该API函数时所传递过去的参数内容
SetWindowTextA 这个API原VB声明的格局
该API在VB中的声明格局,作用是能够设置某个窗口的标题或一个控件的内容特点.
该API共有两个参数与一个整数型返回值
参数一是整数型,指定要设置的那个窗口句柄
参数二是文本型,要设置到参数一所指定的那个窗口的标题内容文本.
下面编写一个EXE与DLL.把该DLL写入进测验程序里,阻拦 SetWindowTextA 这个API并进行相应的改变.
钩子DLL的代码.
当DLL被写入到方针进程时就装置APIHOOK进行阻拦指定的DLL中的指定API调用
在DLL退出时要记得把该APIHOOK进行康复.
本例要阻拦的这个API功用是给指定的窗口或控件设置标题内容用的.共有两个参数与一返回值
上面的 SetWindowText接口 子程序,把阻拦到的参数二内容后边再加上些自界说的文本内容
然后先进行康复这个APIHOOK,再去调用体系中的这个API,完成后,再次加载该APIHOOK功用.
最终把原体系API调用后的返回值返回给原程序调用方.
这是钩子DLL的源代码,留意,这儿运用了 康复APIHOOK 与 加载APIHOOK
原来在指定的API进口处运用了HOOK,所以在咱们自已若要再调用该API的话,就得先康复这个APIHOOK后才干调用该API……在调用以后,能够运用 加载APIHOOK,使该HOOK能够持续工作
在DLL卸载退出时牢记一定要调用 康复APIHOOK,把一切已装置的APIHOOK全卸载掉。
运转作用.
点击下载本节源代码
留意,通常情况下,若运用IATHOOK能完成意图,则不要再运用APIHOOK..由于IATHOOK不需求重复的康复与重复的加载稳定与功率上有长处.




联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:教搭建自己的验证平台
下一篇:找基址其实很简单(图文教程)
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

4中级会员
514/600

514

积分

1

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
513
海币
5
交易币
0
沙发
发表于 2017-4-20 18:18:25 | 只看该作者
以前看帖从不回帖,后来发现, 这样不但会用掉我的海币, 而且还不厚道。

1

积分

0

主题

6

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
20
交易币
0
板凳
发表于 2017-4-25 16:08:23 | 只看该作者
以前看帖从不回帖,后来发现, 这样不但会用掉我的海币, 而且还不厚道。

0

积分

0

主题

6

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
24
交易币
0
地板
发表于 2017-4-28 23:17:48 | 只看该作者
以表达我对楼主的谢意, 把帖子顶起来

1

积分

0

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
29
交易币
0
5#
发表于 2017-9-16 21:14:22 | 只看该作者
以表达我对楼主的谢意, 把帖子顶起来

1

积分

0

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
65
交易币
0
6#
发表于 2019-2-9 15:52:49 | 只看该作者
以前看帖从不回帖,后来发现, 这样不但会用掉我的海币, 而且还不厚道。
回复 支持 反对

使用道具 举报

0

积分

22

主题

3

听众
已帮网友解决0 个问题
好评
-1
贡献
-22
海币
106
交易币
0
7#
发表于 2020-7-16 12:20:43 | 只看该作者

以前看帖从不回帖,后来发现, 这样不但会用掉我的海币, 而且还不厚道。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-5 18:59 , Processed in 0.111180 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表