DLL代码:
#include "stdafx.h"
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam,LPARAM lParam);
#pragma data_seg("Shared")
static HHOOK hkb=NULL;
HMODULE hins=NULL;
#pragma data_seg()
#pragma comment(linker,"/SECTION:Share,RWS")
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
extern "C" _declspec(dllexport)BOOL installhook()
{
hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
return TRUE;
}
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(((DWORD)lParam&0x40000000)&&(HC_ACTION==nCode))
{
switch(wParam)
{
case '1':MessageBox(NULL,TEXT("你按下了1"),TEXT(""),0);break;
case '2':MessageBox(NULL,TEXT("你按下了2"),TEXT(""),0);break;
case '3':MessageBox(NULL,TEXT("你按下了3"),TEXT(""),0);break;
}
}
LRESULT RetVal=CallNextHookEx(hkb,nCode,wParam,lParam);
return RetVal;
}
EXE代码。。
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
typedef BOOL (CALLBACK *inshook)();
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
}
return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
static HMODULE hinstDLL;
inshook instkbhook;
hinstDLL=LoadLibrary((LPCTSTR)"Hook.dll");
if(hinstDLL==0)
{MessageBox(NULL,TEXT(" CUOU"),TEXT(""),0);
}
else
{
if (instkbhook=(inshook)GetProcAddress(hinstDLL,"installhook"))
{
MessageBox(NULL,TEXT(" 调用函数出错"),TEXT(""),0);//还就是在这里出错请指点下。。。
}
else{
instkbhook();
}
}
break;
default:
break;
}
}
void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}
请把EXE和dll代码修改好。打出来 然后说明问题·
谢谢
[课程]Android-CTF解题方法汇总!