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

GTA IV - Таблицы на GodMod. Как правильно оформить?


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

Хотел сделать взлом здоровья более быстрым, но не прокатило. Плоховато владею Assembler'ом.

 
[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute access//place your code heremov ecx,(float)200.0mov [eax+10],ecxoriginalcode:mov [eax+10],ecxexit:jmp returnhere"xlive.dll"+22D5:jmp newmemreturnhere:  [DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"xlive.dll"+22D5:mov [eax+10],ecxxor eax,eax//Alt: db 89 48 10 33 C0

С этим игра вылетает =(

Походу надо что с "xor eax,eax" сделать, но я не знаю что. Помогите , пожалуйста.

 

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

Неправильная инструкция найдена. xlive.dll не занимается обработкой здоровья игрока.

Спасибо. Попробую поискать.

 

Кстати, если эту инструкцию нопить. Здоровье у игрока не отнимается.

 

Не могу найти другую инструкцию, только находит xlive.

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

Вылетает скорее всего из-за xlive.dll, на форуме много раз выкладывали способ его обхода, поищи.

P.S.

Попробуй такой скрипт: (скрипт уменьшен из-за нужд скрипта, т.к. убраны некоторые метки, какие - читай комментарии)

[ENABLE]alloc(newmem,2048)label(returnhere)// метки originalcode и exit убираем, и из тела скрипта - тожеnewmem:mov ecx,(float)200.0mov [eax+10],ecx // в своем коде ты дважды написал эту инструкцию, первый раз - в newmem, второй раз - в originalcodexor eax,eax // в своем скрипте ты забыл эту команду добавить в originalcodejmp returnhere// -- начало примера --//Код в блоке newmem с использованием originalcode и exit можно было записать так: (сравни со своим - поймешь ошибки)//newmem://mov ecx,(float)200.0 <-- здесь устанавливаем регистру ecx значение 200 во Float// <-- тут была лишняя инструкция "mov [eax+10],ecx", т.к. она выполняется дальше - в originalcode//originalcode://mov [eax+10],ecx <-- здесь берем значение из регистра ecx//xor eax,eax//exit://jmp returnhere// -- конец примера --"xlive.dll"+22D5:jmp newmemreturnhere:  [DISABLE]"xlive.dll"+22D5:mov [eax+10],ecxxor eax,eaxdealloc(newmem) // освобождаем выделенную ранее память, после восстановления оригинального кода//Alt: db 89 48 10 33 C0 <-- это можно удалить, оно в общем-то не нужно, если ты не собираешься писать скрипт с AobScan-ом
Ссылка на комментарий
Поделиться на другие сайты

Вылетает скорее всего из-за xlive.dll, на форуме много раз выкладывали способ его обхода, поищи.

 

Спасибо! А можете скнинуть статью про обход xlive.dll? Было бы здорого. Я что-то её не нашел.

К сожалению, с вашим скриптом тоже крашится. Но не так быстро. Надо значит как то xlive обходить :с

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

Спасибо! А можете скнинуть статью про обход xlive.dll? Было бы здорого. Я что-то её не нашел.

К сожалению, с вашим скриптом тоже крашится. Но не так быстро. Надо значит как то xlive обходить :с

Не помню, где именно, но обсуждалось и выкладывались методы обхода не раз. Как вариант, почитай эту тему. А лучше - используй поиск по форуму, найдется все, что нужно.
Ссылка на комментарий
Поделиться на другие сайты

Не помню, где именно, но обсуждалось и выкладывались методы обхода не раз. Как вариант, почитай эту тему. А лучше - используй поиск по форуму, найдется все, что нужно.

 

Вообще удаляешь Games for windows live из системы. Качаешь крякнутый xlive.dll кидаешь его в папку с игрой(там где exe файл)

 

....Profit

Спасибо!

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

Вообще удаляешь Games for windows live из системы. Качаешь крякнутый xlive.dll кидаешь его в папку с игрой(там где exe файл)

 

....Profit

 

Но все же, есть хорошая статейка по взлому Xlive. Я сам хотел ее пробить, но у меня небыло подходящей таблицы для тестирования обхода, т.к. взламывал лицуху из стимака.

Tzeentch, как закончишь взлом - скинь табличку в ЛС) Хочу все таки пробить эту несчастную Xlive :)

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

По ходу у меня уже изначально на клиенте стоял Xliveless. В моем скрипте осталось фильтр на игрока поставить. Но я не знаю как. Нужно чтобы эта функция действовала только на здоровье игрока. Кто может, помогите пожалуйста.

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

У меня есть идея. У всех адресов смещение на 10 значение всегда меньше чем 100. А максимум здоровья игрока 200 и не может опуститься меньше чем 100. Может можно как то поставить условие на это. Тогда получится что-то вроде фильтра.


Типо:



cmp [eax+10],<(float)100.0
jne originalcode
mov ecx,(float)200.0
originalcode:
mov [eax+10],ecx
xor eax,eax 

То есть если значение больше 100, то добавляется ему здоровье. Если меньше 100, то не добавляется. У всех других адресов в основном 1-5, но до 100 не доходит.


По мне так не плохая альтернатива ИД.


Но как в скрипте правильно знак "<" писать?


Подскажите пожалуйста.


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

cmp [eax+10],(float)100.0jbe originalcodemov ecx,(float)200.0originalcode:mov [eax+10],ecxxor eax,eax
Есть инструкция прыжок, если меньше или равно jbe, или если меньше jb. Применяй нужную. Пример я привёл.

JBE - Jump if Below or Equal - прыжок, если меньше или равно

JB - Jump if Below - прыжок, если меньше

JGE - Jump if Greater or Equal - прыжок, если больше или равно

JG - Jump if Greater - прыжок, если больше.

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

Тогда еще от меня вопрос, я C# тренеры делал тут приходится делать бесконечность через таймер, А штатным средством CE замораживает значение не так?

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

  • 2 недели спустя...

А можно поставить флаг таким образом: Если значение равно указанной структуре, то пропускает. То есть, если одна инструкция равна другой инструкции, то моя инъекция срабатывает.

cmp [eax+10]=[esi+15]///пример в моём пониманииjne originalcodemov ecx,(float)200.0originalcode:mov [eax+10],ecxxor eax,eax  

Как бы, если значение в одной инструкции равно значению в другой инструкции.

Мне интересно, может таким способом можно будет свести баги к минимуму.

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

А можно поставить флаг таким образом: Если значение равно указанной структуре, то пропускает. То есть, если одна инструкция равна другой инструкции, то моя инъекция срабатывает.

cmp [eax+10]=[esi+15]///пример в моём пониманииjne originalcodemov ecx,(float)200.0originalcode:mov [eax+10],ecxxor eax,eax  

Как бы, если значение в одной инструкции равно значению в другой инструкции.

Мне интересно, может таким способом можно будет свести баги к минимуму.

Попробуй так:

push ebx // сохраняем регистр, которым будем пользоватьсяmov ebx,dword ptr[esi+15] // загоняем в него нужное значениеcmp [eax+10],ebx //сравниваемpop ebx // восстанавливаем регистр, после использования jne originalcodemov ecx,(float)200.0originalcode:mov [eax+10],ecxxor eax,eax  
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

 

Попробуй так:

push ebx // сохраняем регистр, которым будем пользоватьсяmov ebx,dword ptr[esi+15] // загоняем в него нужное значениеcmp [eax+10],ebx //сравниваемpop ebx // восстанавливаем регистр, после использования jne originalcodemov ecx,(float)200.0originalcode:mov [eax+10],ecxxor eax,eax  

 

Спасибо. Попробую.

Так.. Как мне сделать фильтр на патроны у игрока? 

mov [eax+10],ecx - отвечает не только за здоровье игрока, но и за его патроны.

Мне нужно как то отфильтровать адреса отвечающие за патроны, чтобы не повлечь крах игры при их изменении.

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

Спасибо. Попробую.

Так.. Как мне сделать фильтр на патроны у игрока? 

mov [eax+10],ecx - отвечает не только за здоровье игрока, но и за его патроны.

Мне нужно как то отфильтровать адреса отвечающие за патроны, чтобы не повлечь крах игры при их изменении.

Описывалось уже не раз и в видео есть:

1. в Отладчике выдели свою инструкцию ( mov [eax+10],ecx)

 2. Правой кнопкой по ней -  выбираем из контекстного меню: "Найти адреса, получающие доступ к этой инструкции. ) Новое окно.

3. Вернись в игру, чтобы в окне появились адреса.

4. Вернись  в окно, посмотри на адреса (правой кнопкой - показать регистры). Обычно по одному регистру все адреса будут отличаться.

Вот его (и значение в этом регистре) и выбирай за ID. 

Так можно отдельно для каждой характеристики написать, что хочешь, разделив их этим фильтром в коде инъекции .

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

Описывалось уже не раз и в видео есть:

1. в Отладчике выдели свою инструкцию ( mov [eax+10],ecx)

 2. Правой кнопкой по ней -  выбираем из контекстного меню: "Найти адреса, получающие доступ к этой инструкции. ) Новое окно.

3. Вернись в игру, чтобы в окне появились адреса.

4. Вернись  в окно, посмотри на адреса (правой кнопкой - показать регистры). Обычно по одному регистру все адреса будут отличаться.

Вот его (и значение в этом регистре) и выбирай за ID. 

Так можно отдельно для каждой характеристики написать, что хочешь, разделив их этим фильтром в коде инъекции .

 

Спасибо.

Конечно. Буду стараться сделать всё как надо)

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

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

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

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