#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. 小白的CTF学习之路1——程序与CPU

    刚刚注册了这个博客园,尽量保持每日一更(*/ω\*) 今天看了po学院的教学视频,了解了程序是什么,如何在CPU当中工作的等各种之前未曾想过的问题,特此记录,以防忘记 首先我们学习程序与CPU之前需要 ...

  2. MUI 里js动态添加数字输入框后,增加、减少按钮无效

    numbox 的自动初化是在 mui.ready 时完成的mui 页面默认会自动初始化页面中的所有数字输入框,动态构造的 DOM 需要进行手动初始化.比如:您动态创建了一个 ID 为 abc 的数字输 ...

  3. sql 百万级或千万级数据分页处理

    笔记来源 https://blog.csdn.net/zhenyuanjie/article/details/7778102

  4. C++探究transform算法

    transform函数原型 1. template<class _InIt, class _OutIt, class _Fn1> inline _OutIt transform(_InIt ...

  5. python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别

    os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 Python的程序有两中退出方式:os._exit(), sys.exit().本文介绍这两种方 ...

  6. git cmd 命令在已有的仓库重新添加新的文件夹

    正确步骤: 1. git init //初始化仓库 git add .(文件name) //添加文件到本地仓库 git commit -m “first commit” //添加文件描述信息 git ...

  7. Django URLConf 进阶

    Django处理一个请求 项目启动后根据 settings  ROOT_URLCONF 决定项目根URLconf urlpatterns是django.conf.urls.url()实例的一个Pyth ...

  8. 背水一战 Windows 10 (83) - 用户和账号: 数据账号的添加和管理, OAuth 2.0 验证

    [源码下载] 背水一战 Windows 10 (83) - 用户和账号: 数据账号的添加和管理, OAuth 2.0 验证 作者:webabcd 介绍背水一战 Windows 10 之 用户和账号 数 ...

  9. 项目Alpha冲刺(团队1/10)

    项目Alpha冲刺(团队1/10) 团队名称: 云打印 作业要求: 项目Alpha冲刺(团队) 作业目标: 完成项目Alpha版本 团队队员 队员学号 队员姓名 个人博客地址 备注 221600412 ...

  10. 字符串拼接时使用StringBuffer还是StringBuilder?

    StringBuffer.StringBuilder和String一样,也用来代表字符串.String类是不可变类,任何对String的改变都 会引发新的String对象的生成:StringBuffe ...