易语言 如何获得一个EXE或者DLL内所使用到的API? 200
2个回答
展开全部
PI是指一个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 参考大全》这个电子书.
尽管各种高级语言都提供各式各样的库函数给程序员使用。减少程序员去声明某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 参考大全》这个电子书.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询