第一步
学会写dll
(格式这些东西自行查询 以及学习),然后生成(解决方案)即可
- 新建项目动态链接库
2.写完之后,在生成----> 生成解决方案 即可在debug下面找到Dll2.dll
文件
3.生成之后,直接把dll
文件拷贝到注入代码Main.cpp
相同目录下,然后导入进行注入即可
实现代码举例:
Dll2.dll实现代码
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include<iostream>
#include<Windows.h>
#include<conio.h>
#define DEF_PROCESS_NAME "notepad.exe"
HINSTANCE g_hInstance = NULL;
HHOOK g_hHook = NULL;
HWND g_hWnd = NULL;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
char szPath[MAX_PATH] = { 0, };
char* p = NULL;
if (nCode >= 0) {
if (!(lParam & 0x80000000)) {
return 1;
}
}
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hInstance = hModule;
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport)void HookStart() {
g_hHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, g_hInstance, 0);
}
__declspec(dllexport)void HookStop() {
if (g_hHook) {
UnhookWindowsHookEx(g_hHook);
g_hHook = NULL;
}
}
#ifdef __cplusplus
}
#endif // __cplusplus
Main.cpp实现代码
#include<iostream>
#include<Windows.h>
#include<conio.h>
#define DEF_DLL_NAME "Dll2.dll"
#define DEF_HOOKSTART "HookStart"
#define DEF_HOOKSTOP "HookStop"
typedef void(*PEN_HOOKSTART)();
typedef void(*PEN_HOOKSTOP)();
MSG msg;
int main() {
HMODULE hDll = NULL;
PEN_HOOKSTART HookStart = NULL;
PEN_HOOKSTOP HookStop = NULL;
char ch = 0;
//加载KeyHook.dll
hDll = LoadLibraryA(DEF_DLL_NAME);
//获取导出函数地址
HookStart = (PEN_HOOKSTART)GetProcAddress(hDll, DEF_HOOKSTART);
HookStop = (PEN_HOOKSTOP)GetProcAddress(hDll, DEF_HOOKSTOP);
//开始勾取
HookStart();
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
};
//终止勾取
HookStop();
//卸载KeyHook.dll
FreeLibrary(hDll);
}
键盘按炸了也按不出任何东西!!!!
插入一个提示(vs如何打开MSDN帮助文档)
比如要查看float的特征。
在vs中输入float,然后按F1
键,会在默认浏览器上打开帮助文档。