Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2017, 01:56   #1
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию WriteProcessMemory Строки

Здравствуйте делаю программу для смены заголовка окна так вот не знаю как передать строку через WriteProcessMemory.

вообщем вот жопокод
Код:
#include <Windows.h>
#include <iostream>
#include <tlhelp32.h>
#include <cstdlib>
using namespace std;

DWORD GetModuleBase(LPSTR lpModuleName, DWORD dwProcessId)
{
   MODULEENTRY32 lpModuleEntry = {0};
   HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcessId );

   if(!hSnapShot)
	  return NULL;
   lpModuleEntry.dwSize = sizeof(lpModuleEntry);
   BOOL bModule = Module32First( hSnapShot, &lpModuleEntry );
   while(bModule)
   {
	  if(!strcmp( lpModuleEntry.szModule, lpModuleName ) )
	  {
		 CloseHandle( hSnapShot );
		 return (DWORD)lpModuleEntry.modBaseAddr;
	  }
	  bModule = Module32Next( hSnapShot, &lpModuleEntry );
   }
   CloseHandle( hSnapShot );
   return NULL;
   }
void main()
{
		 int Health;							  //char PatchHealth[] = {"LUI"}
		 char PatchHealth[] = "A";
		 string str = string(PatchHealth);
		 DWORD p1 ;
		 DWORD p2 ;
		 DWORD p3 ;
		 DWORD p4 ;
		 DWORD p5 ;
		 DWORD proc_id;

	HWND hWnd = FindWindow(0, "Lineage");

	if(hWnd == 0)
	{
	MessageBox(0, "Error cannot find window!", "Error!", MB_OK + MB_ICONERROR);
	}
	else
	{
	GetWindowThreadProcessId(hWnd, &proc_id);
	cout<<"PID- "<<proc_id<<endl;
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc_id);
		if(!hProcess)
		{
			MessageBox(NULL, "Cannot open process!", "Error!", MB_OK + MB_ICONERROR);
		}

		else
		{

		 //char NAME[] = {"LUI"};
	  ReadProcessMemory(hProcess, (LPCVOID)(GetModuleBase("Core.dll", proc_id ) + 0x00230938), &p1, sizeof(p1), NULL);
p1 = p1 + 0x198; // указатель первого уровня
		  ReadProcessMemory(hProcess, (LPCVOID)p1, &p2, sizeof(p2), NULL);
	  cout<<"1- "<<p1<<endl;
p2 = p2 + 0x08; // указатель второго уровня
		  ReadProcessMemory(hProcess, (LPCVOID)p2, &p3, sizeof(p2), NULL);
	  cout<<"2- "<<p2<<endl;
p3 = p3 + 0x308; // указатель третьего уровня
		  ReadProcessMemory(hProcess, (LPCVOID)p3, &p4, sizeof(p2), NULL);
	  cout<<"3- "<<p3<<endl;
p4 = p4 + 0x08; // указатель четвёртого уровня
		  ReadProcessMemory(hProcess, (LPCVOID)p4, &p5, sizeof(p2), NULL);
	  cout<<"4- "<<p4<<endl;
p5 = p5 + 0x300; // указатель четвёртого уровня
		  ReadProcessMemory(hProcess, (LPCVOID)p5, &Health, 5, NULL);
	  cout<<"5- "<<p5<<endl;
		 WriteProcessMemory(hProcess, (LPVOID)p5, &str,(DWORD)sizeof(str), NULL);
		}
	 }
	   system("pause");
}

Последний раз редактировалось 2Lui; 19.03.2017 в 02:06.
2Lui вне форума Ответить с цитированием
Старый 10.05.2017, 01:35   #2
Kenjee
Новичок
Джуниор
 
Регистрация: 10.05.2017
Сообщений: 1
По умолчанию

Если через str хочешь, то передаешь вот так:
WriteProcessMemory(hProcess, (PVOID)p5, (PVOID)str.c_str(), str.Lenght()+1, NULL);
либо напрямую
WriteProcessMemory(hProcess, (PVOID)p5, (PVOID)&PatchHealth, strlen(PatchHealth)+1, NULL);
Контакт: milanov_nk@mail.ru
Kenjee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выводить только измененные строки. Перед каждой строкой записывать номер строки в исходном тексте.используя строки и текст.файл nero4ka C++ Builder 1 13.06.2015 07:14
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
ReadProcessMemory и WriteProcessMemory Berlioz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 12.11.2012 17:42
Использование WriteProcessMemory Ra88 Помощь студентам 0 31.01.2010 08:56
Аналог функции WriteProcessMemory KleoY Win Api 10 31.03.2009 01:17