问题标签 [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.
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 将数据写入磁盘?
我很困惑。请帮忙。
winapi - VirtualProtect 是否需要一些特权
我正在尝试实现 IAT 挂钩。我在 dll 中编写了 IAT 部分,并使用 CreateRemoteThread 在 exe 中编写了注入部分。我在注入 dll 后发现,IAT 部分中的 VirtualProtect 函数总是抛出一个 ERROR_INVALID_PRAMETER,即使我使用刚刚从 VirtualQuery 返回的值传递参数。我不知道发生了什么。VirtualProtect 是否需要一些我没有的特权?
这是错误部分:
我在 C# 中的注入部分是这样的:
.net - API Hooking,在 TerminateProcess 函数上发现意外句柄
问题
我已经挂钩TerminateProcess调用以识别正在终止的进程,但是我得到了一个意外的句柄TerminateProcess
,它与我尝试拦截的真实进程句柄不匹配。
我正在使用Deviare库,但我认为只要知道TerminateProcess
函数的工作原理以及执行正确的句柄比较需要做什么,这个问题就可以解决。
问题:
如果我知道要识别其终止的进程的句柄,我如何从函数的hProcess
参数中识别该句柄TerminateProcess
?
代码:
请注意我尝试比较句柄的部分:
它永远不会是相同的句柄(我也尝试过MainWindowHandle
和Process ID ID
)
所以,hProcess
参数的值对我来说是非常未知的。
研究:
我一直在阅读TerminateProcess的 MSDN 文档。
注意它说的部分:
句柄必须具有 PROCESS_TERMINATE 访问权限
我不确定我是否错过了比较手柄的东西。
我也一直在这里阅读,但我没有明确表示:
挂钩 TerminateProcess 并从它提供的句柄中获取信息
如果有必要进行良好的句柄比较,我还设计了这个枚举:
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 下使用什么?
dll - 劫持 DLL 文件
我正在尝试了解 DLL Hijacking。如果我要创建一个包含两个函数的 DLL 文件;加减法,比如说这叫做maths.dll。现在我创建了一个加载math.dll的程序,这样我就可以加减法了。
然后我用可以乘法和除法的新 DLL 文件劫持原始 dll 文件,但我还必须实现被劫持的 DLL 的两个原始函数,这些函数出于某种原因是未知的。如何通过原始 DLL 传递调用,以便程序仍然可以加载原始的 DLL 文件。
即便如此,我怎样才能将钩子注入我的代码中,以便我可以使用我新发现的乘法和除法函数?
如果所有这些都是胡说八道并且我试图追究这个错误,请阐明这个主题,因为我不太熟悉它。
c++ - 使用 API Hooking“访问冲突写入位置 0x0000000000”的反 dll 注入
当在我的程序中调用LdrLoadDll api时,我正在使用 JMP 指令技术尝试绕道进行反 Dll 注入。我找到了一个完美运行的 Delphi 代码,但是这个代码的 VC++ 2013 版本崩溃了
“访问冲突写入位置 0x0000000000”
如下所示。
那么,我该如何解决这个麻烦呢?有人可以帮助我吗?
提前致谢。
德尔福版本:
尝试翻译 VC++ 2013 版本:
c++ - 弯路:防止通过另一个软件杀死我的软件的任务
我找到了一个代码,它承诺拦截和绕过对该TerminateProcess
函数的调用,从而防止我的软件直接被其他程序杀死。
但是这段代码不起作用,我仍然可以通过其他程序终止我的进程。
这是我在此 YouTube 视频中找到的代码的最后一次尝试:
PS:victim.exe 是杀手级程序。
动态链接库
注射器
有人可以帮助我,告诉我哪里出错了吗?
我的系统是 Windows 7 Ultimate 64 位。
提前致谢。
windows - 如何在 Windows 7 中监视上下文切换?
如何在 windows 7 中使用内核驱动程序或 API 挂钩监视进程/线程上下文切换?我想在进程(例如,Internet Explorer)在上下文切换时进入恢复/挂起状态时记录寄存器值。
delphi - 绕过屏幕捕获上的 IAT 挂钩
我最近开始研究api hook方法,现在我的主要研究对象是IAT hook方法,这是因为我发现了一个安全应用程序,其中只有这种hook方法用于防止间谍软件。
然后,在这个安全应用程序中存在的几个资源之间,有屏幕捕获锁定,通常导致白屏捕获,这是因为 IAT 钩子方法已经在表上覆盖了指向原始函数的地址,为“假函数” " 包含锁定屏幕捕获的代码。
所以,我在网上阅读了很多关于 IAT 钩子的内容,并找到了两个网站,其中说绕过这个钩子方法的方法是:
iC0de.org对 IAT 挂钩源代码的回答。
和
MalwareTech在一段文字中解释了 IAT 钩子。
对我来说需要注意的绕过方法是使用GetProcAddress
函数获取原始函数的真实地址。
因此,仅出于教学目的,我想知道如何GetProcAdress
在下面实现此屏幕捕获功能,并最终绕过此安全应用程序中实现的 IAT 钩子:
欢迎任何建议。
python - 覆盖/替换/MITM/API Hook winapi.DeleteFile
抱歉,如果之前有人问过这个问题,我真的找不到任何与此相关的信息。
我将首先陈述这个假设:当您在 Windows PC 上删除文件时,win32api.DeleteFile
会调用该函数。
假设您有一个程序/脚本/函数等,securley 会删除此文件,例如 microsoft's cipher.exe
,是否可以“覆盖”本机删除方法并使用您自己的?大意是任何操作系统删除都会调用您自己的函数。我的目标是能够在 python 中做到这一点,但任何语言都可以接受(我猜是 C++)。
如果不清楚,请告诉我,我会尽力澄清。
再次感谢,stackoverflow!