SiriusED Опубликовано 28 августа, 2014 Поделиться Опубликовано 28 августа, 2014 Всем привет. Ситуация такая: Есть функция которая меняет значение, я поставил хук на эту функцию и получаю готовое значение, но как мне узнать через какую функцию это значение создается?Так же мне известно что функция которая создает это значение срабатывает при определенном действии в игре. Вот как мне узнать что это за функция во обще? единственное что приходит на ум - как то мониторить все вызываемые функции этой игрой непосредственно в момент определенного действия(нажатия кнопки TAB). Вот через что такое можно осуществить? Знаю как такое сделать можно на перехват WinAPI-функций, а вот как перехватывать все функции игровые? Очень нужна помощь в этом вопросе. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 28 августа, 2014 Поделиться Опубликовано 28 августа, 2014 http://100paperclips.com/100paperclips/112-main-menu/news/294-function-hacker-v25-released-294.htmlНо лично у меня не получилось этой прогой ничего толком взломать. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 28 августа, 2014 Поделиться Опубликовано 28 августа, 2014 /*---------------------------------------------------------------------------*/ В CE 6.4 появилась крутяцкая штука под названием Ultimap, которая как раз дляэтого и предназначена. Единственная трудность - для неё нужен полностью рабочийDBVM (ядерный отладчик, идущий в комплекте с CE), который работает только подIntel. PS: На 8.1 x64 у меня его завести так и не удалось - на семёрке работает. /*---------------------------------------------------------------------------*/ Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 28 августа, 2014 Автор Поделиться Опубликовано 28 августа, 2014 Хм. Ну у меня CE 6,4 какраз, i7-4770K, и Windows7, сработает? Пока бегу читать об этой штуке.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Bromvol Опубликовано 28 августа, 2014 Поделиться Опубликовано 28 августа, 2014 Здрасте. Была прога которая функции могла находить по моему называлась Code dynamic allocation (CDA) или Function hacker. Но лично я ею пользоваться не научился :-( И справки у нее толком нормальной нету. Попробуй в нете найти. Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 28 августа, 2014 Автор Поделиться Опубликовано 28 августа, 2014 Я тут поспрашивал профессионалов, и говорят что ollyDBG и IDAPro в этом деле нормально могут помочь... Кто нить о них знает как там можно реализовать такое? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 28 августа, 2014 Поделиться Опубликовано 28 августа, 2014 /*---------------------------------------------------------------------------*/ Интересных ты профессионалов поспрашивал! Олли - хороший отладчик, Ида - отличный (если не лучший) дизассемблер + неплохой отладчик. Это, собственно, просто инструменты. Первым находишь, куда копать (адрес функции), вторым - копаешь (разбираешься, как функция работает). Это можно делать час, три, пару дней, неделю или месяцы. Я когда-то давно, ради спортивного интереса, снимал с одной игры защиту под именем StarForce - потратил месяц чистого времени - т.е. месяц только лишь сидения в отладчике\дизассемблере, не говоря о пробах, раздумьях и записях. Очень долго, очень муторно, очень медленно и крайне малоэффективно - пытаться понять по дизассемблерному листингу логику работы высокоуровневой программы, будь то современная игра или что-то другое. Так что запасись терпением и для начала сядь и представь, абстрактно, как можно реализовать задуманное и с чего бы начать. 95% времени - это отладка кода, оставшиеся 5% - поиск адреса или указателя в CE. /*---------------------------------------------------------------------------*/ Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 28 августа, 2014 Автор Поделиться Опубликовано 28 августа, 2014 Не ну кажется адрес я уже нашел, да и даже если не нашел то найду, ибо СЕ мне нашел 407 возможных вариантов вызова функций при моем действии... Но вот как мне теперь найти сигнатуру то? А без сигнатуры я не смогу же поставить хук, правильно? Во общем в чем лучше всего искать сигнатуру, и как это делается в СЕ Ultimap? P.S. Ну а так то функция являет собой шифратор, и возможно дешифратор текста. Так что в любом случае она 100% должна принимать и возвращать текст, но вот даже уже с таким вариантом может быть два варианта:Возврат текста через^char* Function(char* inText);//илиvoid Function(char* out\ref inText);Ну я так понимаю что сигнатуру вычислить это просто ацки сложная задача да? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 28 августа, 2014 Поделиться Опубликовано 28 августа, 2014 /*---------------------------------------------------------------------------*/ Я, может, не совсем правильно понял, но какую сигнатуру ты имеешь ввиду? Ту, что используется для функции aob_scan()? Дык она тебе не нужна толком, ты же и так знаешь адрес функции. Давай я ещё раз приведу описание твоей задачи: "Есть функция которая меняет значение, я поставил хук на эту функцию и получаю готовое значение, но как мне узнать через какую функцию это значение создается?Так же мне известно что функция которая создает это значение срабатывает при определенном действии в игре." У тебя есть адрес некоторой функции, которая изменяет значение адреса A. Тебе хочется узнать, "через какую функцию это значение создаётся". Следовательно, самый первый шаг - посмотреть функцию, которая это значение меняет, а точнее -весь код, который идёт выше от инструкции, меняющей адрес. Брейкпоинт на запись, а затем смотрим выше, как меняются регистры. Следующий шаг - брейкпоинт на чтение этого же адреса - там наверняка найдётся не один вызов, в том числе и функции, которая твоё значение "создаёт". На самом деле, со словом "создаёт" тоже стоит кое-что уточнить - под созданием можно понимать как объявление функции, так и создание объекта, так и присвоение переменной какого-то значения. Не думай пока про хуки или что-то ещё, для начала нужно разобраться с кодом и понять, что дальше делать. На данный момент тебе нужно просто найти код, меняющий адрес памяти, который ты уже знаешь, в каком-то другом месте. Поставь брейкпоинт на этот адрес памяти и смотри, что будет в том или ином случае. /*---------------------------------------------------------------------------*/ Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 29 августа, 2014 Автор Поделиться Опубликовано 29 августа, 2014 Ну во общем дали мне на одном форуме точный адрес и ollyDBG-паттерн к ней, ну и еще дали тело функции вместе с типами и аргументами, короче дали все что нужно..Но все таки это просто дали, но как это сделать самому я так и не понял, а именно: Смотри, под словом сигнатура я имел введу типы и количество аргументов, которые принимает эта функция, вот скажем пример:Нашел я через тот же Ultimap адрес нужной мне функции, но зная один лишь адрес, я хукнуть эту функцию не смогу никак... Ибо мне нужно знать точное количество и типы всех принимающих\возвращающих параметров. Вот собственно меня интересует в первую очередь как мне эти параметры узнать и на сколько это сложно? Ну и еще такая вот штука, вот тот адрес который мне дали, короче на нем не "call адрес функции", а вот такие инструкции:mov eax,[esp+0C] // Вот эта инструкция висит на том адресе что мне дали на форумеcmp eax,10jnl 00961007mov eax,[esp+04]mov [eax+04],00000005xor al,alretТак вот что мне хукать то? прямо этот адрес или что? А то как то впадлу переспрашивать уже на том форуме после благодарствий Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 29 августа, 2014 Автор Поделиться Опубликовано 29 августа, 2014 Короче хукнуть получилось, но проблема теперь такая, функция принимает толи char* толи BYTE*, и во общем если принимаю char* то получаются кракозябры, мне нужно походу перевести эти байты в HEX.Но я уже реально сижу два часа и рабочего кода так и не нашел... То вылеты, то тупо не работает запарился уже просто... Помогите перевести байты в HEX-строку. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 30 августа, 2014 Поделиться Опубликовано 30 августа, 2014 /*---------------------------------------------------------------------------*/ В CE 6.4 появилась крутяцкая штука под названием Ultimap, которая как раз дляэтого и предназначена. Единственная трудность - для неё нужен полностью рабочийDBVM (ядерный отладчик, идущий в комплекте с CE), который работает только подIntel. PS: На 8.1 x64 у меня его завести так и не удалось - на семёрке работает. /*---------------------------------------------------------------------------*/ Ты не прав.DBVM работает как на Intel, так и на AMD, просто на Intel в разы больше шансов, что заработает, а не появиться BSOD.На AMD камнях, серии FX, DBVM прекрасно работает, но у процессоров, с числом ядер >4, нужно отключать все ядра, кроме первых 4 (что очень не удобно).А вот сама Ultimap работает только с процессорами Intel. Даже мессаджбокс появляется, при попытке запустить её на AMD Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 5 декабря, 2014 Поделиться Опубликовано 5 декабря, 2014 Привет всем, я тут пробовал запускать DBVM на восьмерке, DBVM работает на Windows 8.1, что бы DBVM заработало на windows 8.1 x64, нужно выставить одно ядро, у кого процессорымногоядерные, тогда DBVM запустится без проблем и не выдаст синий экран смерти, на Windows 8.1 x64 так же и на Windows 7 x64, еще я ставил Windows Vista SP2, на ней едет без проблем, работает и на многоядерных процессорах, и не нужно выставлять одно ядро. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения