Гость Опубликовано 28 июля, 2014 Поделиться Опубликовано 28 июля, 2014 Всем доброго времени суток.Собственно, есть инструкция:fld dword ptr [ecx+eax*4]И смещение в структуре, которое мне надо подхватить - B8C.Написал скрипт так образом:push ebxmov ebx,[eax*4+B8C]mov [ecx+eax*4],ebxpop ebxfld dword ptr [ecx+eax*4]ret 0004В игре работает, т.е. патроны есть - сколько не стреляй, а вот отображаемое значение равно 0 (нулю).Как-бы, не критично, патроны-то есть ведь, но все-же, можно-ли это как-нибудь вылечить? Также замечу, что если написать скрипт, допустим, так:mov [ecx+eax*4],(float)100fld dword ptr [ecx+eax*4]ret 0004То отображаемое значение равно 100. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 28 июля, 2014 Поделиться Опубликовано 28 июля, 2014 Смотри, значение в структуре 4 байта, а значение патронов - флоат. Чтобы не отображался ноль, тебе нужно подхваченное значение перевести в флоат. То есть, код нужно написать так:fild dword ptr [ecx+eax*4+B8C]fstp dword ptr [ecx+eax*4]fld dword ptr [ecx+eax*4]ret 0004У тебя инструкция первая указана без ecx, это, скорее всего, вызывает ошибку. Если же с ecx твой код будет также нуль прописывать, тогда попробуй мой кусок скрипта. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 28 июля, 2014 Поделиться Опубликовано 28 июля, 2014 Э, нет, это я здесь ошибку допустил, что ecx забыл дописать Сейчас попробую...Работает) Спасибо большое Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 28 июля, 2014 Поделиться Опубликовано 28 июля, 2014 Значение патронов типа float? А по смещению B8C тоже float?Опоздал) Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 14 августа, 2014 Поделиться Опубликовано 14 августа, 2014 Привет всем вот у меня не большая проблемка вот у меня вот такая инструкция mov [esi+ebp*4+10],edi одна это инструкция отвечает за очки и за жизни хочу сделать фильтр но не знаю какправильно написать скрипт с фильтром с такой инстркцией mov [esi+ebp*4+10],edi вот например смешение 2F4помогите пожалуйста. Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 14 августа, 2014 Поделиться Опубликовано 14 августа, 2014 Привет всем вот у меня не большая проблемка вот у меня вот такая инструкцияmov [esi+ebp*4+10],edi одна это инструкция отвечает за очки и за жизни хочу сделать фильтр но не знаю какправильно написать скрипт с фильтром с такой инстркцией mov [esi+ebp*4+10],edi вот например смешение 2F4помогите пожалуйста.А можно поконкретнее: что в esi(скорее всего указатель на игрока), в ebp(номер 4-байтовой ячейки? с жизнями и очками?), и 2F4 - это ebp*4?В идеале - что за игра?) Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 Risen 3 Titan Lords это игра. Смешение которое я указал 2F4 оно не правильное это смешение для примера то смешение которое будет отделять Жизни игрока от очков я еще не нашол Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 Risen 3 Titan Lords это игра. Смешение которое я указал 2F4 оно не правильное это смешение для примера то смешение которое будет отделять Жизни игрока от очков я еще не нашолТак как mov [esi+ebp*4+10],edi занимает 4 байта, то захватится ещё одна инструкция.Также предполагается, что инструкция работает только со структурой игрока(что маловероятно)Примерно так:[ENABLE]alloc(newmem,2048)label(returnhere)label(life)label(points)newmem:cmp ebp,0 //например ebp = 0 - жизни, 1 - очкиje lifecmp ebp,1je pointsmov [esi+ebp*4+10],ediещё_одна_инструкцияjmp returnherelife://что-то делаем с жизнями//mov [esi+10],#100jmp returnherepoints://что-то делаем с очками//mov [esi+14],#10jmp returnhereадрес_инъекции:jmp newmemнопы_будутreturnhere:[DISABLE]dealloc(newmem)адрес_инъекции:mov [esi+ebp*4+10],ediещё_одна_инструкцияКривовато, но смысл правильный) Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 (изменено) спасибо. я бы так сделал но вот проблема вот скрипт<p></p>[ENABLE]alloc(newmem,2048)label(returnhere)newmem:mov [esi+ebp*4+10],#100 когда делаешь так работает но замораживается и жизни и очки а когда делаешь так mov [esi+10],#100 происходит тоже самое только #100 вообще не как не работает выставляй хоть #500 а когда делаешь так mov [ebp+4]#100 или так mov[ebp+10]#100 игра зависаетmov edx,[esi]jmp returnhere;Risen3.exe&quot;+2BF4E8:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)&quot;Risen3.exe&quot;+2BF4E8:mov [esi+ebp*4+10],edimov edx,[esi] Изменено 15 августа, 2014 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 а когда делаешь так mov [ebp+4]#100 или так [ebp+10]#100 игра зависаетВ этом случае всегда пишешь по адресам близким к нулю ebp в данном случае не больше размера структуры. И надо всё-таки фильтровать что есть что. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 Пожалуйста покажи на примере на каком ни буть скрипте Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 /*---------------------------------------------------------------------------*/Привет!В комплекте с Cheat Engine в той же папочке валяется Tutorial.exe. Это программка-обучалка работе с CE, в которой рассматривается в том числе и работа со структурами. Пройди её, она крутая, весёлая и полезная, ещё и с авторскими объяснениями. Там есть и работа со структурами. Оригинал - на английском, но можно поискать и на русском./*---------------------------------------------------------------------------*/ Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 Пожалуйста покажи на примере на каком ни буть скриптеТак вот в 8 посте примерО_о Risen докачался, ща ломанём)Указатель на героя[[[Risen3.exe+DD6CC0]+1C]+1С]+XX:+14 - ближний бой+18 - дальний бой+1C - проворность+20 - влияние+24 - выносливость+28 - Ловкость+2C - магия+30 - дух+34 - число+20 = макс. здоровье+38 - здоровье+3C - слава+40 - репутацияСкрипт на бессмертие(вариант с записью 100 здоровья):[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)newmem:cmp ebp,0Ajne originalcodemov edi,64originalcode:mov [esi+ebp*4+10],edimov edx,[esi]jmp returnhere"Risen3.exe"+2BF4E8:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"Risen3.exe"+2BF4E8:mov [esi+ebp*4+10],edimov edx,[esi] 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 (изменено) Спасибо Большое A1t0r и kengЕще вопросик объяснити мене дураку я не как понять не могу для меня это очень важно я знаю как писать с крипты зная как делать не сложные фильтры но до сих пор не могу понять вот есть инструкция она отвечает за все и за жизни моего игрока и за жизни врага как сделать фильтр я знаю а вот как найти смешение которое будет различать меня от врага я не могу понять вот я нахожу адрес здоровья моего игрока делаю АНАЛИЗ ДАННОЙ СТРУКТУРЫ ищу значения которые не меняются после перезагрузки игры например у меня 1 значение а у врага 2 это мене понятно вот объясните а если его там нет нет вот просто хоть убейте нет его и все чем я еще могу воспользоватся кроме АНАЛИЗ ДАННОЙ СТРУКТУРЫ что бы найти это смешение различие или как еще можно найти смещение не используя АНАЛИЗ ДАННОЙ СТРУКТУРЫ мене это учен важно извеняюсь если вопрос не по теме Изменено 15 августа, 2014 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 Спасибо Большое A1t0r и kengЕще вопросик объяснити мене дураку я не как понять не могу для меня это очень важно я знаю как писать с крипты зная как делать не сложные фильтры но до сих пор не могу понять вот есть инструкция она отвечает за все и за жизни моего игрока и за жизни врага как сделать фильтр я знаю а вот как найти смешение которое будет различать меня от врага я не могу понять вот я нахожу адрес здоровья моего игрока делаю АНАЛИЗ ДАННОЙ СТРУКТУРЫ ищу значения которые не меняются после перезагрузки игры например у меня 1 значение а у врага 2 это мене понятно вот объясните а если его там нет нет вот просто хоть убейте нет его и все чем я еще могу воспользоватся кроме АНАЛИЗ ДАННОЙ СТРУКТУРЫ что бы найти это смешение или как еще можно найти смещение не используя АНАЛИЗ ДАННОЙ СТРУКТУРЫ мене это учен важно извеняюсь если вопрос не по темеНу чтоб уж так всё серьёзно было, чтобы совсем не за что зацепиться, бывает чертовски редко. Можно цепляться не за конкретное число, а, например, у игрока отлично от 0 у врага 0. Или в структуре игрока указатель ведёт не в пустоту P->00000000. Что-нибудь да можно придумать. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 /*---------------------------------------------------------------------------*/Если игра может различить игрока от врага, то в её коде это указано. Исключений не бывает. Просто посиди подольше и поищи как следует./*---------------------------------------------------------------------------*/ Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 15 августа, 2014 Поделиться Опубликовано 15 августа, 2014 Бесконечные вещи (использовать на свой страх!!!):[ENABLE]alloc(newmem,2048)label(returnhere)newmem:lea ecx,[esi+04]cmp dword ptr[esi+24],eaxjg returnheremov [esi+24],eaxjmp returnhere"Risen3.exe"+33FFD8:jmp newmemnopreturnhere:[DISABLE]dealloc(newmem)"Risen3.exe"+33FFD8:lea ecx,[esi+04]mov [esi+24],eax 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 16 августа, 2014 Поделиться Опубликовано 16 августа, 2014 Спасибо Большое за помощь A1t0r и Keng будем искать Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 23 августа, 2014 Поделиться Опубликовано 23 августа, 2014 Привет всем все таки придется попросит мене вас что бы вы на примере показали пожалуйста как можно еще найти это смешение или ID игрока для различия свой чужой не используя АНАЛИЗ ДАННОЙ СТРУКТУРЫ по кажите пожалуйста на примере.Тут A1t0r говорил можно что ни бут придумать покажите пожалуйста на примере что именно не используя АНАЛИЗ ДАННОЙ СТРУКТУРЫ как без него можно найти смешения или как там еще говорят ID игрока Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 23 августа, 2014 Поделиться Опубликовано 23 августа, 2014 Привет всем все таки придется попросит мене вас что бы вы на примере показали пожалуйста как можно еще найти это смешение или ID игрока для различия свой чужой не используя АНАЛИЗ ДАННОЙ СТРУКТУРЫ по кажите пожалуйста на примере.Тут A1t0r говорил можно что ни бут придумать покажите пожалуйста на примере что именно не используя АНАЛИЗ ДАННОЙ СТРУКТУРЫ как без него можно найти смешения или как там еще говорят ID игрока Начнём с того, что "говорил что-нибудь придумать" это относится к анализу структуры и привязке к какому-то значению. Если лень анализировать или не получается привязаться, то можно попробовать вычислить цепочку указателей и проверять фильтром, пытается ли в данный момент инструкция писать, например, в ячейку со здоровьем игрока. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 23 августа, 2014 Поделиться Опубликовано 23 августа, 2014 Привет A1t0r мене не лень анализировать через АНАЛИЗ ДАННОЙ СТРУКТУРЫ просто он бывает без полезен в примом смысле этого слова вот я и прошу вас помочь мене найти это смешение или ID игрока не используя АНАЛИЗ ДАННОЙ СТРУКТУРЫ ведь есть другие способы вот я и прошу их показать на примере пожалуйста Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 23 августа, 2014 Поделиться Опубликовано 23 августа, 2014 Оффтоп: похоже, пора вводить правило на использование знаков препинания в постах. Надоело ломать мозг в попытках понять, что говорят юзеры.По теме. Анализ структуры никогда не бывает бесполезен. Да, это долгая работа, но ничего не поделаешь. Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 23 августа, 2014 Поделиться Опубликовано 23 августа, 2014 Привет A1t0r мене не лень анализировать через АНАЛИЗ ДАННОЙ СТРУКТУРЫ просто он бывает без полезен в примом смысле этого слова вот я и прошу вас помочь мене найти это смешение или ID игрока не используя АНАЛИЗ ДАННОЙ СТРУКТУРЫ ведь есть другие способы вот я и прошу их показать на примере пожалуйстаможно пожалуйста по подробнее о вычислить цепочку указателей и проверять фильтром, пытается ли в данный момент инструкция писать, например, в ячейку со здоровьем игрока.Откопал у себя пример, очень простой. Взлом UnEpic. Цепочка очень маленькая, но принцип будет понятен.00492345:fst dword ptr [esi+000003C0] - сохраняется новое значение жизни, используется и для игрока и для противникаЕсли лезть и анализировать структуру лень - ищем указатель в статической памяти.Когда нашли эту инструкцию при ранении игрока, смотрим чему равно esi и ищем это значение в памяти.В данном случае сразу найдётся указатель в статике.И получается такой скриптnewmem:push eax - сохр.mov eax, [00B6A2C0] - считываем указатель по найденному адресуcmp esi, eax - сравниваем его со значением esipop eaxje exit - если будет запись значения в структуру игрока, то выходимoriginalcode:fst dword ptr [esi+000003C0] - иначе раним противникаexit:jmp returnhereНо не всегда бывает так просто.Предположим, после поиска значения esi нам выдало несколько адресов не статичных. Тогда берём любой, ставим бряк на доступ и продолжаем игру. Чаще всего достаточно просто зайти и выйти, т.к. доступ производится множество раз, если только указатель не оказался "левым", тогда пробуем другой. Если что-то выскочило, смотрим как инструкция обращается к нашему указателю. Например, пусть будет mov eax,[ecx+24]. Берем значение ecx и ищем дальше, повторяем пока не найдём статичный адрес.Для данного случая скрипт будет такой(удлиню нашу цепочку, в 00B6A2C0 будет ecx)newmem:push eax - сохр.mov eax, [00B6A2C0]mov eax, [eax+24] - дополнительное звено в нашей цепиcmp esi, eaxpop eaxje exit originalcode:fst dword ptr [esi+000003C0]exit:jmp returnhere 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 23 августа, 2014 Поделиться Опубликовано 23 августа, 2014 Спасибо A1t0rXipho я имел в виду бывает без полезен АНАЛИЗ ДАННОЙ СТРУКТУРЫ в некоторых играх я конечно не специалист но бывает что делаешь АНАЛИЗ ДАННОЙ СТРУКТУРЫ но смешение нет как там еще называется ID игрока не на ходиш я знаю по то му что мене у же попадались такие игры что и АНАЛИЗ ДАННОЙ СТРУКТУРЫ становится без полезен может быть и я не внимателен но это из ключенно по тому что я не лодырь не халявщик работать люблю проверяю я не пять минут а бывает целый день а тои несколько дней очень долго и внимательно вот потому я говорю что он бывает без полезен Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 23 августа, 2014 Поделиться Опубликовано 23 августа, 2014 /*---------------------------------------------------------------------------*/ Привет! У меня есть видео с использованием способа, похожего на способ A1t0r,поищи на канале youtube (ссылка в подписи). Хотелось бы заметить, что анализатор структур CE не всегда корректно обрабатывает поля структуры - онлишь предполагает, так что в некоторых случаях поле float может оказатьсяуказателем, а DWORD - четырьмя отдельными байтами. Работа со структурами - долгая, муторная и очень утомительная, не безумно эффективная. Раньше всё этопроисходило в 16-ричном редакторе и при любом неверном действии случался вылетиз ОС, так что все действия, адреса, смещения и указатели структур (а бывало,что и участки кода) записывались на бумагу. CE очень и очень сильно облегчаетв этом плане жизнь. По поводу поиска ID могу добавить, что можно поискать инструкции сравнения (cmp, test и так далее)выше по коду от инструкции, которую требуется изменить,но хотя бы частичный разбор структуры часто оказывается куда полезнее. /*---------------------------------------------------------------------------*/ Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения