分享

教大家恢复应用层钩子(恢复HOOK API)(附代码)

 豫龙晏子 2017-02-16

应用层钩子,对于懂编程的人来说应该都了解。他用HOOK API的方式使程序无法正常调用该API!

如果我们一定要用这个API来达到我们的目的呢?只能恢复此 API HOOK!

下面我们开始教程:

准备工具 : XT(网络自行下载),为了方便测试 我自己写了一个 HOOK LoadLibaryExW的小程序

1.打开测试程序,打开XT,点击XT的应用层钩子---选择进程钩子---点击测试程序进程名--右键---检测

教大家恢复应用层钩子(恢复HOOK API)(附代码)

2.点击 API钩子---右键---恢复。即可恢复此钩子,使API能正常调用!

教大家恢复应用层钩子(恢复HOOK API)(附代码)

我们虽然恢复了,但是利用工具来恢复终究不是王道,怎么用编程写出来呢?

1.首先我们来获取API的头部内存地址(类似CE查找API,我以前的教程有介绍):

我们用这两个API来获取地址:

nt = GetModuleHandle('ntdll.dll')

dizhi = Hex(GetProcAddress(nt, 'NtOpenProcess'))

2.我们获取内存地址(也就是dizhi)然后用 WriteProcessMemory 这个API 来写入数值:88 FF 55 8B EC(XT获取的挂钩处原始值)

代码如下:

gamebase = Val('&H' & dizhi)

ReadProcessMemory 进程句柄, ByVal gamebase, 136, 1, 0& ''''注意88为16进制,需要转换为十进制也就是136,,下面一样!

ReadProcessMemory 进程句柄, ByVal CLng(gamebase + 1), 255, 1, 0&

ReadProcessMemory 进程句柄, ByVal CLng(gamebase + 2), 85, 1, 0&

ReadProcessMemory 进程句柄, ByVal CLng(gamebase + 3), 139, 1, 0&

ReadProcessMemory 进程句柄, ByVal CLng(gamebase + 4),236, 1, 0&

这样我们就用代码恢复了API HOOK 是不是很简单呢?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多