我爱辅助论坛

 找回密码
 【点我注册】

QQ登录

只需一步,快速开始

查看: 1120|回复: 4

API简略普及教程

[复制链接]

签到天数: 8 天

[LV.3]偶尔看看II

发表于 2015-8-25 01:08:32 | 显示全部楼层 |阅读模式
1.API是什么?
API是一个缩略名词,原词为Application Programing Interface (应用程序编程接口)。它们是操作系统定义的各类可供调用的函数,它们存于DLL文件中,DLL也是一个缩略词,原词为Dynamic Link Library (动态链接库)。

2.API能做什么?
API既然是操作系统定义的,自然功能强大,举例来说,精易模块、超级模块等著名模块均只采用了易语言自带的支持库+API完成。那么光阴就用FindWindowA来举个例子演示一下:你只知道一个程序的标题,想获取到它的句柄,怎么办?易语言明显没有相关命令。这时候就可以用到FindWindowA了。首先声明dll命令,在易语言左侧dll命令中定义。然后使用FindWindowA("","程序标题")即可获取到它的句柄。

3.API如何在易语言中使用?
在2中,光阴提到了声明dll命令,但并未细说。那么到底怎么声明呢?打开易语言,找到左侧工作夹,选择"程序"选项卡,即可看见一个"Dll命令"的项目。双击进入。会打开一个"DLL命令定义表",右键,新DLL命令或Ctrl + N,会出现一个"Dll命令1",只需按照官方要求填写相应数据即可。

4.API的灵活应用。
只知道上述内容显然不够。我们还要学会灵活应用API。这里光阴将给大家以写内存为例说明。
首先,要找到相关的API函数,可以自行百度,如果安装了VS,内置帮助文档。
OpenProcess
WriteProcessMemory
CloseHandle

.版本 2

.DLL命令 OpenProcess, 整数型, "kernel32", "OpenProcess", , 将句柄返回给过程对象。
    .参数 dwDesiredAccess, 整数型,  , 一般填写 2035711
    .参数 bInheritHandle, 整数型,  , 0
    .参数 dwProcessId, 整数型,  , 进程ID

.DLL命令 WriteProcessMemory, 逻辑型, "kernel32.dll", "WriteProcessMemory", ,
    .参数 hProcess, 整数型,  ,
    .参数 lpBaseAddress, 整数型,  ,
    .参数 lpBuffer, 整数型,  ,
    .参数 nSize, 整数型,  ,
    .参数 lpNumberOfBytesWritten, 整数型,  ,

.DLL命令 CloseHandle, 逻辑型, "Kernel32", "CloseHandle", , 关闭打开的对象句柄
    .参数 hObject, 整数型,  , 要关闭的对象句柄

以上是DLL声明,可直接复制。

可以看到,WriteProcessMemory的所有参数包括lpBuffer都是整型的。那么看到模块里繁复的"写字节集()、写整数()、写小数()…………",这是怎么做到的?其实,lpBuffer的参数三是可以修改数据类型的。那么下面写个"写字节"为例吧。(相应WriteProcessMemory的参数也要修改,文字不便,你们自行修改,就当作业了。)

.子程序 内存写字节, 逻辑型, 公开,
.参数 pid, 整数型, , 进程ID
.参数 address, 整数型, , 内存地址
.参数 data, 字节型, , 写入数据
.局部变量 h, 整数型
.局部变量 a, 整数型

h = OpenProcess (2035711, 0, pid) ' 2035711是一个系统常量,其名为PROCESS_ALL_ACCESS
a = WriteProcessMemory (h, address, data, 1, 0)
CloseHandle (h)

.如果 (a = 0)
    返回 (假)
.否则
    返回 (真)
.如果结束


可以看到这里的WriteProcessMemory是用于字节型的。
实战中,很多API都是如此,一些可能还包括你没见过的数据类型——需要声明自定义数据类型,个人要注意观察,实验。


好了,教程结束,还望勿喷,这篇简短而浅显的教程旨在让更多人了解API,不致望而却步,而非深入学习API。
如有指教,敬请回帖反馈。
温馨提示:为了保护系统安全,使用辅助前,请务必使用影子系统。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

签到天数: 415 天

[LV.9]以坛为家II

发表于 2015-8-25 05:16:52 | 显示全部楼层
你可不要告诉我你是手打的,全部

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 106 天

[LV.6]常住居民II

发表于 2015-8-25 07:34:38 | 显示全部楼层
这比装的清新脱俗!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 8 天

[LV.3]偶尔看看II

 楼主| 发表于 2015-8-25 13:28:34 来自手机 | 显示全部楼层
丨恶魔丨 发表于 2015-8-25 05:16
你可不要告诉我你是手打的,全部

额,确实是手打的

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 56 天

[LV.5]常住居民I

发表于 2015-8-25 14:08:29 | 显示全部楼层
然而支持一下........

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 【点我注册】

本版积分规则

QQ|小黑屋|我爱辅助 ( 辽ICP备19006053号-1 )

GMT+8, 2025-8-3 00:48 , Processed in 0.044380 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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