API HOOK让窗口无法关闭

易语言 2020-07-05 14:45:00

Library = LoadLibraryA (“user32.dll”) ' 得到user32.dll的实例句柄
_源函数地址 = GetProcAddress (Library, “DestroyWindow”) ' 取出 DestroyWindow 函数的地址 DestroyWindow函数在user32.dll中,因为这个dll被加载进我们程序的内存了,可以用这个API获取
调试输出 (_源函数地址)
_目标地址 = 到整数 (&_DestroyWindow) - _源函数地址 - 5 ' 直接填 到整数 (&_DestroyWindow) 会出错 反汇编你会发现 地址不正确
_asm = { 233 } + 到字节集 (_目标地址)
' 内存.置属性 (, )
handle = 进程_打开1 (进程_取自进程ID ())
调试输出 (handle)
调试输出 (内存.置属性 (handle, _源函数地址, 4)) ' 修改内存属性 本来的属性是可运行和可读,现在改为可读 可写 可运行
调试输出 (内存.写字节集 (进程_取自进程ID (), _源函数地址, _asm)) ' 把'DestroyWindow' 函数入口前5字节改为 jmp 我的们的函数