Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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



Ответ
 
Опции темы
Старый 19.03.2017, 02:56   #1
2Lui
Пользователь
 
Регистрация: 14.03.2017
Сообщений: 11
Репутация: 10
По умолчанию 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 в 03:06.
2Lui вне форума   Ответить с цитированием
Старый 10.05.2017, 02:35   #2
Kenjee
Новичок
 
Регистрация: 10.05.2017
Сообщений: 1
Репутация: 10
По умолчанию

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




13:56.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru