Перейти к содержанию

Пишем трейнер на VC# 2010


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

Что-то я совсем туплю:)

Вот есть у меня строка байтов:

EB 00 90 90

Её длина 4байт.

Адреса начала сканирования

0000000000000000

и конца

7fffffffffffffff

.

Вот попробовал все это расставить:


{
for(;*szMask;++szMask,++pData,++bMask)
if(*szMask=='x' && *pData!=*bMask )
return false;
return (*szMask) == NULL;
}

DWORD dwFindPattern(DWORD (0000000000000000),DWORD (7fffffffffffffff), BYTE *bMask, char * szMask) {
for(DWORD i=0;i<dwLen;i++)
if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
return (DWORD)(dwAddress+i);
return NULL;
}
bool bDataCompare(const BYTE* (0EBh,000h,090h,090h), const BYTE* (x0xx), const char* (4))

Посмотрите правильно вставил данные?

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

Что-то я совсем туплю:)

Вот есть у меня строка байтов:

EB 00 90 90

Её длина 4байт.

Адреса начала сканирования

0000000000000000

и конца

7fffffffffffffff

.

Вот попробовал все это расставить:


{
for(;*szMask;++szMask,++pData,++bMask)
if(*szMask=='x' && *pData!=*bMask )
return false;
return (*szMask) == NULL;
}

DWORD dwFindPattern(DWORD (0000000000000000),DWORD (7fffffffffffffff), BYTE *bMask, char * szMask) {
for(DWORD i=0;i<dwLen;i++)
if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
return (DWORD)(dwAddress+i);
return NULL;
}
bool bDataCompare(const BYTE* (0EBh,000h,090h,090h), const BYTE* (x0xx), const char* (4))

Посмотрите правильно вставил данные?

misha, всё неправильно ))

DWORD a = FindPattern( базовый адрес модуля, размер модуля, маска, маска статичных байтов );

Полазей немного что такое c++ и верни функцию поиска паттернов в нормальный вид :)

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

  • 1 месяц спустя...

Не доконца понял допустим у меня есть DMA адрес я AutoHack нашёл что то типа


201544D0: mov eax, [ecx+0x30]
20154480: mov eax, [ecx+0x30]
20154590: mov eax, [ecx+0x30]
2015449E: mov esi, [ecx+0x30]
201544BB: mov [ecx+0x30], eax

Но что надо подставлять в

int myGame_Address = Addr.ToDec("52C0000"); // Статичный адрес указателя

int[] myGame_Offsets = { 0x42CA1A }; // Офсеты, смещение пишем в виде 0х--

int myGame_Address = Addr.ToDec("52C0000"); // Статичный адрес указателя

int[] myGame_Offsets = { 0x42CA1A }; // Офсеты, смещение пишем в виде 0х--

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

Надо найти сначала статич.. адрес указателя плюс офсеты и по нему выходим к ДМА и меняем значение в игре.

Более подробно пишите вопрос с чего начали и что не получается?

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

Открыл игру.

Артмани нашел Адрес что то типа 111544D0

В Tsearch вбил его поставил брек. И ранил героя.

В итоге вышло то что сверху.

PS С# и С++ знаю на оч хорошем уровне :) Но трейнер пишу впервые :)

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

Tsearch и Артмани не помню когда послед. раз запускал.

Советую ломать игрушки через Cheat Engine эт прога на многое способна в плане читинга.

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

Tsearch и Артмани не помню когда послед. раз запускал.

Советую ломать игрушки через Cheat Engine эт прога на многое способна в плане читинга.

Ок а как тогда чере з

Cheat Engine всё это искать :-[

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

Извините за вопрос, я не шарю в этом. Вобщем я так понял всё записывается в игру через указатели, ок. А как тогда быть с патронами? Искать указатель для каждой пушки? Если в СЕ записал в инструкцию 99 и не паришься...

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

  • 4 месяца спустя...

Ну да, а как увидишь рабочий вариант, сразу все встанет на свои места?

Никому не интересно делиться своими рабочими вариантами, учитывая то, что у каждого свой специфичный тренер.

Так что читай матчасть, и прибудет с тобой сила!

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

сила прибыла но вот горе : ( игра закрывается здесь как по мне так плохой метод открытия процесса...

у меня есть не большой кодик работы с VaMemory но беда я не знаю как работать там именно с указателем..

а это тема здорово бы мне помогла :


VAM = new VAMemory("Game"); // Имя процесса, без .exe!
VAM.WriteByte((IntPtr)0x05AАF723, byte.Parse(textBox1.Text.ToString())); // Изменяем значение по адресу 01005194, не забываем про 0x********!

вот изменяем значение адреса .значения для изменения берём из ТекстБокса , но проблема адрес является "указателем" но он должен указывать на один адрес и если к нему прибавить +30 то выйдем на главный! есть какиие способы так сделать?

потом сделал по другому чтоб можно было вписывать адрес конечный ..но это не удобно нужно зайти через СЕ найти адрес конечный вписать сюда и то тоже не работало : (


VAM = new VAMemory("Game"); //Имя процесса, без Game
int Jordan = Convert.ToInt32(textBox1.Text, 16);

label2.Text = (Convert.ToString(VAM.ReadByte((IntPtr)Jordan))); //label2 принимает значение по адрессу 011D0EA0 не забываем про 0x********!
textBox1.Text = label2.Text;

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

  • 2 года спустя...

И еще вопрос  как эту строку переделать во значение float

 byte[] bValue_To_Write = BitConverter.GetBytes(100000); //3аписиваем количество. 

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

И еще вопрос  как эту строку переделать во значение float

 byte[] bValue_To_Write = BitConverter.GetBytes(100000); //3аписиваем количество. 

byte[]bValue_To_Write = BitConverter.GetBytes((float)1000000);
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

byte[]bValue_To_Write = BitConverter.GetBytes((float)1000000);

спасибо!

и еще вопрос вот всё работает, но я поставил значение float 1 типа бесконечный азот как  заморозить значение?

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

и еще вопрос вот всё работает, но я поставил значение float 1 типа бесконечный азот как  заморозить значение?

 

Через таймер.

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

Да так и сделал, но указатель статический 5-уровневый со смешениями указал и не работает. Что может быть? Ведь когда я указывал адрес динамический и то работало.

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

Да так и сделал, но указатель статический 5-уровневый со смешениями указал и не работает. Что может быть? Ведь когда я указывал адрес динамический и то работало.

 

Покажи код,что не работает, указатель не тот? в СЕ проверял?

Больше информации. фото видео и т.д.

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

Покажи код,что не работает, указатель не тот? в СЕ проверял?

код такой 

int myGame_Address = Addr.ToDec("0077F210"); // Статичный адрес указателя
int[] myGame_Offsets = { 0xF0, 0x4, 0x0, 0xD4, 0x80 }; // Офсеты, смещение пишем в виде 0х--
вот сохранение таблицы при перезапуске игры всё работает.
<Address>"nfsc.exe"+0077F210</Address>
      <Offsets>
        <Offset>80</Offset>
        <Offset>D4</Offset>
        <Offset>0</Offset>
        <Offset>4</Offset>
        <Offset>F0</Offset>
      </Offsets>

Да указатель не тот. Я не понял откуда его взять. Ведь как написал не работает.

Вот ссылка таблица сохраненная игра NFS Carbon, но можно открыть текстовым редактором и смотреть смешение и адрес.

А про видео у меня интернет тихий... + Мало кто кодит читы на C#

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

×
×
  • Создать...

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

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