RockHammer Опубликовано 26 января, 2015 Поделиться Опубликовано 26 января, 2015 (изменено) Грызу гранит CreateToolhelp32Snapshot.В общем-то, не так сложно, как выглядит на первый взгляд.Продвинулся дальше, чтение памяти процесса и запись в него.Пошел на сайт pinvoke.net (не рекламирую, просто там описания подобного рода функций беру) ну и взял некоторые описания.При компиляции выдает много ошибок Я взял не те описания, или студия узнала меня и отказывается компилировать, пока я не научусь нормально кодить?#include <iostream>#include <conio.h>#include <Windows.h>#include <TlHelp32.h>#include <stdio.h>using namespace std;int main(int, char *[]){ [DllImport("kernel32.dll", SetLastError = true)] static extern bool WriteProcessMemory( IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, int nSize, out IntPtr lpNumberOfBytesWritten); [DllImport("kernel32.dll", SetLastError = true)] static extern bool ReadProcessMemory( IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, int dwSize, out IntPtr lpNumberOfBytesRead); setlocale(LC_ALL, "Russian"); char ProcessName[] = "notepad.exe"; PROCESSENTRY32 entry; entry.dwSize = sizeof(PROCESSENTRY32); HANDLE SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if (Process32First(SnapShot, &entry) == TRUE) { while (Process32Next(SnapShot, &entry) == TRUE) { if (strcmp(entry.szExeFile, ProcessName) == 0) { HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID); cout << "ProcessID = " << entry.th32ProcessID << endl; printf("ProcessID (hex) = 0x%X \n", entry.th32ProcessID); cout << "ProcessHandle = " << hProcess; int ByteOfRead = 0; DWORD Read = ReadProcessMemory(hProcess, 0x774DAD00, char buffer[5], 5, &ByteOfRead); cout << Read; CloseHandle(hProcess); } } } _getch();} Изменено 26 января, 2015 пользователем RockHamer Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 26 января, 2015 Поделиться Опубликовано 26 января, 2015 Pinvoke - он для C#. Идешь в гугл, вбиваешь "имяфункции С++", читаешь, видишь внизу страницы .h-файл, нужный для работы функции. Подключил его - и вызывай, сколько захочется. Собственно, на главной странице сайта написано: A wiki for .NET developers PInvoke.net is primarily a wiki, allowing developers to find, edit and add PInvoke* signatures, user-defined types, and any other information related to calling Win32 and other unmanaged APIs from managed code (written in languages such as C# or VB.NET). Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 27 января, 2015 Автор Поделиться Опубликовано 27 января, 2015 Pinvoke - он для C#. Идешь в гугл, вбиваешь "имяфункции С++", читаешь, видишь внизу страницы .h-файл, нужный для работы функции. Подключил его - и вызывай, сколько захочется.Собственно, на главной странице сайта написано:Точно, точно... Тупанул, бывает) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения