学习了解各种HOOK的DLL

易语言 2020-07-10 09:26:27

学习了解各种HOOK的DLL

ExceptionCode = 3
.如果真 (pAddress ≠ 0)
返回 (真)
.如果真结束
hLibModule = LoadLibrary (DllName) ' 加载库
.如果真 (hLibModule = 0)
返回 (假)
.如果真结束
pAddress = GetProcAddress (hLibModule, ApiName) ' 获取地址
.如果真 (pAddress = 0)
FreeLibrary (hLibModule)
返回 (假)
.如果真结束
Length = 0
.判断循环首 (Length < 5)
Length = Length + GetAsmLength (pAddress + Length)
.判断循环尾 ()
.如果真 (VirtualProtect (pAddress, Length, #PAGE_EXECUTE_READWRITE, dwOldAddress) = 假) ' 设置页保护
返回 (假)
.如果真结束
pData = 指针到字节集 (pAddress, Length) ' 取原地址下数据
写到内存 ({ 233 } + 到字节集 (到整数 (New_Addr - (pAddress + 5))) + 取重复字节集 (Length - 5, { 144 }), pAddress, Length) ' inline hook 函数头
pData = pData + { 233, 0, 0, 0, 0 }
addrData = GetByteAddress (pData)
写到内存 (到整数 (pAddress + Length - (addrData + Length + 5)), addrData + Length + 1, 4)