-
-
[求助]远程线程中调用函数的问题。
-
发表于:
2008-6-27 23:11
6034
-
typedef struct tagREMOTE_PARAMETER {
DWORD pfGetProcAddress;
DWORD pfLoadLibraryA;
DWORD pfFreeLibrary;
DWORD pfMessageBoxA;
TCHAR szText[256];
TCHAR szCaption[256];
} REMOTE_PARAMETER_S;
DWORD WINAPI RemoteThreadProc(LPVOID lpParameter)
{
typedef FARPROC (WINAPI *GetProcAddress_PF)(HMODULE hModule, LPCSTR lpProcName);
typedef HMODULE (WINAPI *LoadLibraryA_PF)(LPCSTR lpLibFileName);
typedef BOOL (WINAPI *FreeLibrary_PF)(HMODULE hLibModule);
typedef int (WINAPI *MessageBoxA_PF)(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
typedef VOID (WINAPI *START_PF)(VOID);
GetProcAddress_PF pfGetProcAddress = NULL;
LoadLibraryA_PF pfLoadLibraryA = NULL;
FreeLibrary_PF pfFreeLibrary = NULL;
MessageBoxA_PF pfMessageBoxA = NULL;
START_PF pfStart = NULL;
REMOTE_PARAMETER_S *pstRemotePara = NULL;
HMODULE hMod = NULL;
pstRemotePara = (REMOTE_PARAMETER_S *)lpParameter;
if (NULL == pstRemotePara)
{
return 0;
}
pfGetProcAddress = (GetProcAddress_PF)pstRemotePara->pfGetProcAddress;
pfLoadLibraryA = (LoadLibraryA_PF)pstRemotePara->pfLoadLibraryA;
pfFreeLibrary = (FreeLibrary_PF)pstRemotePara->pfFreeLibrary;
pfMessageBoxA = (MessageBoxA_PF)pstRemotePara->pfMessageBoxA;
if ((NULL == pfGetProcAddress) ||
(NULL == pfLoadLibraryA) ||
(NULL == pfFreeLibrary) ||
(NULL == pfMessageBoxA))
{
return 1;
}
pfMessageBoxA(NULL, pstRemotePara->szText, pstRemotePara->szCaption, MB_OK):
return 0;
}
远程线程插入后,弹出MessageBox后点击确定后弹出内存不能读的错误。
如果注释掉 pfMessageBoxA(NULL, pstRemotePara->szText, pstRemotePara->szCaption, MB_OK):则没有问题
如果调用其它函数,也一样有问题。
这个是怎么回事?
[培训]科锐逆向工程师培训第53期2025年7月8日开班!