问题标签 [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 投票
3 回答
2625 浏览

javascript - 拦截javascript警报()..?可以接受吗?

我刚刚发现我们可以在实际执行之前拦截 javascript alert() 本机调用并挂钩用户代码。查看示例代码..

所以每次我调用 alert("aa") 时都会被我的 alertHook 本地函数拦截。但是下面的小改动实现不起作用。

它会引发Microsoft JScript 运行时错误:对象不支持此操作

我不知道这个.alert = alertHook; 让我拦截电话,但 alert=alertHook; 不是。??

所以我假设使用它来拦截任何本机 js 方法。?那正确吗?

这是可以接受的吗?因为这样我可以用我自己的方法完全替换任何本机 JS 调用??

更新:

我问这样可以接受吗?因为这是一个拥有 eval() 并让用户替换本机函数调用的好方法?

并且它保护开发人员免受误导性功能的语言的责任,在窗口级别(或在公共框架 js 文件中)替换本机 js 调用会使整个系统崩溃.. 不是吗?

我认为我可能错了,因为我不明白这个功能背后的原因..?我从来没有见过一种语言可以让开发人员替换自己的实现..

0 投票
2 回答
2965 浏览

delphi - 如何在 Delphi 中设置系统范围的 API 挂钩?

有谁知道系统范围的 API 与 Delphi 挂钩?

我下载了madCodeHook,但是它没有任何源,所以我不想使用它;我想自己编程。

在 Code Project 上找到了一篇文章,但它是用 C++ 编写的。请帮助我在 Delphi 2010 中编写它。

0 投票
1 回答
4442 浏览

c++ - COM 对象函数上的 API 挂钩?

问候 StackOverflowians,

正如在此处发现的那样,Windows 7 存在一个错误,在该错误中,Windows Explorer 实例不会触发 DISPID_BEFORENAVIGATE2 事件。此事件允许在导航即将发生时通知 shell 扩展,并且(对我来说最重要的是)有机会取消导航。很长一段时间以来,我一直在寻找一种解决方法,我想我找到了。但是,我想就它的安全性提出一些意见。

最近我一直在使用 API 挂钩,并且我已经在使用它为我的扩展挂钩一些函数。我注意到IShellBrowser中有一个控制导航的函数。起初我认为你不能挂钩这样的东西,但在阅读了 COM 对象的布局后,我意识到这应该可以通过从任何活动实例的 vtable 中获取正确的函数指针来实现。果然,它就像一场梦。设置钩子后,所有资源管理器窗口中的所有导航都直接通过我的 detour 函数运行,我可以根据它们的目标 pidl 决定是否拒绝它们。

所以我的问题是,有什么理由我不应该这样做吗?我从未听说过用于挂钩 COM 对象函数的 API 挂钩。有没有它不起作用的情况?危险吗?(至少比常规的 API 挂钩)

相关代码如下。我正在使用MinHook,这是一个简约的挂钩库,它使用了久经考验的蹦床函数方法。

0 投票
2 回答
5200 浏览

c# - 注册表监控,包括内核模式注册表访问?

我记得在我大学最后一年的项目中,我编写了一个 C# 注册表监视器,但是,当我将它与 Microsoft ProcessMonitor 应用程序进行比较时(我不记得它的确切名称,但它是一家被 MSoft 收购的公司),我没有捕获尽可能多的注册表调用.

这是因为我使用的是 C# 包装器,因此它只会捕获用户模式的注册表访问吗?

我使用了这个包装器:http: //www.codeproject.com/KB/DLL/EasyHook64.aspx

要捕获内核模式注册表访问,我必须用 C++ 编写吗?

0 投票
1 回答
7821 浏览

c# - SysInternal 的 ProcessMonitor 是如何工作的?

有人可以给我一个高级解释他们如何能够监控每一个注册表访问吗?

http://technet.microsoft.com/en-us/sysinternals/bb896645

足够详细,以便我可以围绕各种子主题搜索并尝试编写自己的子主题?我知道他们使用了某种 dll 注入/API 挂钩,但我不确定他们是如何达到所有内核模式活动的。

0 投票
2 回答
9550 浏览

c# - 从外部应用程序读取屏幕上的文本。API挂钩?

我有 Java 背景,所以在 C# 和 C++ 方面知识有限。基本上我正在尝试从屏幕上显示的另一个应用程序“读取”文本......

在此处输入图像描述

具体来说,我想阅读来自 Pokerstars 的发牌员聊天消息...即时...

将这段文本即时读入 Java 程序的最佳方法是什么?Ive 头关于 API 挂钩,这是唯一的方法,我将如何在 Java 中做到这一点?

谢谢菲尔

0 投票
1 回答
541 浏览

windows - 在 Windows 资源管理器列表视图中更改文件名颜色。

我想自定义 Windows 资源管理器。

如果文件有特殊条件,我想做的一件事是在列表视图中更改文件名的颜色。
是否可以通过窗口子类化?还是需要 api 挂钩?
请让我知道最好的方法是什么。

谢谢。

0 投票
2 回答
2075 浏览

c++ - 如何在不使用 CreateWindow(Ex) 的情况下创建窗口 (HWND)?

我正在使用代理 DLL 来拦截对CreateWindowExA/CreateWindowExW的调用。这很好用,除了一些应用程序(尤其是一些 Visual Basic 6 应用程序)似乎能够创建窗口而无需通过这两个函数中的任何一个。像Spy++这样的工具能够显示窗口,但我的钩子函数没有注意到它们。

我的第一个怀疑是,也许这些(旧)应用程序使用CreateWindowA/CreateWindowW来创建窗口,但至少对于我的编译器(MSVC6 到 MSVC10)来说,CreateWindow这只是一个#define;文档的备注部分证实了这一点。

我的第二个想法是我可以安装一个CBT hookusingSetWindowsHookEx来检测 Windows 的创建。然而,结果是一样的:这个钩子注意到与我的钩子 API 函数相同的窗口,但它没有注意到在 Spy++ 中可见的所有窗口。

所以我的问题是:可能有一段时间CreateWindowA/CreateWindowW不是#define,而是一个真正的函数?此功能是否仍由 导出user32.dll,也许是出于兼容性原因?我怎样才能得到这个函数的句柄来挂钩它?

或者是否有其他一些可能未记录的函数可用于创建函数,就像 egNtCreateProcess可以用来代替CreateProcess

0 投票
2 回答
770 浏览

c# - 在另一个过程中使用 Moles 的挂钩方法

我有一个用 Visual Studio 编译的 C# 应用程序。我想拦截并记录对该应用程序中某些特定方法的调用和序列化方法参数。是否可以拦截另一个进程中的方法调用(也许通过使用 App 域?)。有没有关于的文章/教程?

换句话说,我想在 .NET 中实现与 madCodeHook 和 Detours 对 win32 类似的目标。

谢谢

0 投票
3 回答
1419 浏览

c# - 如何在 C# 中知道选定的文件

我想开发一个软件。
该软件只会获取当前所选文件的路径。
假设我单击桌面上的文件。
现在我想获取这个文件的路径。
因此,每当进行新选择时,只需获取新选择文件的路径。
有任何想法吗?