Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 07.10.2014, 18:37   #1
 Старший сержант
Аватар для крайслер
 
крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
Отправить сообщение для крайслер с помощью Skype™
 
По умолчанию Пишем Трейнер На C++.net

Все манипуляции будут происходить на WinForm С++.

1) Создаем проект C++ ->WinForm
2) Для начала опишем класс для патча памяти и определения процеса:

- Создаем новый класс внутри проекта: ПКМ -> Добавить -> Класс -> Далее -> Даем имя нашему классу(я назвал "cMemoryEdit") -> ОК.

cMemoryEdit.h
Код:
#pragma once
#include <Windows.h>
#include <TlHelp32.h>
#include <psapi.h> 

ref class cMemoryEdit
{
public:
	cMemoryEdit(char* ProcessName);
	bool GetProcess();
	void ExWriteMemory(DWORD dwAddress, char *Patch_Bts);
	
	template <class cData>
	void Write(DWORD dwAddress, cData Value)
	{
		WriteProcessMemory(hProcess, (LPVOID)dwAddress, &Value, sizeof(cData), NULL);
	}
private:
	char* ProcessName;
	HANDLE hProcess;
	DWORD dwPID;
        __int32 СharLength(char *chArray);
};
cMemoryEdit.cpp
Код:
#include "stdafx.h"
#include "cMemoryEdit.h"


cMemoryEdit::cMemoryEdit(char* ProcessName)
{
	this->ProcessName = ProcessName;
}
void    cMemoryEdit::ExWriteMemory(DWORD dAdress, char *pBYTE)
{
	__int32 iSize = СharLength(pBYTE);
	for (__int32 i = 0; i < iSize; i++)
		Write<BYTE>(dAdress + i, pBYTE[i]);
}
__int32 cMemoryEdit::СharLength(char *chArray)
{
	for (__int32 iLength = 1; iLength < MAX_PATH; iLength++)
	if (chArray[iLength] == '\0')
		return iLength;
	return 0;
}
bool    cMemoryEdit::GetProcess()
{
	HANDLE hPID = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
	PROCESSENTRY32 pEntry;
	pEntry.dwSize = sizeof(pEntry);
	do
	if (!strcmp(pEntry.szExeFile, ProcessName))
	{
		dwPID = pEntry.th32ProcessID;
		CloseHandle(hPID);
		hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
		return true;
	}
	while (Process32Next(hPID, &pEntry));
	return false;
}
Как видим тут я описал только открытие процесса на полный доступ + запись данных в память.


Подключаем класс к форме(у меня это фаил Form1.h)
Код:
#include "cMemoryEdit.h"
Внутри класса формы создаем новый экземпляр класса:
Код:
cMemoryEdit^ MemHack = gcnew cMemoryEdit("Game.exe");
Общий код:
Код:
public ref class Form1 : public System::Windows::Forms::Form
	{
	public:

		cMemoryEdit^ MemHack = gcnew cMemoryEdit("Game.exe");

		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: добавьте код конструктора
			//
		}

Первым делом нам нужно вызвать:
Код:
MemHack->GetProcess()
Эта функция определит запущен ли процесс и если запущен "иницализирует весь класс")
Код:
 if (!MemHack->GetProcess())
				 {
				       //Find Game
				 }
				 else
				 {
					 //Found Game
					 
				 }

Как только процесс найден мы можем свободно патчить нужные нам участки памяти:
Код:
DWORD dwSprint = 0x11AC807;
MemHack->ExWriteMemory(dwSprint, "\x75\x06");

На этом все)))


ЗЫ: Исходный код решил не сливать) Если будут вопросы - задавайте)
________________

-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
Dimedrol1536 (10.10.2014), MembRupt (08.10.2014), Nik-sin (12.10.2014), Wippy (21.10.2014)
Старый 12.10.2014, 02:10   #2
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Пишем Трейнер На C++.net

на шарпе все же красивее выходит ))
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
  Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишем трейнер на Delphi для Warface joker100497 Pascal/Delphi 3 04.04.2014 23:13
Пишем трейнер для WarFace и не только joker100497 C# 0 04.02.2014 19:46
Пишем трейнер на VC++ Silence С/С++ 1 04.07.2009 01:08

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 05:02.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net