-
-
[求助]这段代码哪错了? 求助
-
发表于: 2007-9-4 19:23 3453
-
用HOOK 实现的 dll 注入 没道理错啊 麻烦各位看下 谢谢
dll code:
#include <windows.h>
LRESULT CALLBACK MyProc(int nCode, WPARAM wParam, LPARAM lParam);
#pragma data_seg("Share")
static HHOOK hHook = NULL; // 钩子句柄
static HINSTANCE hInst=NULL; // 当前DLL句柄
#pragma data_seg()
#pragma comment(linker,"/SECTION:Share,RWS")
int WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID lpReserved)
{
hInst = hinst;
return 1;
}
//---------------------------------------------------------------------------
// 安装钩子函数
bool __stdcall SetHook(DWORD dwThreadId)
{
if (dwThreadId)
{
hHook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)MyProc,hInst,dwThreadId);
if (hHook)
return true;
else
return false;
}
else
{
MessageBox(NULL, "DLL即将从记事本进程空间中撤出!","DLL",
MB_ICONINFORMATION + MB_OK);
return (UnhookWindowsHookEx(hHook));
}
return true;
}
// 钩子函数
LRESULT CALLBACK MyProc(int nCode, WPARAM wParam, LPARAM lParam)
{
MessageBox(NULL,"Fun","Fun",0);
return (CallNextHookEx(hHook, nCode, wParam, lParam));
}
def code:
LIBRARY HookInjectDll
EXPORTS
SetHook
exe code:
STARTUPINFO Stat;
PROCESS_INFORMATION Proce;
memset(&Stat,0,sizeof(Stat));
MyHook MyHookH;
HMODULE h_mod= LoadLibrary("d:\\HookInjectDll.Dll");
if(h_mod)
{
MyHookH=(MyHook)(GetProcAddress(h_mod,"SetHook"));
BOOL hret=CreateProcess(NULL,"c:\\windows\\system32\\notepad.exe",NULL,NULL,false,0,NULL,NULL,&Stat,&Proce);
if(hret)
{
char szmsg[MAX_PATH];
sprintf(szmsg,"%d",Proce.dwProcessId);
MyHookH(Proce.dwThreadId);
MessageBox(szmsg);
}
else
MessageBox("Wrong");
dll code:
#include <windows.h>
LRESULT CALLBACK MyProc(int nCode, WPARAM wParam, LPARAM lParam);
#pragma data_seg("Share")
static HHOOK hHook = NULL; // 钩子句柄
static HINSTANCE hInst=NULL; // 当前DLL句柄
#pragma data_seg()
#pragma comment(linker,"/SECTION:Share,RWS")
int WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID lpReserved)
{
hInst = hinst;
return 1;
}
//---------------------------------------------------------------------------
// 安装钩子函数
bool __stdcall SetHook(DWORD dwThreadId)
{
if (dwThreadId)
{
hHook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)MyProc,hInst,dwThreadId);
if (hHook)
return true;
else
return false;
}
else
{
MessageBox(NULL, "DLL即将从记事本进程空间中撤出!","DLL",
MB_ICONINFORMATION + MB_OK);
return (UnhookWindowsHookEx(hHook));
}
return true;
}
// 钩子函数
LRESULT CALLBACK MyProc(int nCode, WPARAM wParam, LPARAM lParam)
{
MessageBox(NULL,"Fun","Fun",0);
return (CallNextHookEx(hHook, nCode, wParam, lParam));
}
def code:
LIBRARY HookInjectDll
EXPORTS
SetHook
exe code:
STARTUPINFO Stat;
PROCESS_INFORMATION Proce;
memset(&Stat,0,sizeof(Stat));
MyHook MyHookH;
HMODULE h_mod= LoadLibrary("d:\\HookInjectDll.Dll");
if(h_mod)
{
MyHookH=(MyHook)(GetProcAddress(h_mod,"SetHook"));
BOOL hret=CreateProcess(NULL,"c:\\windows\\system32\\notepad.exe",NULL,NULL,false,0,NULL,NULL,&Stat,&Proce);
if(hret)
{
char szmsg[MAX_PATH];
sprintf(szmsg,"%d",Proce.dwProcessId);
MyHookH(Proce.dwThreadId);
MessageBox(szmsg);
}
else
MessageBox("Wrong");



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
- [讨论]监控Explorer的进程创建 4466
- [讨论]CreateProcessInternalW 17374
- [讨论]汇编程序的优化 4213
- [讨论]怎样得到自身进程的PID 5996
- [讨论]DDK里 不能用 window.h ?? 4713
赞赏
雪币:
留言: