C++注入记事本升级版,给记事本弄爱心
#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++注入记事本升级版,给记事本弄爱心的更多相关文章
- C++注入记事本
#include <iostream>; using namespace std; #include <windows.h>; #include <tlhelp32.h& ...
- qt5.5实现 记事本程序
最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...
- Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)
前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...
- Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?
[梁海的回答(99票)]: 简答.一些细节暂无精力查证,如果说错了还请指出. 一句话建议:涉及兼容性考量时,不要用记事本,用专业的文本编辑器保存为不带 BOM 的UTF-8. * * * 如果是为了跨 ...
- 微信小程序入门实例之记事本
主要实现思想都在代码的注释中,项目源码见github 首先上项目目录 app.js文件代码如下: //app.js App({ onLaunch: function() { //调用API从本地缓存中 ...
- 用tkinter写一个记事本程序(未完成)
之前在看tkinter与python编程 ,后面学opengl就把那本书搁置了.几天没用tkinter,怕是基本的创建组件那些都忘记了,所以想着用tkinter试着写一下记事本程序.一开始的时候以为很 ...
- sqlmap:入门(手工注入)
一. 联合查询注入union(less-1) 1. union操作符用于合并两个或多个select语句结果集: 2. union后的select语句必须拥有和最前的select语句拥有相同数量的字段, ...
- CTF-sql-宽字节注入
本文章主要涉及sql宽字节注入注入的原理讲解,如有错误,望指出.(附有目录,如需查看请点右下角) 一.首先介绍一下本篇文章所用到的知识点: 常用到的url编码: 空格:%20 单引号:%27 在sql ...
- div的优缺点
div+css优缺点 产生背景 HTML语言自HTML4.01以来,不再发布新版本,原因就在于HTML语言正变得越来越复杂化.专用化.即标记越来越多,甚至各个浏览器生产商也开发出只适合于其特定浏览 ...
随机推荐
- 75.iOS内存管理
堆区和栈区 1.栈区:由编译器自动分配释放,函数的参数值,局部变量等值 2.堆区:一般由开发人员分配释放,若不释放,则可能会引起内存泄漏 NSString *string = @"abcd& ...
- 包含复杂函数的excel 并下载
POI 版本: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...
- xpath和lxml类库
1. xpath和lxml lxml是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息 2. 什么是xpath XPath (XML ...
- Codeforces Round #540 (Div. 3)--1118C - Palindromic Matrix
https://codeforces.com/contest/1118/problem/C 在查找元素的时候,必须按4,2,1的顺序进行.因为,如果先找1,可能就把原来的4拆散了,然后再找4,就找不到 ...
- noip第15课资料
- Singleton Summary
Java Singleton: Singleton pattern restricts the instantiation of a class and ensures that only one i ...
- Python自动化编程-树莓派GPIO编程(二)
树莓派我们编程一般都直接用高效的python,针对于GPIO编程,python也是有这一方面的库的,这里最有名也是最常用的就是RPI.GPIO了.这个库是专门为树莓派GPIO编程所设计的,利用它你可以 ...
- 「ZJOI2018」胖(ST表+二分)
「ZJOI2018」胖(ST表+二分) 不开 \(O_2\) 又没卡过去是种怎么体验... 这可能是 \(ZJOI2018\) 最简单的一题了...我都能 \(A\)... 首先我们发现这个奇怪的图每 ...
- InnoDB体系架构(四)Master Thread工作方式
Master Thread工作方式 在前面的文章:InnoDB体系架构——后台线程 说到:InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread中完成.这篇具体介绍该线程的具 ...
- java web 乱码终结
配置 tomcat 打开 tomcat 安装路径下的 conf/server.xml 文件,将 port 为 8080 的 connector 做如下更改: <Connector port=&q ...