易语言 如何获得一个EXE或者DLL内所使用到的API? 200

 我来答
lilei3386
2013-03-10 · TA获得超过6228个赞
知道大有可为答主
回答量:4543
采纳率:50%
帮助的人:4075万
展开全部

一个程序使用到的api太多了,不只是你在程序代码里面写的那些,程序自动调用的api远远超过你写的api调用,真的要看就用OllyDebug。

用OllyDebug打开exe以后,右击汇编代码区-》查找-》所有模块间的调用。

缩小范围,你自己写的调用api有可能在字符串中出现,右击汇编代码区-》超级字符串参考-》查找ascII码

xY521Z
2013-03-17 · TA获得超过111个赞
知道答主
回答量:39
采纳率:0%
帮助的人:21.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 参考大全》这个电子书.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式