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

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

Пробовал кто ломать GTA от 1С?

Очень странная проблема: если открыть Cheat Engine или MHS игра периодически вылетает. Может вылететь при загрузке сохранения или в процессе взлома, когда как. При этом в CE я даже процесс игры выбрать не успеваю, всё равно вылетает. Возможно он палится по окну... C Artmoney и Tsearch пока ни разу не вылетело.

И ещё. Вот 2 скрипта на бессмертие:

Tsearch:


fld dword ptr [ecx+0x354]
push eax

mov eax,[0x0078F7EC]
cmp ecx,eax
pop eax
jne 0x501999
mov dword ptr [ecx+0x354],0x4479C000
jmp 0x501999

Offset 0x501993
jmp 0x006E794F
nop
Offset 0x006E794F

и CE:


aobscan(_faddress,d9xxxxxxxxxxd8xxxxxxxxxxdfxxf6xxxx75xx80xxxxf6xxxx74xx30xxxxb0)
alloc(_newmem,2048)

_newmem:
push eax
mov eax,[0078f7ec]
cmp eax,ecx
pop eax
jne _faddress+6
mov dword ptr [ecx+354],4479C000
jmp _faddress+6

_faddress: // 00501993 = gta-vc.exe+101993
jmp _newmem
nop

[DISABLE]
aobscan(_faddress,90d8xxxxxxxxxxdfxxf6xxxx75xx80xxxxf6xxxx74xx30xxxxb0)

_faddress-5:
fld dword ptr [ecx+00000354]

dealloc(_newmem)
//Alt: db D9 81 54 03 00 00
[ENABLE]

Скрипты вроде бы идентичны, но скрипт CE приводит к ошибке 0xc00000005 и вылету из игры :( Без фильтра на игрока кстати скрипт работает стабильно

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

1.

В скрипте CE ты не учёл fld dword ptr [ecx+00000354]. Эта инструкция смещает стек сопроцессора и требует выгрузки, чтобы не было краха игры

2.

Если без фильтра не вылетает, а с ним вылетает, то можно попробовать сохранять регистр флагов

pushf
...

....
popf

Идентично тому же pushad или popad.

3.

Также могу ещё обратить внимание на то чтобы не применять фильтры повсеместно. В данном случае можно было что-то вроде этого (здесь цитата, чтобы можно было выделить жирным шрифт моментов на которые стоит обратить внимание)

_newmem:

push eax

mov eax,[0078f7ec]

mov dword ptr [eax+354],4479C000

pop eax

fld dword ptr [ecx+00000354]

jmp _faddress+6

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

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

Сделал бессмертие без фильтра сравнением начала структуры с указателем 0x694D70. У врагов (и всех остальных) структура NPC начинается с 691BAC и всё прекрасно фильтруется. Правда с машинами такой финт почему-то не прошёл. Мои машины имеют указатель 0x69AD90, у других 0x68B5DC, но нифига не фильтруется :( Но если фильтровать по указателю на машину в структуре NPC, то всё работает. Так что бог с ним) Сделал машину неврзываемой, а как сделать не бъющейся?

Поставил бряк на запись на здоровье двигателя, заехал в перекраску, починился. Вылезла одна инструкция, записывающая в адрес двиателя его макс. значение. Что мне с этим делать, как остальной корпус починить? Попробовал найти оператор ret выше сработавшей инструкции и сделал прыжок на следующую после него строку. Конечно же случился вылет :)

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

По идее машина состоит из объектов, капота, дверей, бампера.... которые имеют видимо свой урон. Если урон больше определённой величины, то происходит анимация (бьётся стекло, отваливание). При каждой анимации урон может сбрасываться в ноль... в общем надо копаться и скать. Лучше сканером памяти в определённых диапазонах адресов.

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

Нашёл исходники тренера, неубиваемая тачка делается, если прописать по смещению 50 в структуре машины вот такую хитрую цифру 0xE0EC102. Подиж ты взломай попробуй %) осталось придумать, как уже помятую машину починить без гаража.

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

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

Отдельной темы по Сан Андреасу создавать не буду. Хочу сделать телепортер к маркерам на карте. В игре есть некая структура координат всех маркеров на карте. Эта структура статическая, все адреса зелёные, без указателей. Предположим начинается она с адреса 00baad78 - координата X, 00baad7c - координата Y, 00baad80 - координата Z одного из маркеров на карте (у меня это покупка недвижимости). Далее 00baad80+20h = 00baada0 - координата X след. объекта и т.д. (что лежит между 00baad80 и 00baada0 непонятно).

Координаты игрока [[pPlayer+14]+30] - X, [[pPlayer+14]+34] - Y, [[pPlayer+14]+38] - Z

Кто подскажет скрипт, перебирающий координаты из структуры координат маркеров и телепортирующий игрока по нажатию хоткея?

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

Наброски что-то типа этого, но должны быть варианты и по эффективнее:

newmem:
push eax
mov eax,[pPlayer]
mov eax,[eax+14]
mov eax,[eax+30] //для игрока eax=x, eax+4=y, eax+8=z

push ebx
push ecx
mov ebx,[LocateCoord]
mov ecx,[IndexLoc]
lea ebx,[ebx+ecx]//[LocateCoord]+[IndexLoc]=X

mov ecx,[ebx]
mov [eax],ecx
mov ecx,[ebx+4]
mov [eax+4],ecx
mov ecx,[ebx+8]
mov [eax+8],ecx

pop ecx
pop ebx
pop eax

dd pPlayer
dd pPlayerCoord
dd LocateCoord
dd IndexLoc

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

  • 7 месяцев спустя...

Здоровье=500

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

00558B41:
jmp newmem
nop
returnhere:

newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov [eax+00000354],43FA0000

originalcode:
fld dword ptr [eax+00000354]

exit:
jmp returnhere


[DISABLE]
//code from here till the end of the code will be used to disable the cheat
00558B41:
fld dword ptr [eax+00000354]

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

Броня=500

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

00558D62:
jmp newmem
nop
returnhere:

newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov [eax+00000358],43FA0000

originalcode:
fld dword ptr [eax+00000358]

exit:
jmp returnhere



[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
00558D62:
fld dword ptr [eax+00000358]
//Alt: db D9 80 58 03 00 00

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

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

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

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