.DLL命令 CallWindowProcA, 整数型, , "CallWindowProcA"
.参数 动态调用代码, 字节集, , 一定要用本人编写的
.参数 子程序, 整数型, , 子程序指针
.参数 参数, 整数型, 数组, 为整数数组,参数1为成员1…类推;文本型和字节集型(自定义结构)为指针
.参数 参数数目, 整数型, , 一定要和参数数组相符,不然会出错
.参数 是否C调用, 逻辑型, , 真为cdecl调用方式,假为stdcall调用方式(即标准WINAPI方式)
.如果真 (pFunAddress ≠ 0)
返回 (真)
.如果真结束
hLibModule = LoadLibraryA (动态链接库路径)
.如果真 (hLibModule = 0)
返回 (假)
.如果真结束
pFunAddress = GetProcAddress (hLibModule, 欲截获的函数名) ' 获取API函数地址
.如果真 (pFunAddress = 0)
FreeLibrary (hLibModule)
返回 (假)
.如果真结束
.如果真 (VirtualProtect (pFunAddress, 5, #PAGE_EXECUTE_READWRITE, dwOldProtect) = 假)
FreeLibrary (hLibModule)
返回 (假)
.如果真结束
pData = 指针到字节集 (pFunAddress, 5) ' 保存API入口前5个字节
写到内存 ({ 233 } + 到字节集 (到整数 (新函数地址 - (pFunAddress + 5))), pFunAddress, 5) ' 修改API入口前5字节
pData = pData + { 233, 0, 0, 0, 0 }
addrData = 取字节集变量数据地址 (pData, pData, 0)
写到内存 (到整数 (pFunAddress + 5 - (addrData + 10)), addrData + 6, 4)
FreeLibrary (hLibModule)
下一篇 U盘屏锁软件无需繁琐操作