问题标签 [api-hook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
493 浏览

internet-explorer - InternetReadFile API 将读取的数据保存在哪里?

我正在尝试挂钩 API InternetReadFile 和 InternetWriteFile。InternetReadFile 从提供给它的句柄中读取数据(根据文档)。这些数据存储在哪里?在内存/RAM中?

InternetWriteFile 将数据写入打开的 Internet 文件(根据文档)。这是否意味着它将数据存储在磁盘中?也许在临时互联网文件文件夹中?

当我在 Hook_InternetReadFile 中调用 InternetQueryOption 函数(选项=INTERNET_OPTION_DATAFILE_NAME)时,它会在临时互联网文件文件夹中返回一个文件名。而从 Hook_InternetWriteFile 调用该函数时会失败,错误代码为 12028 (=ERROR_INTERNET_ITEM_NOT_FOUND)。这是否意味着 InternetReadFile 将数据写入磁盘?

我很困惑。请帮忙。

0 投票
1 回答
1266 浏览

winapi - VirtualProtect 是否需要一些特权

我正在尝试实现 IAT 挂钩。我在 dll 中编写了 IAT 部分,并使用 CreateRemoteThread 在 exe 中编写了注入部分。我在注入 dll 后发现,IAT 部分中的 VirtualProtect 函数总是抛出一个 ERROR_INVALID_PRAMETER,即使我使用刚刚从 VirtualQuery 返回的值传递参数。我不知道发生了什么。VirtualProtect 是否需要一些我没有的特权?

这是错误部分:

我在 C# 中的注入部分是这样的:

0 投票
1 回答
744 浏览

.net - API Hooking,在 TerminateProcess 函数上发现意外句柄

问题

我已经挂钩TerminateProcess调用以识别正在终止的进程,但是我得到了一个意外的句柄TerminateProcess,它与我尝试拦截的真实进程句柄不匹配。

我正在使用Deviare库,但我认为只要知道TerminateProcess函数的工作原理以及执行正确的句柄比较需要做什么,这个问题就可以解决。

问题:

如果我知道要识别其终止的进程的句柄,我如何从函数的hProcess参数中识别该句柄TerminateProcess

代码:

请注意我尝试比较句柄的部分:

它永远不会是相同的句柄(我也尝试过MainWindowHandleProcess ID ID

所以,hProcess参数的值对我来说是非常未知的。

研究:

我一直在阅读TerminateProcess的 MSDN 文档。

注意它说的部分:

句柄必须具有 PROCESS_TERMINATE 访问权限

我不确定我是否错过了比较手柄的东西。

我也一直在这里阅读,但我没有明确表示:

挂钩 TerminateProcess 并从它提供的句柄中获取信息

如果有必要进行良好的句柄比较,我还设计了这个枚举:

0 投票
0 回答
220 浏览

winapi - WSARecv 知道操作是否完成的方法

在我的应用程序(不是恶意软件)中,我通过挂钩 Windows API 调用来检查浏览器的网络流量。

在所有 Windows 版本的所有浏览器中都能正常工作...除了 Windows 10 下的 Internet Explorer 11。

问题是WSARecv返回WSA_IO_PENDING,但我没有使用任何已知的方法来获得有关操作完成的通知。

  • WSAOVERLAPPED::hEvent设置为 0。
  • lpCompletionRoutine也是0。
  • WSAGetOverlappedResult永远不会被调用。
  • GetQueuedCompletionStatus也不GetQueuedCompletionStatusEx叫也。
  • CreateThreadpoolIo不叫。

那么,IE11 在 Windows 10 下使用什么?

0 投票
1 回答
1002 浏览

dll - 劫持 DLL 文件

我正在尝试了解 DLL Hijacking。如果我要创建一个包含两个函数的 DLL 文件;加减法,比如说这叫做maths.dll。现在我创建了一个加载math.dll的程序,这样我就可以加减法了。

然后我用可以乘法和除法的新 DLL 文件劫持原始 dll 文件,但我还必须实现被劫持的 DLL 的两个原始函数,这些函数出于某种原因是未知的。如何通过原始 DLL 传递调用,以便程序仍然可以加载原始的 DLL 文件。

即便如此,我怎样才能将钩子注入我的代码中,以便我可以使用我新发现的乘法和除法函数?

如果所有这些都是胡说八道并且我试图追究这个错误,请阐明这个主题,因为我不太熟悉它。

0 投票
1 回答
1775 浏览

c++ - 使用 API Hooking“访问冲突写入位置 0x0000000000”的反 dll 注入

当在我的程序中调用LdrLoadDll api时,我正在使用 JMP 指令技术尝试绕道进行反 Dll 注入。我找到了一个完美运行的 Delphi 代码,但是这个代码的 VC++ 2013 版本崩溃了

“访问冲突写入位置 0x0000000000”

如下所示。

那么,我该如何解决这个麻烦呢?有人可以帮助我吗?

提前致谢。

德尔福版本:

尝试翻译 VC++ 2013 版本:

0 投票
1 回答
2286 浏览

c++ - 弯路:防止通过另一个软件杀死我的软件的任务

我找到了一个代码,它承诺拦截和绕过对该TerminateProcess函数的调用,从而防止我的软件直接被其他程序杀死。

但是这段代码不起作用,我仍然可以通过其他程序终止我的进程。

这是我在此 YouTube 视频中找到的代码的最后一次尝试:

PS:victim.exe 是杀手级程序。

动态链接库

注射器

有人可以帮助我,告诉我哪里出错了吗?

我的系统是 Windows 7 Ultimate 64 位。

提前致谢。

0 投票
1 回答
1130 浏览

windows - 如何在 Windows 7 中监视上下文切换?

如何在 windows 7 中使用内核驱动程序或 API 挂钩监视进程/线程上下文切换?我想在进程(例如,Internet Explorer)在上下文切换时进入恢复/挂起状态时记录寄存器值。

0 投票
1 回答
1197 浏览

delphi - 绕过屏幕捕获上的 IAT 挂钩

我最近开始研究api hook方法,现在我的主要研究对象是IAT hook方法,这是因为我发现了一个安全应用程序,其中只有这种hook方法用于防止间谍软件。

然后,在这个安全应用程序中存在的几个资源之间,有屏幕捕获锁定,通常导致白屏捕获,这是因为 IAT 钩子方法已经在表上覆盖了指向原始函数的地址,为“假函数” " 包含锁定屏幕捕获的代码。

所以,我在网上阅读了很多关于 IAT 钩子的内容,并找到了两个网站,其中说绕过这个钩子方法的方法是:

iC0de.org对 IAT 挂钩源代码的回答。

MalwareTech在一段文字中解释了 IAT 钩子。

对我来说需要注意的绕过方法是使用GetProcAddress函数获取原始函数的真实地址。

因此,仅出于教学目的,我想知道如何GetProcAdress在下面实现此屏幕捕获功能,并最终绕过此安全应用程序中实现的 IAT 钩子:

欢迎任何建议。

0 投票
0 回答
270 浏览

python - 覆盖/替换/MITM/API Hook winapi.DeleteFile

抱歉,如果之前有人问过这个问题,我真的找不到任何与此相关的信息。

我将首先陈述这个假设:当您在 Windows PC 上删除文件时,win32api.DeleteFile会调用该函数。

假设您有一个程序/脚本/函数等,securley 会删除此文件,例如 microsoft's cipher.exe,是否可以“覆盖”本机删除方法并使用您自己的?大意是任何操作系统删除都会调用您自己的函数。我的目标是能够在 python 中做到这一点,但任何语言都可以接受(我猜是 C++)。

如果不清楚,请告诉我,我会尽力澄清。

再次感谢,stackoverflow!