Garik66 Опубликовано 11 мая, 2014 Поделиться Опубликовано 11 мая, 2014 Спросил двух мастеров: в какую тему мне, как новичку, можно писать, пока ничего не ответили, поэтому создал новую тему.Пишу под себя тренер для игры Dark Souls V. 1.01.Использую Чит Egnite против 6.3 (RU).Вопросов много возникает походу написания.Вот один из них:Это код на бессмертие и убийство с одного удара.[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem:push edxlea edx,dword ptr [esi+000000FC]cmp edx,087bDE2Cpop edxje returnhereoriginalcode:mov [esi+000000FC],0exit:jmp returnhere"DarkSoulsII.exe"+1BB521:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"DarkSoulsII.exe"+1BB521:mov [esi+000000FC],ecxЕсли в строке "CMP EDX, 087bDE2C" стоит адрес для текущей загрузки игры, код работает.Нашёл постоянный адрес [[[DarkSoulsII.exe + FB3E3C] +74] + Ь] здоровья Ггероя.Никак не получается записать этот адрес с указателями в код, чтобы не было вылета из игры.Перепробовал разные варианты, вот один из них:[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem: pushflea edx,dword ptr [esi+000000FC]mov esp,[DarkSoulsII.exe+FB3E3C]mov esp,[esp+74]lea esp,[esp+fc]cmp edx,esppopfje returnhereoriginalcode:mov [esi+000000FC],0exit:jmp returnhere"DarkSoulsII.exe"+1BB521:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"DarkSoulsII.exe"+1BB521:mov [esi+000000FC],ecxПодскажите, как правильно записать адрес с указателями в код. Я грешу, что вылет происходит из-за выбора регистра, в моём случае ESP, хотя тоже пробовал несколько вариантов.PS: На всякий случай: [DarkSoulsII.exe + FB3E3C] можно записать и так [013B3E3C]. Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 12 мая, 2014 Поделиться Опубликовано 12 мая, 2014 Да и значение edx и esp запарывается, т.к. pushf их не сохраняет. Используйте pusha/popaЕсть пара вопросов.1. Ориганальный код в кейве помещает 0, а в исходнике ecx. Опечатка?originalcode:mov [esi+000000FC],0...[DISABLE]dealloc(newmem)"DarkSoulsII.exe"+1BB521:mov [esi+000000FC],ecx2. Что такое Ь ?[[[DarkSoulsII.exe + FB3E3C] +74] + Ь]Или всё-такиlea esp,[esp+fc] < FC ?3. Я всё же пока newbie, но pushf сохраняет флаги, в том числе нужный ZF. Ноcmp edx,esppopfje returnherepopf загружает старое значение флага до его использования и cmp здесь силы не имеет.4. Метка originalcode у вас не используется. Можно убрать.Значения регистров esp и edx запарываются, т.к. pushf/popf сохраняют и загружают только регистр флагов. Используйте тогда pusha/popa Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 мая, 2014 Автор Поделиться Опубликовано 13 мая, 2014 Да и значение edx и esp запарывается, т.к. pushf их не сохраняет. Используйте pusha/popaЕсть пара вопросов.1. Ориганальный код в кейве помещает 0, а в исходнике ecx. Опечатка?mov [esi+000000FC],0 Нет здесь не опечатка - это One Hit Kill.2. Что такое Ь ?Это очепятка Извиняюсь не заметил. Это FC , (Гугл со своим переводчиком мутит.)Значения регистров esp и edx запарываются, т.к. pushf/popf сохраняют и загружают только регистр флагов. Используйте тогда pusha/popa Такие варианты, тоже пробовал:push edxlea edx,dword ptr [esi+000000FC]push espmov esp,[DarkSoulsII.exe+FB3E3C]mov esp,[esp+74]lea esp,[esp+fc]cmp edx,esppop edxpop espje returnhere Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 13 мая, 2014 Поделиться Опубликовано 13 мая, 2014 Такие варианты, тоже пробовал:push edxlea edx,dword ptr [esi+000000FC]push espmov esp,[DarkSoulsII.exe+FB3E3C]mov esp,[esp+74]lea esp,[esp+fc]cmp edx,esppop edxpop espje returnhereНужно не[color=#0000FF][font=helvetica, arial, sans-serif]push edx [/font][/color][color=#0000FF][font=helvetica, arial, sans-serif]push esp[/font][/color][color=#0000FF][font=helvetica, arial, sans-serif]pop edx[/font][/color][color=#0000FF][font=helvetica, arial, sans-serif]pop esp[/font][/color]Таким образом кладётся в стек edx, сверху esp, а потом в edx загружается верхнее значение из стека, т.е. esp. Поэтому меняются местами значения регистров и игра вылетаетНужно такpush edxlea edx,dword ptr [esi+000000FC]push espmov esp,[DarkSoulsII.exe+FB3E3C]mov esp,[esp+74]lea esp,[esp+fc]cmp edx,esppop esppop edxje returnhereЯ писал ранее, что можно использовать pusha/popa. Исправляюсь: эти команды работают с 2 байтами регистров(ax,bx...). Для eax,ebx... нужно использовать pushad/popad Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 мая, 2014 Автор Поделиться Опубликовано 13 мая, 2014 Нужно неНужно такpush edxpush esp..............pop esppop edxje returnhereПоменял, всё равно вылет из игры.Я писал ранее, что можно использовать pusha/popa. Исправляюсь: эти команды работают с 2 байтами регистров(ax,bx...). Для eax,ebx... нужно использовать pushad/popadНа pushad edx и т.д. ругается сам CE, говорит что эта инструкция не компилируется.Я конечно нашёл решение, внимательно просмотрев шаг 9 в обучении CE, т.е. с использованием структуры.Теперь бессмертие выглядит так:[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)label(exit)label(myinstr)newmem:cmp dword ptr [eax+1c],01je myinstroriginalcode:mov eax,[eax+000000FC]exit:jmp returnheremyinstr:push [eax+00000104]pop [eax+000000fc]jmp originalcode"DarkSoulsII.exe"+1BB052:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"DarkSoulsII.exe"+1BB052:mov eax,[eax+000000FC]а Убийство с одного удара, так:[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem:cmp dword ptr [esi+1c],01je returnhereoriginalcode:mov [esi+000000FC],0exit:jmp returnhere"DarkSoulsII.exe"+1BB521:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"DarkSoulsII.exe"+1BB521:mov [esi+000000FC],ecxНо мне всё равно интересно - почему не работает первый вариант? И как правильно записать адрес с указателями в код и правильно выбрать регистр для кода (потому что я больше грешу именно на то, что я не правильно выбрал регистр и он где-то в тот же момент используется из-за этого происходит вылет.)PS: Кстати работа со структурой помогла найти характеристику гГероя, которую простым методом поиска с отсеиванием я найти не смог, а именно выносливость, так что у меня теперь есть и чит на бесконечную выносливость. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 мая, 2014 Автор Поделиться Опубликовано 17 мая, 2014 Как я понял, раз ни кто не пишет, наверное тема на форуме мусолилась неоднократно.Жаль.Всё таки мне не понятно из-за чего происходил вылет в первом варианте. Это я где-то ошибаюсь или не возможно записать многоуровневый указатель в код в принципе?KENG может Вы посмотрите (начинал учиться по Вашим урокам на Тюбе, жаль, что нету урока 7 часть 1 и один урок, для меня тоже очень важный, без звука).KENG, если посмотрите и подскажите, моя благодарность не будет знать границ в пределах возможного .Короче добился, чтобы первый вариант тоже работал и поэтому, для таких же "Лузеров" как я, выкладываю готовый вариант чита на бессмертие только Вашего Героя:[ENABLE]alloc(newmem,2048)label(returnhere)newmem:push edxlea edx,dword ptr [esi+000000FC]push eaxlea eax,[[[DarkSoulsII.exe+FB3E3C]+74]+fc]cmp edx,eaxpop eaxpop edxje returnheremov [esi+000000FC],ecxjmp returnhere"DarkSoulsII.exe"+1BB521:jmp newmemnopreturnhere:[DISABLE]"DarkSoulsII.exe"+1BB521:mov [esi+000000FC],ecxdealloc(newmem)Но второй вариант, выложенный мною в предыдущем посте, всё же лучше и правильнее для игры.Так что тему можно закрыть. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 17 мая, 2014 Поделиться Опубликовано 17 мая, 2014 а зачем такие сложности с пушами и лиами, если можно просто....newmem:cmp esi,[[DarkSoulsII.exe+FB3E3C]+74]je short InfHealthmov [esi+FC],0 //OHKjmp returnhereInfHealth:mov [esi+FC],#100jmp returnhere.... 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 мая, 2014 Автор Поделиться Опубликовано 17 мая, 2014 ANT' timestamp='1400334599' post='17532']а зачем такие сложности с пушами и лиами, если можно просто.Круто!Но я "Лузер" и пока пишу только первый тренер.SER[G]ANT всё понял в Вашем скрипте, только не понял, что это - #100. (100 %; - здоровья или просто 100?)И в игре объединять InfHealth и OHK в один скрипт не стоит из-за NPC, которым нужно сохранить жизнь до поры. А делать фильтры на нужных NPC или всех врагов - эт слишком много и долго. Так что во втором моём варианте я разделил эти два чита используя две инструкции игры. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 17 мая, 2014 Поделиться Опубликовано 17 мая, 2014 #100 - это, типа значение жизней наобум. Обычно я не вписываю статическое значение, а люблю, чтобы текущее значение всегда равнялось текущему максимальному, но данной игры у меня нет, поэтому сделал по простому.И делал я это по первому варианту скрипта, где в одном скрипте вы делали и бессмертие, и OHK. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 мая, 2014 Автор Поделиться Опубликовано 17 мая, 2014 SER[G]ANT Сенк!Во втором моём варианте, как раз я вписываю текущее максимальное здоровье.SER[G]ANT и ещё вопрос, если можно? Как встроить спидхак в свой тренер? Хочу на горячую кнопку назначить спидхак встроенный в CE. Нашёл в нете и на форуме "Speed hack_setSpeed (2)" (2 - это в моём случае), но пока не могу врубиться, как встроить это в таблицу и в тренер. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 мая, 2014 Автор Поделиться Опубликовано 19 мая, 2014 Решил проверить, всё ли я понял и вернулся к шагу 9 Туториала CE.Есть решение с использованием структуры игрока и нахождением ID - Туториал CE v. 6.3 шаг 9 v. ID:[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)newmem:cmp [ebx+10],1je originalcodemov [ebx+04],0originalcode:fldzjmp returnhere"Tutorial-i386.exe"+27E76:jmp newmemreturnhere:[DISABLE]"Tutorial-i386.exe"+27E76:mov [ebx+04],eaxfldzdealloc(newmem)Это понятно, это прекрасно работает.Я, всё-таки в продолжении своего вопроса, нашёл адреса с указателями здоровья наших игроков (Дейва и Эрика), поэтому вариантТуториал CE v. 6.3 шаг 9 v. Адрес:[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)newmem:push edxlea edx,dword ptr [ebx+04]push eaxlea eax,[[[006313a0]+4b8]+4]cmp edx,eaxpop eaxje originalcodepush eaxlea eax,[[[006313a0]+4bc]+4]cmp edx,eaxpop eaxje originalcodemov [ebx+04],0originalcode:pop edxfldzjmp returnhere"Tutorial-i386.exe"+27E76:jmp newmemreturnhere:[DISABLE]"Tutorial-i386.exe"+27E76:mov [ebx+04],eaxfldzdealloc(newmem)Всё вроде хорошо - при нажатии кнопок "Атака", здоровье наших остаётся неизменным, а враги сразу умирают.Но при нажатии "Случайная игра" умирают все четыре игрока и соответственно мы проиграли.Мастера, пожалуйста подскажите, где я ошибаюсь и почему не работает скрипт.И как правильно всё-таки записать скрипт во втором варианте. А то уже голову сломал.Извините меня тормоза, собственно SER[G]ANT мне уже всё ответил, перед этим.Для таких же лузеров как я, выложу правильный скрипт с использованием адресов с указателями:[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)newmem:cmp ebx,[[006313a0]+4b8]je originalcodecmp ebx,[[006313a0]+4bc]je originalcodemov [ebx+04],0originalcode:fldzjmp returnhere"Tutorial-i386.exe"+27E76:jmp newmemreturnhere:[DISABLE]"Tutorial-i386.exe"+27E76:mov [ebx+04],eaxfldzdealloc(newmem)Здесь тоже всё прекрасно работает. Как я понял, с использованием регистров для нас - начинающих, лучше вначале быть поосторожнее. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 19 мая, 2014 Поделиться Опубликовано 19 мая, 2014 В 9 шаге же, не указателям учат, а сравнению структур.Лучше тренируйтесь с этим, намного лучше и надёжней, чем указатели. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 мая, 2014 Автор Поделиться Опубликовано 19 мая, 2014 Полностью согласен, просто хотелось уяснить для себя, как правильно записывать адреса в код.А по структуре согласен на все сто. Очень помогло, нашёл многие характеристики, именно изучая структуру главного героя (выносливость, которую в этой игре по-моему вообще обычным способом не найдёшь, отравление, окаменение, проклятие ну и т.д.).Сейчас мучаюсь с поиском координат. В структуре почти в самом начале лежат, координаты это видно, но они больше похожи на координаты камеры, потому что при изменении этих значений (и заморозке) герой стоит на месте, а изменяется именно расстояние до него от камеры. А вот найти координаты Ггероя пока не получается смотрел и в структуре, и поиском неизвестного (здесь вооще: при поиске Z - оставалось около 650 адресов, но они уже ни в какую не менялись, Х или Y - оставалось 2500 неменяющихся значений) уже 7 раз начинал искать, но так и бросал, слишком долго.Кстати SER[G]ANT как выделить все адреса я понимаю - CTRL+A, а вот ка заморозить сразу много выделенных адресов не могу понять, подскажите пожалуйста.И повторю вопрос: Как встроить спидхак в свой тренер? Интересует именно назначение Горячих клавиш, а не кнопка на форме (с кнопкой я понял как сделать, как оказалось у меня вообще не работал вызов LUA-скриптов ни в таблице, ни при создании трейнера, так что пришлось вчера пару часов чистить реестр вручную для полного удаления СЕ (утилиты как оказалось не полностью чистят) и по новой переустанавливать СЕ).И ещё вопрос: Есть ли в доступе исходный код спидхака СЕ или он слишком навороченный для моего теперешнего уровня. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 20 мая, 2014 Поделиться Опубликовано 20 мая, 2014 как выделить все адреса я понимаю - CTRL+A, а вот ка заморозить сразу много выделенных адресов не могу понять, подскажите пожалуйста.Нажать на пробел после выделения.И повторю вопрос: Как встроить спидхак в свой тренер?Не встраивал, не знаюИ ещё вопрос: Есть ли в доступе исходный код спидхака СЕ или он слишком навороченный для моего теперешнего уровня.http://cheat-engine.googlecode.com/svn/trunk/Cheat%20Engine/speedhack/ 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 20 мая, 2014 Автор Поделиться Опубликовано 20 мая, 2014 SER[G]ANT спасибо!И самое главное - БОЛЬШОЕ спасибо за перевод СЕ!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения