Перейти к содержанию
Авторизация  
Гость BZK_GH

Создаем Трейнер на C#

Рекомендуемые сообщения

Сразу мне не понять это, но потихоньку набираю опыта по VC#.

Ниже прикрепил демо_трейнер со звуком, звук вместе с екзешником, но как внедрить в exe звук пока не понял, есть направление?

демо_трейнер:gtatrn.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как внедрить в exe звук пока не понял, есть направление?

Используй ресурсы, вот статейка. :lol:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так и делаю, статейку читал с этого начинал, все файлы в папке ресурс, в ресурсах в свойствах делаю внедренный ресурс объем трейнер прибавляется но все равно приходиться таскать с собой музон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот пример.

trainerActivated.wav помещаем в ресурсы.


using System;
using System.Media;
using System.Windows.Forms;

namespace PlaySound
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private readonly SoundPlayer _soundPlayer = new SoundPlayer();

private void Button1Click(object sender, EventArgs e)
{
_soundPlayer.Stream = Properties.Resources.trainerActivated;
_soundPlayer.Play();
}
}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как всегда работает твой пример.

Сделал так, чем отличие между _ и без него?


soundPlayer.Stream = Properties.Resources.AGAiN;
soundPlayer.Play();

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Символ "_" это условное обозначение того, что переменная закрыта и объявлена внутри класса, а не внутри функции. Такой стиль используют многие программисты C#.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну все, братцы геймхакеры, вот вам и Трейнер все очень просто :grin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет.

Вот такая проблемка, как писать модульную адрес указателя. Что хочу сделать, как понятно всем адреса меняются в игре, адрес указателя указать как модульная или как в c# это делается?

Вот из моего проекта код.


Memory oMemory = new Memory();
Process[] oProcess;
bool GameRun = false;


bool UnlimitedHealth = false;
string HealthPointer = "01DF4D4C";
int[] HealthOffset = { 0x240, 0x14, 0x8 };
int HealthToFill = 800;

bool UnlimitedVigor = false;
string VigorPointer = "01DF4D4C"; // witcher2.exe+00D14D4C указать вот эту.
int[] VigorOffset = { 0x240, 0x14, 0x10 };
int VigorToFill = 6;

bool UnlimitedMedallion = false;
string MedallionPointer = "01DF4D4C";
int[] MedallionOffset = { 0x240, 0x14, 0x254 };
int MedallionToFill = 1;

И таймер



Process[] aProcesses = Process.GetProcessesByName("witcher2");
if (UnlimitedHealth)
{
oMemory.ReadProcess = oProcess[0];
oMemory.Open();

int pointerAdress = Addr.ToDec(HealthPointer);
int[] pointerOffset = HealthOffset;

int bytesWritten;
byte[] valueToWrite = BitConverter.GetBytes((float)HealthToFill);
string sWritten_Address = oMemory.PointerWrite((IntPtr)pointerAdress, valueToWrite, pointerOffset, out bytesWritten);

oMemory.CloseHandle();


}

Process[] aProcessces = Process.GetProcessesByName("witcher2");
if (UnlimitedVigor)
{
oMemory.ReadProcess = oProcess[0];
oMemory.Open();

int pointerAdress = Addr.ToDec(VigorPointer);
int[] pointerOffset = VigorOffset;

int bytesWritten;
byte[] valueToWrite = BitConverter.GetBytes((float)VigorToFill);
string sWritren_Address = oMemory.PointerWrite((IntPtr)pointerAdress, valueToWrite, pointerOffset, out bytesWritten);
oMemory.CloseHandle();

}

Process[] aProcesscces = Process.GetProcessesByName("witcher2");
if (UnlimitedMedallion)
{
oMemory.ReadProcess = oProcess[0];
oMemory.Open();


int pointerAdress = Addr.ToDec(MedallionPointer);
int[] pointerOffset = MedallionOffset;


int bytesWritten;
byte[] valueToWrite = BitConverter.GetBytes((float)MedallionToFill);
string sWritten_Address = oMemory.PointerWrite((IntPtr)pointerAdress, valueToWrite, pointerOffset, out bytesWritten);
oMemory.CloseHandle();

}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ZOCKIR, если ищешь ответ, то тебе надо копать функции по получению данных из процесса и модулей. Если таких не найдёшь для .NET фреймверка, то ищи их в API Windows. Как поймёшь их работу переноси на C# через импорт необходимых функций, если тебе нужно писать на C#.

Общее впечатление - ищешь лишних трудностей, когда уже есть Cheat Engine

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я просто фанат NET технологии :grin:

Решаю данный вопрос если что будет полезное сообщу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость Draiget

Вот такая проблемка, как писать модульную адрес указателя. Что хочу сделать, как понятно всем адреса меняются в игре, адрес указателя указать как модульная или как в c# это делается?

Если все еще надо, я делал так:


public IntPtr GetModuleAdress(string ModuleName, string processName)
{
Process ProcessMain = null;
foreach (Process clsProcess in Process.GetProcessesByName(processName))
{
if (clsProcess.ProcessName == processName)
{
ProcessMain = clsProcess;
}
}

IntPtr return_value = (IntPtr)0;
ProcessModule myProcessModule;
ProcessModuleCollection myProcessModuleCollection = ProcessMain.Modules;
for (int i = 0; i < ProcessMain.Modules.Count; i++)
{
myProcessModule = myProcessModuleCollection[i];
if (myProcessModule.ModuleName == ModuleName)
{
return_value = myProcessModule.BaseAddress;
}
}
return return_value;
}

public void Write(){
IntPtr client_RDrawModels = GetModuleAdress("client.dll", PorcessHL2Name) + Convert.ToInt32(0x6F6370);

VAMemory memory = new VAMemory();
memory.processName = PorcessHL2Name;
memory.WriteByte(client_RDrawModels, Convert.ToByte(1));
}

...Convert.ToInt32(0x6F6370); - тут пишем адрес, а тут ...GetModuleAdress("client.dll"... имя модуля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость error

А асму типа:

__declspec(naked)void test_on()

{

_asm

{

fld dword ptr[test]

mov esp,ebp

jmp dword ptr[RETURN_test]

}

}

На с# вообще реал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А асму типа:

__declspec(naked)void test_on()

{

_asm

{

fld dword ptr[test]

mov esp,ebp

jmp dword ptr[RETURN_test]

}

}

На с# вообще реал?

Как вариант - собирать длл-ку с нужным асм-кодом и подгружать в своём проекте, просто так инлайн-ассемблер не поддерживается. Ещё можно попробовать часть проекта написать на C++, где этот самый ассемблер присутствует.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость Draiget
]

На с# вообще реал?

Да, вполне хорошие читы выходят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, вполне хорошие читы выходят.

Ты точно уверен, что дочитал его пост?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость GradenT

Всем привет!

Столкнулся с проблемой с назначением горячих клавиш " On/Off " ,естественно на одну клавишу. ( C# )

Не где инфо не смог найти, может здесь кто знает...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет.

Более подробно пишите?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ищи классы со словами Keyboard Hook или KeyboardHook, или просто Hook.

Ввот например интересная статья == > тут, или тут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да все просто - для каждой клавиши (или чита, за которую клавиша отвечает) прописываешь отдельную переменную (можно булеву, то есть, логическую). Когда чит включен, переменной присваиваешь true, когда выключен - false. Ну и, собственно, по нажатию на клавишу проверяешь состояние переменной, ассоциированной с этой клавишей (читом), если false - значит, чит выключен, и его надо включить. Если же true - соответственно, чит включен, и его надо выключить. И да, после выполнения действия, переменной надо, естественно, присвоить соответсвующее значение. Это элементарное условие, я даже код приводить не буду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!Можете помочь?

У меня есть несколько вопросов:

1)По чему лучше освоить C#?

а)По книгам?

б)По урокам и статьям?

Или напишите свой вариант.

2)Есть ли статья по созданию трейнеров на C#?

Искал статьи по Winapi для трейнеров и не нашел.Есть ли тут урок?

В заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) А для чего?

2) На форуме существует система поиска.

А вообще, на Си шарпе не особо много юзверов пишет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1) А для чего?

Чтобы программы на ней писать,ну и трейнеры.Ну это пока что мне для начало нужно.Потом буду учиться на С++.Мне щас главное C# освоить хоть немного!

2) На форуме существует система поиска.

Я знаю,но статей я там не нашел.

А вообще, на Си шарпе не особо много юзверов пишет.

Да норм.Новички которые начинают писать трейнер на каком нибудь языке программирования,они с этого и начинают:)

А так обычно большинство людей с Cheat Engine начинают делать трейнеры.Я на нем уже писал но с него не оч. писать трейнеры.

Я по видео уроку кенга делал но там нету урока,как писать горячие клавиши для трейнера:(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я знаю,но статей я там не нашел.

Link jackie.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как можно C# освоить для создание трейнеров?

По книгам или как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не видел я ни одной книги - "создание тренеров на шарпе".

Статьи, книги, монографии - все то, что поможет простому программированию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.