#include <iostream>;
using namespace std;
#include <windows.h>;
#include <tlhelp32.h>;
#include <tchar.h>; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
HWND GetMainWindow();
void MyPostMessage(HWND hWnd); extern "C" BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
HWND hWnd;
HWND hParWnd, hButWnd;
int d, d1;
switch (fdwReason)
{
case DLL_PROCESS_ATTACH: hWnd = GetMainWindow();
if (hWnd)
hWnd = ::FindWindowEx(hWnd, , TEXT("EDIT"), NULL);
if (hWnd)
{
::MessageBox(hWnd, TEXT("开始注入"), TEXT("提示"), MB_OK);
MyPostMessage(hWnd);
}
else
{
::MessageBox(hWnd, TEXT("记事本不存在"), TEXT("提示"), MB_OK);
}
break;
case DLL_PROCESS_DETACH:
// detach from process
break; case DLL_THREAD_ATTACH:
// attach to thread
break; case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
} BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
DWORD dwCurProcessId = *((DWORD*)lParam);
DWORD dwProcessId = ; GetWindowThreadProcessId(hwnd, &dwProcessId);
if (dwProcessId == dwCurProcessId && GetParent(hwnd) == NULL)
{
*((HWND *)lParam) = hwnd;
return FALSE;
}
return TRUE;
} HWND GetMainWindow()
{
DWORD dwCurrentProcessId = GetCurrentProcessId();
if (!EnumWindows(EnumWindowsProc, (LPARAM)&dwCurrentProcessId))
{
return (HWND)dwCurrentProcessId;
}
return NULL;
} void MyPostMessage(HWND hWnd)
{
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
PostMessageW(hWnd, WM_CHAR, L',', );
PostMessageW(hWnd, WM_CHAR, L']', );
PostMessageW(hWnd, WM_CHAR, L']', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
PostMessageW(hWnd, WM_CHAR, L'/', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
PostMessageW(hWnd, WM_CHAR, L']', );
PostMessageW(hWnd, WM_CHAR, L']', );
PostMessageW(hWnd, WM_CHAR, L']', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
PostMessageW(hWnd, WM_CHAR, L'/', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L']', );
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
PostMessageW(hWnd, WM_CHAR, L']', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L']', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L']', );
PostMessageW(hWnd, WM_CHAR, L'/', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L']', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
PostMessageW(hWnd, WM_CHAR, L'.', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'/', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'=', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L'=', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L'=', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L'=', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L'=', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L' ', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'=', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'^', );
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'/', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L' ', );
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'/', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'/', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'=', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'^', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'/', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'/', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'/', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'[', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'/', );
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'[', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\\', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'/', );
PostMessageW(hWnd, WM_CHAR, L'.', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L',', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L'O', );
}
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'.', );
PostMessageW(hWnd, WM_CHAR, L'\\', );
PostMessageW(hWnd, WM_CHAR, L'O', );
PostMessageW(hWnd, WM_CHAR, L'`', );
for (int i = ; i < ; i++) {
PostMessageW(hWnd, WM_CHAR, L' ', );
}
PostMessageW(hWnd, WM_CHAR, L'\n', );
}

Dll文件

 #include <iostream>;
using namespace std;
#include <windows.h>;
#include <tlhelp32.h>;
#include <tchar.h>; HANDLE hThread = NULL;
//进程名称查找进程ID
DWORD ProcessFind(LPCTSTR Exename) //进程名称
{
HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (!hProcess)
{
return FALSE;
}
PROCESSENTRY32 info;
info.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hProcess, &info))
{
return FALSE;
}
while (TRUE)
{
cout << endl;
if (_tcscmp(info.szExeFile, Exename) == )
{
return info.th32ProcessID;//返回进程的ID
}
if (!Process32Next(hProcess, &info))
{
return FALSE;
}
}
return FALSE; } int dll_inject() {
//Dll文件地址,改成你自己的地址
const TCHAR *pLocDll = TEXT("F:\\工作\\项目\\控制台\\injection\\injection\\x64\\Release\\injectionDll.dll"); HANDLE hThread = NULL; //记事本进程名称
DWORD ProcessID = ProcessFind(TEXT("notepad.exe"));
if (!ProcessID) {
cout << "查找不到当前程序" << endl;
}
else {
//获取进程ID
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, ProcessID); //获取dll大小
SIZE_T PathSize = (_tcslen(TEXT("injectionDll.dll")) + ) * sizeof(TCHAR); //申请内存
LPVOID StartAddress = VirtualAllocEx(hProcess, NULL, PathSize, MEM_COMMIT, PAGE_READWRITE); //写入内存
bool bSuccess = WriteProcessMemory(hProcess, StartAddress, TEXT("injectionDll.dll"), PathSize, );
if (!bSuccess)
{
cout << "写入失败" << endl;
}
else {
//在寄主申请内存
LPVOID strRmt = VirtualAllocEx(hProcess, nullptr, MAX_PATH, MEM_COMMIT, PAGE_READWRITE);
//获得注入DLL大小
size_t lenLocDll = * _tcslen(pLocDll);
//判断寄主申请内存是否成功
if (strRmt) {
//把DLL写入寄主内存
BOOL ret = WriteProcessMemory(hProcess, strRmt, pLocDll, lenLocDll, nullptr);
//获得LoadLibraryW的函数地址以使用LoadLibrary函数
LPTHREAD_START_ROUTINE loadlib = LPTHREAD_START_ROUTINE(GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryW"));
//注入
hThread = CreateRemoteThread(hProcess, nullptr, , loadlib, LPVOID(strRmt), , nullptr);
} /*
HANDLE hThread = CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(_T("kernel32.dll")), "LoadLibrary"), StartAddress, 0, 0);*/ if (hThread == NULL)
{
cout << "在进程中注入失败:";
cout << GetLastError() << endl;
return -;
} WaitForSingleObject(hThread, INFINITE);
//到这里已经完成dll的加载即注入了,通过dll函数执行我们要完成的任务
//释放
VirtualFreeEx(hProcess, StartAddress,, MEM_RELEASE);
CloseHandle(hThread);
CloseHandle(hProcess);
}
}
}
int main()
{
dll_inject();
system("pause");
}

主程序

C++注入记事本升级版,给记事本弄爱心的更多相关文章

  1. C++注入记事本

    #include <iostream>; using namespace std; #include <windows.h>; #include <tlhelp32.h& ...

  2. qt5.5实现 记事本程序

    最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...

  3. Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

    前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...

  4. Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?

    [梁海的回答(99票)]: 简答.一些细节暂无精力查证,如果说错了还请指出. 一句话建议:涉及兼容性考量时,不要用记事本,用专业的文本编辑器保存为不带 BOM 的UTF-8. * * * 如果是为了跨 ...

  5. 微信小程序入门实例之记事本

    主要实现思想都在代码的注释中,项目源码见github 首先上项目目录 app.js文件代码如下: //app.js App({ onLaunch: function() { //调用API从本地缓存中 ...

  6. 用tkinter写一个记事本程序(未完成)

    之前在看tkinter与python编程 ,后面学opengl就把那本书搁置了.几天没用tkinter,怕是基本的创建组件那些都忘记了,所以想着用tkinter试着写一下记事本程序.一开始的时候以为很 ...

  7. sqlmap:入门(手工注入)

    一. 联合查询注入union(less-1) 1. union操作符用于合并两个或多个select语句结果集: 2. union后的select语句必须拥有和最前的select语句拥有相同数量的字段, ...

  8. CTF-sql-宽字节注入

    本文章主要涉及sql宽字节注入注入的原理讲解,如有错误,望指出.(附有目录,如需查看请点右下角) 一.首先介绍一下本篇文章所用到的知识点: 常用到的url编码: 空格:%20 单引号:%27 在sql ...

  9. div的优缺点

    div+css优缺点   产生背景 HTML语言自HTML4.01以来,不再发布新版本,原因就在于HTML语言正变得越来越复杂化.专用化.即标记越来越多,甚至各个浏览器生产商也开发出只适合于其特定浏览 ...

随机推荐

  1. mui几种页面跳转方式对比

    1.初始化时创建子页面 mui.init({ subpages: [{ url: your - subpage - url, //子页面HTML地址,支持本地地址和网络地址 id: your - su ...

  2. 走进JDK(六)------ArrayList

    对于广大java程序员来说,ArrayList的使用是非常广泛的,但是发现很多工作了好几年的程序员不知道底层是啥...这我觉得对于以后的发展是非常不利的,因为java中的每种数据结构的设计都是非常完善 ...

  3. zlib+pcre+openssl+nginx安装

    安装nginx之前首先有3个包先要安装,一个是zlib,一个是pcr3,还有一个openssl http://nginx.org/en/docs/configure.html,这个是Nginx的安装手 ...

  4. python之路(六)-函数相关

    在没有学习函数之前我们的程序是面向过程的,不停的判断,不停的循环,同样的代码重复出现在我们的代码里.函数可以更好的提高我们的 代码质量,避免同样的代码重复出现,而只需要在用的时候调用函数即可执行.此为 ...

  5. shell 命令 if elif else fi 用法

    #! /bin/bash if Iam; then echo "it worked two" else ls echo "I am in the else" f ...

  6. Request参数值自动去空格

    /// <summary> /// TypeTrimHelper /// </summary> public static class TypeTrimHelper { /// ...

  7. WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译吗

    在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级 ...

  8. 源设置导致Docker镜像构建失败

    编写了一个Dockerfile,主要目的是构建一个镜像,镜像默认安装了openjdk-1.8-jre,还有另外一些包(这些包里面有dev版本的,也有release版本的),Dockerfile的内容大 ...

  9. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 8.仪表盘 Dashboard(horizon)安装配置

    仪表盘Dashboard(horizon)是一个web接口,使得云平台管理员以及用户可以管理不同的Openstack资源以及服务.这个部署示例使用的是 Apache Web 服务器. 节点配置信息说明 ...

  10. Django创建和配置文件

    首先我们随便找一个文件 shift+鼠标右键 点击打开 Powershell 窗口 然后输入命令  django-admin startproject 项目名字 输入cd day   进入这个项目下 ...