问题标签 [apimonitor]

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 投票
2 回答
154 浏览

c# - 从缓冲区读取显示无法识别的(中文)字符

我正在做一个P/InvokeonNtdll.dll!NtWriteFile并且在阅读 Buffer(PVOID)时,我得到了无法识别的字符。我尝试了不同的编码,没有任何变化。我还在使用 API Monitor 监控流程,Rohitab因此我看到了我正在尝试检索的正确值。有人遇到这个问题吗?

输出示例:

笍^稌ƭ덾塾畿浽ꭼɿ굺ꥻꥻ Āጀ'℀

萰퓶픊 缊<縌੾葿缱댥뙾퍿Ϳ큾靾≿

缌縌ϲ抿⹿筿偿᱿㽿豿缊f縌ϲ橿⹿筿偿᱿㽿ꅿ왿ѿ豿豿缷舆ⴀᣢ</p>

0 投票
3 回答
1272 浏览

sockets - 如何在 IE11 中正确挂钩 WSARecv

我目前正在开发一个项目,该项目需要在 IE 中挂钩 TCP send 和 recv API 以监控 TCP 数据。它在 IE9 和 IE10 上运行良好。但它停止在 IE11 上工作。经过一番研究,我发现 IE11 使用 WSASend 和 WSARecv 来发送和接收数据。所以我决定挂钩 WSASend 和 WSARecv。

WSARecv 是一个重叠操作。有 3 种方法可以获得重叠操作的结果。当使用重叠操作时,它们要么具有关联的事件、完成例程,要么与 I/O 完成端口关联。我在IE11调用WSARec时检查了重叠结构,发现事件和完成例程都是NULL,所以我假设IE11使用IO完成端口来获取重叠操作的结果。

问题是 IE11 永远不会调用 GetQueuedCompletionStatus 或 GetQueuedCompletionStatusEx。我使用 API 监视器或直接挂钩这两个函数,从来没有看到这两个函数被调用。我不知道 IE11 是否使用不同的 API 集来获取 WSARec 的结果。我想知道是否有人遇到过类似的问题。我应该挂钩哪个 API?如果有替代方法可以实现相同的目标。基本上我想做的是在 IE11 中监控 TCP 数据。

0 投票
2 回答
4866 浏览

smartcard - WinScard SCardConnect 返回 SCARD_E_NOT_READY

我有一个 Java 程序,它使用 javax.smartcardio.* 成功地与带有智能卡读卡器的 Java 智能卡通信。通过 API 监视器,我发现运行它的 java.exe 女巫实际上是在使用 WinSCard winAPI(它在我开始通信的那一刻加载了 winscard.dll。我还没有设法找到我们的实际调用)

我的问题是我尝试使用 WinSCard 库在 Qt 框架 C++ 程序中实现相同的东西。如果我在阅读器插入 USB 后 10 秒内运行程序,一切正常,但在那之后阅读器进入我认为是某种节电状态的状态,然后几秒钟后它击落了 USB 管道。java程序在我尝试连接时会自动“唤醒”阅读器,但我写的C++没有,我也不知道自己做错了什么。

SCardEstablishContext()首先我用调用建立一个上下文,然后用 列出读卡器SCardListReaders(),它实际上列出了读卡器是问题,最后我调用SCardConnect()连接,SCARD_E_NOT_READY如果智能卡读卡器处于这种“睡眠”状态,则返回。

请注意,如果智能卡读卡器不是这种“睡眠”模式,我可以用相同的代码与卡通信,没有问题。

winAPI 描述没有提示在这种情况下要做什么,我找不到任何线索。如果有人知道这个问题的解决方案,请分享!

0 投票
1 回答
1234 浏览

windows - Windows 程序如何在不重新启动或调用 CreateService 的情况下加载内核驱动程序

我知道 Sysinternals 的 Process Explorer 会静默加载一个名为PROCEXPxxx.SYS. 我想知道它是如何做到这一点的。对我来说,它看起来像是在我们的应用程序中静默捆绑内核模式组件的一个很好的例子。

首先,驱动程序是从 exe 动态创建的(可能作为资源)。

通过使用进程监视器检查注册表,我可以告诉 PE 正在使用手动RegCreateKey创建密钥HKLM\System\CurrentControlSet\Services\PROCEXPxxx(然后立即删除它,以便在驱动程序运行后什么都没有留下)。

通过使用“ dumpbin /imports procexp.exe”,我发现PE根本不导入CreateService。通过使用 API Monitor ( http://www.rohitab.com/apimonitor ),我确实确认CreateService在我们运行它时不会调用它。

那么,Process Explorer 如何在不重启和调用的情况下优雅地静默加载驱动程序CreateService

0 投票
2 回答
235 浏览

winapi - 当我的外壳扩展文件夹为空时显示“此文件夹为空”背景

在我的 shell 扩展中,我想模仿资源管理器的行为并显示“此文件夹为空”消息,而实际上我的文件夹为空:

这个文件夹是空的

但是,我无法完成它。

使用 API Monitor,我看到当资源管理器刷新一个空文件夹时,IEnumIDList::Next()返回以下内容:

APIMonitor截图

意思是,返回的“下一个”项目是NULL,项目数是0,结果是S_FALSE

如前所述,我试图模仿返回值,确实没有为文件夹加载任何项目,但也没有出现任何消​​息。

那么什么 API 会触发这个消息呢?

0 投票
1 回答
512 浏览

vsto - Windows XP SP3 上的 VSTO 2010 运行时

我在 Visual Studio 2010 中开发了一个 Excel VSTO 加载项。它在 Windows 7+ 和 Excel 2007+ 的不同组合上运行良好,但无法在 Windows XP 和 Excel 2007 上加载,并显示“在加载 COM 加载项”消息。VSTO_SUPPRESSDISPLAYALERTS=0并且VSTO_LOGALERTS=1不产生任何数据。

使用 API Monitor 和 Dependency Walker 调试后,发现如下。为了加载加载项,Excel 加载C:\Program Files\Common Files\Microsoft Shared\VSTO\10.0\VSTOLoader.dll. 该库从 导入GetFileVersionInfoEx函数C:\Windows\System32\Version.dll,仅从 Vista 开始可用。因此,甚至没有尝试加载我的加载项 DLL,因为该过程在加载 VSTO 运行时很早就失败了。

有想法该怎么解决这个吗?我错过了一些依赖吗?这是我到目前为止安装的内容:

0 投票
0 回答
204 浏览

c# - 我需要做什么才能知道何时加载和绘制图像?EasyHook/DLL 注入

我正在使用 easyHook 进行 DLL 注入,以了解何时在 3d 方应用程序窗口中写入文本。

此应用程序还在其窗口中绘制图像。我知道这张图片的路径/名称(假设路径是:C:\ImageLoadedByExternalProgramAndDrawnInTheWindow.png)

但是,我不知道要准确地挂钩什么才能知道何时调用此图像以进行绘制。我应该挂钩什么功能?

我查看了 API Monitor 并看到了这个:

在此处输入图像描述

但我不知道如何正确使用它,所以不确定是什么函数调用它。或者...我只需要在 kernelbase.dll 中挂钩 RtlIsDosPath...?

萨米

0 投票
1 回答
475 浏览

c++ - Microsoft Core Audio API:从默认端点获取 WAVEFORMATEX 信息

我正在研究游戏的音频引擎和被调用的 Microsoft Core Audio API 之间的交互。我想弄清楚游戏是如何从默认端点获取“WAVEFORMATEX”信息的。我看到在游戏开始期间的某个时间点,使用* pFormat(IsFormatSupported 的第二个参数)填充了默认端点的格式信息(即通道、bitspersample、采样率等)。我还看到在此之前游戏没有调用 GetMixFormat() [ https://msdn.microsoft.com/en-us/library/windows/desktop/dd370872(v=vs.85).aspx]

但是,有一系列与 IMMDeviceEnumerator(EnumAudioEndpoints、QuryInterface、AddRef 等)、IMMDeviceCollection(GetCount、Item)和 IMMDevice(QueryInterface、AddRef 等)相关的调用。查看这些文档,似乎没有直接获取“格式”(WAVEFORMATEX)信息的方法。虽然调用了 MMDevice::OpenPropertyStore() 并随后调用了“GetId()”,但我没有看到使用“PKEY_AudioEngine_DeviceFormat”参数调用“GetValue()”,这可能提供了“格式”信息。因此,我对游戏如何获得“格式”信息感到有些困惑。上述任何调用都可以间接获得“格式”信息吗?

我正在使用 API 监控应用程序 [ http://www.rohitab.com/downloads]进行分析,并启用了“音频和视频”过滤器。

0 投票
1 回答
478 浏览

windows - 从编程的角度查找对 windows api 的所有调用

我正在寻找开发一个程序来检测对某些 Windows API 函数的调用,并简单地记录调用过程、调用计数以及希望它们的参数,以便以后将它们标记为良性或恶意。

GUI 程序 API 监视器是我试图实现的功能的一个很好的例子。理想情况下,我想单独跟踪每个所需的 API 函数,并在使用它时或之后获取调用者 PID 和参数,而无需用户输入。该程序应该能够在任何 Windows 7 机器上运行,但可以限制为 32 位应用程序。

我知道有几种挂钩函数的方法,据我了解,Microsoft detours 实现了其中一种,但我不知道它是否最适合我想做的事情。我见过 detours、easyhook、deviare API hook 和其他在非常古老的帖子中提到的内容,但我很难理解每个人的差异和特性。

所以我的问题是,鉴于我正在尝试做的事情,你有什么建议以及为什么?

作为参考,我是一名中级程序员,但也是 Windows 编程的初学者。

谢谢你的帮助

0 投票
1 回答
64 浏览

c# - Windows 本地文件系统访问 API

我正在为音频文件构建某种扫描算法。我正在使用多个线程来处理它们分配的文件段。性能相当不错,但如果我将它与 Microsoft Media Foundation Transcode API 进行比较,它仍然要慢得多。所以我已经删除了音频帧的处理,所以它只剩下 IO 访问。但它仍然比 MediaFoundation 慢得多。所以我想知道使用 FileStream 读取整个文件怎么可能比使用 MediaFoundation 处理整个文件慢。我查看了使用API Monitor进行的处理,但结果很奇怪:

我在 API 监视器中看不到任何文件系统访问(我已在监视器中打开所有数据访问 API):

在此处输入图像描述

那么有没有更快的 API,开发人员无法使用?我错过了什么?