aardio 文档
process.apiHook 库模块帮助文档
process 成员列表 #
process.apiHook #
在外部32位进程内安装 API 函数钩子,
作用仅仅是安装,需要要用 C,或 C++ 写 32位 dll 钩子。
可以在 aardio 中通过远程 API 调用钩子 DLL 中的函数。
具体用法可参考 process.ruffle 扩展库源码。
进程内钩子请改用 thread.apiHook,
线程内钩子请改用 raw.apiHook
创建 API Hook 工具
process.apiHook() #
返回对象:processApihookObject
process.apiHook(执行文件,命令行参数,{suspended=true}) #
运行执行文件或关联文档,并返回 API Hook 安装工具。
启动后暂停进程,可在安装钩子以后调用 resume() 函数继续运行进程
process.apiHook(执行文件,命令行参数,启动参数) #
运行执行文件或关联文档,并返回 API Hook 安装工具。
也可以仅指定第二个参数运行纯命令行
启动参数为 process.STARTUPINFO 结构体,可选,
可以使用普通table对象替代启动参数.将自动转换为STARTUPINFO结构体
process.apiHook(进程ID) #
使用进程 ID 打开进程,并返回 API Hook 安装工具。
失败则返回 null,以及错误信息.
processApihookObject 成员列表 #
processApihookObject.freeLibrary(模块地址) #
卸载DLL
processApihookObject.getProcAddress(模块地址,"API函数名") #
查找外部进程API函数,返回函数地址
processApihookObject.install("拦截DLL模块名","拦截API函数名","钩子模块名","钩子API函数名") #
安装钩子,返回HookInfo对象
也可以直接写拦截函数地址或钩子函数地址,
但函数地址必须是目标进程内的函数地址,不可使用aardio函数,
注意是在目标进程内调用LoadLibrary搜索DLL,
默认搜索路径包含目标EXE所在目录,而非当前EXE所在目录
但以斜杠开头的路径aardio会在当前进程中解析为完整路径
processApihookObject.install() #
返回对象:procssHookInfoObject
processApihookObject.loadLibrary("DLL模块名") #
在目标进程中加载DLL,返回数值类型句柄
processApihookObject.process #
进程对象,
返回对象:processObject
processApihookObject.resume() #
继续运行进程
processApihookObject.unInstall(HookInfo) #
卸载钩子,
传入参数必须是 install函数的返回值
要注意的问题:
1、如果钩子函数正在回调中卸载自身会导致目标进程崩溃,
1、卸载钩子时目标函数不能正在使用中,
aardio会先暂停目标进程主线程,卸载完再恢复,
但目标进程可能是多线程的,请避免目标函数正在被调用时去释放
processApihookObject.unInstallAll() #
释放所有钩子,
该函数会在对象回收时自动调用
如果不希望在进程关闭时卸载钩子,请将此函数赋值为null
procssHookInfoObject 成员列表 #
procssHookInfoObject.addrHookFunction #
钩子函数地址
procssHookInfoObject.addrProtect #
函数内存保护属性
procssHookInfoObject.addrTargetFunction #
被拦截函数地址
procssHookInfoObject.addrTrampoline #
用于调用原函数的跳板地址
procssHookInfoObject.hHookModule #
钩子模块地址
procssHookInfoObject.hModule #
被拦截模块地址
procssHookInfoObject.restoreOpCodeSize #
安装钩子覆盖指令长度
Markdown 格式