100分求注入问题 本帖最后由 mcawxd 于 2009-11-10 16:39:25 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你是不是说窗口出现就注入?如果是那就下WH_CBT钩子 http://hi.baidu.com/sadusaga/blog/item/50e300de400b7052cdbf1a1b.html WH_CBT钩子捕获窗口创建,然后对目标进程注入CreateRemoteThreadhttp://hi.baidu.com/hurryhx/blog/item/8c09a67760151819b051b9eb.html WH_CBT钩子函数中WPARAM参数就是窗口的句柄通过GetWindowThreadProcessId获得它对应的进程ID,然后你可以注入了。怎么注入进程就不用我教你了吧 #include <windows.h>#pragma data_seg(".Seg")HWND g_hWnd=NULL;HHOOK g_hHook = NULL;HMODULE g_hInst = NULL;#pragma data_seg()#pragma comment(linker,"/section:.Seg,RWS")BOOL WINAPI DllMain( HINSTANCE hinstDLL, // handle to the DLL module DWORD fdwReason, // reason for calling function LPVOID lpvReserved // reserved ){ g_hInst=hinstDLL; return true;}LRESULT CALLBACK CBTProc( int nCode, // hook code WPARAM wParam, // depends on hook code LPARAM lParam // depends on hook code ){ HWND hWnd=NULL; TCHAR cap[31]={0}; switch(nCode) { case HCBT_CREATEWND: hWnd=(HWND)wParam; ::GetWindowText(hWnd,cap,31); break; case HCBT_ACTIVATE: break; } return CallNextHookEx(g_hHook, nCode, wParam, lParam);}void InstallCBTHook(){ if(g_hHook==NULL) g_hHook=SetWindowsHookEx(WH_CBT,CBTProc,g_hInst,0);}我在CBTProc里下了断点,随便打开一个程序怎么不执行啊。只有点自已程序窗口的时候才被断下。我用的是全局钩子啊。怎么回事啊? 调试全局钩子的两种方式:1.用内核调试器,在Dll上下断点(比如说Softice、Windbg、Syser等)2.Ring3调试器的话,只能在调试进程的Dll上断点,因此即使别的进程执行了该Dll的代码也不会中断,这时候使用Log进行调试就比较必要了 DLLMain写规范点,然后在PROCESS_ATTACH里面写InstallCBTHook()你这么写肯定不行的啊. MFC 进度条出现时,不可以操作主界面 求助:各位大哥帮我看看这个问题啊,谢谢!(if else) 怎么用CSocket发送图片? 好开心哦,创天VC变成了纯正E文版本啦,VB呢还是原来的中文版本,,,但是VC怎么号称是可视化的呢??? 卖身 如何显示图标 Treeview问题 初学,请大家帮忙!(马上给分) 求救 ■■■在广州从事软件开发或编程爱好者请进■■■! 初学WTL,第一章里面的递归模板的例子咋就编译不过? 文件codepage导致的编译问题
CreateRemoteThread
http://hi.baidu.com/hurryhx/blog/item/8c09a67760151819b051b9eb.html
通过GetWindowThreadProcessId获得它对应的进程ID,然后你可以注入了。怎么注入进程就不用我教你了吧
#pragma data_seg(".Seg")
HWND g_hWnd=NULL;
HHOOK g_hHook = NULL;
HMODULE g_hInst = NULL;
#pragma data_seg()
#pragma comment(linker,"/section:.Seg,RWS")
BOOL WINAPI DllMain(
HINSTANCE hinstDLL, // handle to the DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpvReserved // reserved
)
{
g_hInst=hinstDLL;
return true;
}LRESULT CALLBACK CBTProc(
int nCode, // hook code
WPARAM wParam, // depends on hook code
LPARAM lParam // depends on hook code
)
{
HWND hWnd=NULL;
TCHAR cap[31]={0};
switch(nCode)
{
case HCBT_CREATEWND:
hWnd=(HWND)wParam;
::GetWindowText(hWnd,cap,31);
break;
case HCBT_ACTIVATE:
break;
}
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}void InstallCBTHook()
{
if(g_hHook==NULL)
g_hHook=SetWindowsHookEx(WH_CBT,CBTProc,g_hInst,0);
}
我在CBTProc里下了断点,随便打开一个程序怎么不执行啊。只有点自已程序窗口的时候才被断下。我用的是全局钩子啊。怎么回事啊?
2.Ring3调试器的话,只能在调试进程的Dll上断点,因此即使别的进程执行了该Dll的代码也不会中断,这时候使用Log进行调试就比较必要了