Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <TlHelp32.h>
- #include <string.h>
- #include<iostream>
- #include <fstream>
- #include "stdio.h"
- #include <thread>
- #include <chrono>
- #include <winuser.h>
- #include <io.h>
- using namespace std;
- DWORD GetProcessByName(char* process_name){
- HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
- PROCESSENTRY32 process;
- DWORD proc_id = 0;
- if (Process32First(snapshot, &process)) {
- while (Process32Next(snapshot, &process)) {
- if (_stricmp(process.szExeFile, process_name) == 0) {
- proc_id = process.th32ProcessID;
- break;
- }
- }
- }
- CloseHandle(snapshot);
- return proc_id;
- }
- bool FileExist(char* name) { return _access(name, 0) != -1; };
- HHOOK MouseHook;
- BOOL WINAPI HandlerRoutine(_In_ DWORD dwCtrlType) {
- if (dwCtrlType == CTRL_CLOSE_EVENT) { UnhookWindowsHookEx(MouseHook); }
- return 1;};
- LRESULT __stdcall MousedProc(int nCode, WPARAM wParam, LPARAM lParam) { // код hook-точки // идентификатор сообщения // координаты мыши
- if (nCode >= 0) {
- switch (wParam) {
- case WM_RBUTTONDOWN: {
- return -1; break;
- }
- case WM_RBUTTONUP: {
- return -1; break;
- }
- case WM_LBUTTONDBLCLK: {break; return 0; };
- break;
- }
- return CallNextHookEx(MouseHook, nCode, wParam, lParam);
- }
- return CallNextHookEx(MouseHook, nCode, wParam, lParam);
- };
- int SetHook(HANDLE hModule, DWORD ul_reason_for_call) {
- if ((MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MousedProc, (HINSTANCE)hModule, ul_reason_for_call))) {
- return 0;
- }
- };
- bool Inject(DWORD pID, char* path){
- LPVOID RemoteString;
- LPCVOID LoadLibAddy;
- HANDLE proc_handle = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pID);
- /*
- Доступ к объекту процесса. право доступа на соответствие дескриптору безопасности для процесса.
- Этот параметр может быть одним или несколькими правами доступа к процессу.
- Если вызывающий абонент включил привилегию SeDebugPrivilege, запрошенный доступ предоставляется независимо от содержимого дескриптора безопасности.
- [in] bInheritHandle Если TRUE, процессы, созданные этим процессом, унаследуют дескриптор.
- В противном случае процессы не наследуют этот дескриптор.
- [in] dwProcessId Идентификатор локального процесса, который нужно открыть
- Если вы используете GetCurrentProcessId в качестве аргумента этой функции, рассмотрите возможность использования GetCurrentProcess вместо OpenProcess для повышения производительности.
- Возвращаемое значение открытый дескриптор указанного процесса.
- */
- if (proc_handle == 0) return false;
- SetConsoleCtrlHandler(HandlerRoutine, 1);
- printf("DLL found!\n\n");
- SetHook(proc_handle, pID);
- MSG msg;
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- system("PAUSE");
- /*
- CloseHandle(proc_handle);
- FreeLibrary(hDLL);*/
- return true;
- }
- int main() {char path[256]; char process_name[32] = "notepad.exe";// ColdFear_retail.exe notepad.exe
- DWORD pID;
- do{
- pID = GetProcessByName(process_name);
- Inject(pID, path);
- } while (pID == 0);
- return 0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement