aliast Опубликовано 12 мая, 2010 Поделиться Опубликовано 12 мая, 2010 Пробовал кто ломать 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 nopOffset 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 и вылету из игры Без фильтра на игрока кстати скрипт работает стабильно Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 12 мая, 2010 Поделиться Опубликовано 12 мая, 2010 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Как видно здесь мы не пишем фильтр и этим самым вероятно увеличиваем шанс чтобы герой был жив даже при сверхсильном уроне. Хотя предполагаю что производительность чуть будет страдать. Чтобы более точно определить нужно посчитать лишние такты. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 13 мая, 2010 Автор Поделиться Опубликовано 13 мая, 2010 Сделал бессмертие без фильтра сравнением начала структуры с указателем 0x694D70. У врагов (и всех остальных) структура NPC начинается с 691BAC и всё прекрасно фильтруется. Правда с машинами такой финт почему-то не прошёл. Мои машины имеют указатель 0x69AD90, у других 0x68B5DC, но нифига не фильтруется Но если фильтровать по указателю на машину в структуре NPC, то всё работает. Так что бог с ним) Сделал машину неврзываемой, а как сделать не бъющейся?Поставил бряк на запись на здоровье двигателя, заехал в перекраску, починился. Вылезла одна инструкция, записывающая в адрес двиателя его макс. значение. Что мне с этим делать, как остальной корпус починить? Попробовал найти оператор ret выше сработавшей инструкции и сделал прыжок на следующую после него строку. Конечно же случился вылет Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 13 мая, 2010 Поделиться Опубликовано 13 мая, 2010 По идее машина состоит из объектов, капота, дверей, бампера.... которые имеют видимо свой урон. Если урон больше определённой величины, то происходит анимация (бьётся стекло, отваливание). При каждой анимации урон может сбрасываться в ноль... в общем надо копаться и скать. Лучше сканером памяти в определённых диапазонах адресов. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 13 мая, 2010 Автор Поделиться Опубликовано 13 мая, 2010 Нашёл исходники тренера, неубиваемая тачка делается, если прописать по смещению 50 в структуре машины вот такую хитрую цифру 0xE0EC102. Подиж ты взломай попробуй осталось придумать, как уже помятую машину починить без гаража. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 4 июня, 2010 Автор Поделиться Опубликовано 4 июня, 2010 Отдельной темы по Сан Андреасу создавать не буду. Хочу сделать телепортер к маркерам на карте. В игре есть некая структура координат всех маркеров на карте. Эта структура статическая, все адреса зелёные, без указателей. Предположим начинается она с адреса 00baad78 - координата X, 00baad7c - координата Y, 00baad80 - координата Z одного из маркеров на карте (у меня это покупка недвижимости). Далее 00baad80+20h = 00baada0 - координата X след. объекта и т.д. (что лежит между 00baad80 и 00baada0 непонятно).Координаты игрока [[pPlayer+14]+30] - X, [[pPlayer+14]+34] - Y, [[pPlayer+14]+38] - ZКто подскажет скрипт, перебирающий координаты из структуры координат маркеров и телепортирующий игрока по нажатию хоткея? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 июня, 2010 Поделиться Опубликовано 4 июня, 2010 Наброски что-то типа этого, но должны быть варианты и по эффективнее:newmem:push eaxmov eax,[pPlayer]mov eax,[eax+14]mov eax,[eax+30] //для игрока eax=x, eax+4=y, eax+8=zpush ebxpush ecxmov ebx,[LocateCoord]mov ecx,[IndexLoc]lea ebx,[ebx+ecx]//[LocateCoord]+[IndexLoc]=Xmov ecx,[ebx]mov [eax],ecxmov ecx,[ebx+4]mov [eax+4],ecxmov ecx,[ebx+8]mov [eax+8],ecxpop ecxpop ebxpop eaxdd pPlayerdd pPlayerCoorddd LocateCoorddd IndexLoc 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 20 января, 2011 Поделиться Опубликовано 20 января, 2011 Здоровье=500[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048) //2kb should be enoughlabel(returnhere)label(originalcode)label(exit)00558B41:jmp newmemnopreturnhere:newmem: //this is allocated memory, you have read,write,execute access//place your code heremov [eax+00000354],43FA0000originalcode:fld dword ptr [eax+00000354]exit:jmp returnhere[DISABLE]//code from here till the end of the code will be used to disable the cheat00558B41:fld dword ptr [eax+00000354] Ссылка на комментарий Поделиться на другие сайты Поделиться
Grom-Skynet Опубликовано 20 января, 2011 Поделиться Опубликовано 20 января, 2011 Броня=500[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048) //2kb should be enoughlabel(returnhere)label(originalcode)label(exit)00558D62:jmp newmemnopreturnhere:newmem: //this is allocated memory, you have read,write,execute access//place your code heremov [eax+00000358],43FA0000originalcode:fld dword ptr [eax+00000358]exit:jmp returnhere[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)00558D62:fld dword ptr [eax+00000358]//Alt: db D9 80 58 03 00 00 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения