15,466
社区成员
发帖
与我相关
我的任务
分享LIBRARY HookDll
EXPORTS
SetHook
uHook#include <windows.h>
#pragma data_seg("SetWindowTextHookEx")
HWND g_hwnd = 0;
char *g_title = 0;
HHOOK hhgm = 0;
#pragma data_seg()
#pragma comment(linker,"/section:SetWindowTextHookEx,RWS")
BOOL SetText();
LRESULT CALLBACK CallWndProc(int code,
WPARAM wParam,
LPARAM lParam
)
{
CWPRETSTRUCT *cs = (CWPRETSTRUCT *)lParam;
if(code==HC_ACTION)
{
if(cs->hwnd == g_hwnd)
{
if(cs->message == WM_SETTEXT)
{
//MessageBox(0,0,0,0);
//SendMessage(g_hwnd,WM_SETTEXT,0,(LPARAM)g_title);
SetText();
}
}
}else if(code<0)
{
return CallNextHookEx(hhgm,code,wParam,lParam);
}
return 0;
}
bool SetHook(HWND hwnd,char *title)
{
hhgm = SetWindowsHookEx(WH_CALLWNDPROCRET,CallWndProc,GetModuleHandle("HookDll"),NULL);
if(hhgm)
{
g_hwnd = hwnd;
g_title = title;
return true;
}else
{
return false;
}
}
BOOL uHook()
{
return UnhookWindowsHookEx(hhgm);
}
BOOL SetText()
{
MessageBox(g_hwnd,"NOW",0,0);
return SetWindowText(g_hwnd,g_title);
}#include <Windows.h>
#pragma comment(lib,"HookDll.lib")
_declspec(dllimport) bool SetHook(HWND hwnd,char *title);
_declspec(dllimport) BOOL uHook();
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HWND hwnd,hb;
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrveInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
WNDCLASSEX wcex;
wcex.cbClsExtra=0;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.cbWndExtra=0;
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
wcex.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wcex.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
wcex.hInstance=hInstance;
wcex.lpfnWndProc=WndProc;
wcex.lpszClassName="ClassName";
wcex.lpszMenuName=NULL;
wcex.style=CS_HREDRAW|CS_VREDRAW;
RegisterClassEx(&wcex);
//hi = hInstance;
hwnd=CreateWindow(wcex.lpszClassName,"Title",WS_OVERLAPPEDWINDOW+WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,350,250,NULL,NULL,hInstance,NULL);
hb=CreateWindow("Button","Title",WS_CHILDWINDOW+WS_VISIBLE,0,0,100,50,hwnd,NULL,hInstance,NULL);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
break;
case WM_COMMAND:
if((HWND)lParam==hb)
{
//SendMessage(hWnd,WM_SETTEXT,99,(LPARAM)"agsagas");
bool result = SetHook((HWND)3278740,"想修改?没门!");
if(result)
{
MessageBox(hWnd,"chenggong",0,0);
}else
{
MessageBox(0,"shibai",0,0);
}
}
break;
case WM_DESTROY:
uHook();
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd,message,wParam,lParam);
break;
}
return 0;
}