gpt4 book ai didi

c++ - 跟踪注入(inject)过程中的 HDC

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:54 25 4
gpt4 key购买 nike

我面临着一个两难的境地。我已经将我的 DLL 注入(inject)到其他进程中,并钩住了一些WinAPI 从那里调用,具体来说是 ExtTextOutW@GDI32、DrawTextExW@GDI32 和 AlphaBlend@Msimg32。现在,问题是当另一个应用程序用这两个 GDI32 函数写东西时,我不知道它出现的确切位置。这是因为包含文本的 DC 会使用 AlphaBlend 进行处理,而 AlphaBlend 最终也会将其放入窗口的 DC。

那么,我如何追踪特定的 HDC?在伪代码中,这是其他应用程序的绘制方式屏幕上的文本:


HDC h = DrawTextW("STRING")

Do something with h. The "STRING" gets new HDC, say h2.

Pass h2 to AlphaBlend, which draws it to the screen.

就像我说的,随着字符串在 AlphaBlend 之前获得新的 DC,我失去了对原始 h 的跟踪。知道吗,如何从 h > h2 与其中的特定字符串建立连接?

我不知道我是否能够正确解释问题,请问您是否有任何问题...

最佳答案

static BOOL (WINAPI *AlphaBlend_t)(
HDC hdcDest,
int nXOriginDest,
int nYOriginDest,
int nWidthDest,
int nHeightDest,
HDC hdcSrc,
int nXOriginSrc,
int nYOriginSrc,
int nWidthSrc,
int nHeightSrc,
BLENDFUNCTION blendFunction
) = AlphaBlend;

BOOL MyAlphaBlend(
HDC hdcDest,
int nXOriginDest,
int nYOriginDest,
int nWidthDest,
int nHeightDest,
HDC hdcSrc,
int nXOriginSrc,
int nYOriginSrc,
int nWidthSrc,
int nHeightSrc,
BLENDFUNCTION blendFunction
)
{
// modify hdcDest to hdcDest2
return AlphaBlend_t(hdcDest2, ...);
}

这应该可以解决问题。在后一个函数中放入任意代码修改HDC

关于c++ - 跟踪注入(inject)过程中的 HDC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2302069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com