【发布时间】:2010-06-12 04:51:45
【问题描述】:
我正在使用 EasyHook,这是一个 C# 库,用于从非托管应用程序中注入和绕行函数。我正在尝试连接GetDlgItemTextA,它接受参数:
UINT WINAPI GetDlgItemText(
__in HWND hDlg,
__in int nIDDlgItem,
__out LPTSTR lpString,
__in int nMaxCount
);`
在我的钩子中,我将其转换为:
[DllImport("user32.dll",
// CharSet = CharSet.Unicode,
SetLastError = true,
CallingConvention = CallingConvention.StdCall)]
static extern uint GetDlgItemTextA(IntPtr hWin, int nIDDlgItem, StringBuilder text, int MaxCount);
我的钩子是:
static uint DGetDlgItemText_Hooked(IntPtr hWin, int nIDDlgItem, StringBuilder text, int MaxCount)
{
// call original API...
uint ret = GetDlgItemTextA(hWin, nIDDlgItem, text, MaxCount);
MessageBox.Show(text.ToString());
return ret;
}
不幸的是,在调用它的那一刻,被挂钩的应用程序崩溃了。有没有更好的演员可以用来成功挂钩这个功能?谢谢!
我已经编译、编辑并确认了我的 EasyHook 设置的工作条件。这只是套管和挂钩。
【问题讨论】:
标签: c# hook pinvoke dllimport easyhook