-
Постов
1 635 -
Зарегистрирован
-
Посещение
-
Победитель дней
55
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент keng
-
Я и не говорил, что код работоспособен, просто показал прицип. Не за что. Вообще, ящитаю хорошей практикой всегда сохранять регистры и флаги при выполнении своего кода - мало ли что, типа.
-
Ну блин. Вот оригинальная инструкция: mov eax,[esi+18] Тут [esi+18] - указатель на какое-то значение в структуре, где esi - базовое смещение этой структуры, а в eax помещается это самое значение. Наша задача - в зависимости от базового смещения структуры (игрок или все остальные) поместить в [esi+18] нужное значение. Я бы сделал вот так: pushad //сохраняем состояние всех регистров cmp esi, [01234567] //сравниваем базовое смещение структуры с нужным нам jne original //если они не равны - выполняем оригинальный код игры mov [esi+18],new_value //если же равны - помещаем по нужному нам смещению нужное нам значение popad //восстанавливаем регистры обратно mov eax,[esi+18] //пишем новое значение из структуры в eax jmp exit //возвращаем управление игровому коду original: //оригинальный код игры popad //сначала восстанавливаем сохранённые регистры mov eax,[esi+18] //выполняем оригинальную инструкцию jmp exit Что-то я не понимаю, зачем для сравнения левый регистр использовать, когда можно это сделать с оригинальным.
-
А не проще сохранить все регистры через pushad, сравнить, сделать что-то и восстановить popad'ом? В приведённом тобой участке ebx никак не используется, просто кладётся в стек и восстанавливается обратно.
-
Что-то я ещё не проснулся, видимо. Для чего мы в этом куске кода ebx используем?
-
В общем, может у меня бинарник какой-то гадкий, но ему очень не нравится Оля и он наотрез отказывается под ней запускаться. Отложу до завтра, уже циферки скакать начинают.
-
По мнению Оли, у ехе нету точки входа и секции кода, хотя он отлично работает. Гы-гы, к чему бы это? Чувствую, я и сегодня не посплю.
-
Копался в ехе, наткнулся вот на такую строчку: memcpy+99 - D1 8A 0688078A - ror [edx-CryptInstallOIDFunctionAddress+421],1 Внимательно смотрим на аргументы и говорим, кто что думает по этому поводу? Судя по MSDN, я чуток зря копаюсь в ехе.
-
Ну и зря! Надо добить - рипать чужие релизы != хорошо.
-
Ыы, если найдётся целое 2 байта со значением 14688 при полном баке закиси - не замораживайте, у меня игра повисла намертво.
-
Экранные - да. А нафига игровым обновляться? Ну еду я себе, закиси азота у меня полный бак и я её не трачу. Обновлять каждый кадр полоску - да. А вот истинное значение надо менять, когда я на кнопочку нажму. Зачем просто так-то её переписывать?
-
Нет, у меня всё равно ощущение, что это экранное значение. Не может оно записываться постоянно и по нескольку сотен раз в секунду.
-
А откуда у вас взялась msvcr90.dll? Это же кусок плюсов, который нужен чисто для корректной работы игры - ей явно незачем хранить в ней свои данные. Кусок кода, который я нашёл, крутится в отдельном потоке процесса игры (Need For Speed The Run.exe), там и нужно копать. И это явно не экранное значение, потому что в память по этим же смещениям грузятся структуры ботов и у них количество нитры выражается так же - а мне его на экране явно не видно.
-
Я не догоняю, почему структура моей машины через этот цикл не прогоняется.
-
Гы! Меня одного смущает, что вот такая процедура: Делает какую-то прикольную ахинею? Не, я понимаю что оно копирует даблы. Выделенная инструкция срабатывает сейчас на найденном в моём случае адресе - 0xE146C958, которого я нигде в регистрах не вижу, сколько ни дебажил - это раз. Второе, что мне не понятно - это то, что вокруг значения моего адреса лежит вся структура - таймер гонки, координаты машины, скорость, ускорение и прочая лабуда. Причём цикл этот (а это цикл) кушает все машины по-очереди. В длину структура, кажется, 80 байт. И самое вкусное - висит всё это в отдельном потоке, и каждую новую загрузку карты (не игры) оно пересоздаётся, меняя себе все смещения. Это делает отладчик и сканер указателей грустными, поэтому указатели найти тоже не получается. Короче, я пойду в олю и иду, а то НЕГОЖЕ!11
-
Игру я уже скачал, сегодня буду ковырять. Предположу, что запакована чем-нибудь.
-
На моей памяти это нужно было только однажды - при снятии StarForce вручную. Ну да ладно, я правильно думал, просто не сообразил сначала.
-
Ну ок, я это и перечитывал, просто по-диагонали.
-
Я путаю "два режима - ядра и пользовательский" с ring0-1-2-3 защищённого x86? Нипанятна. Или это просто такое разделение на "ядро \ дрова" и "всё остальное"?
-
Да, по поводу пакеров. Сейчас накидал простенькое WinForms-приложение - формочка с двумя кнопками, умеющая рожать MessageBox'ы. Без ресурсов, правда. Использовал настройки, как на скриншоте в аттаче, результат сжатия можно лицезреть там же. PS: [Вот ещё парочка пакеров], чисто доцнетовских.
-
Могу показать, как с длл-кой это делается - там вроде ничего сверхъестественного нету.
-
Да пофиг на чём, просто лично мне доцнет уже поднадоел и не хочется за собой таскать фреймворк размером в пару сотен мегабайт, когда мне надо достаточно простецкую программу написать.
-
[Держы], например! Проигрыватель .xm-файлов под .NET, там вроде даже примеры есть. По сути - порт оригинального fmod, который используется в большинстве кейгенов\патчей\трейнеров.
-
PS: На пакеры многие антивирусы любят ругаться - мол, hack-tool и вообще не торт - православные PE Executables сжимать чем-то. Имей ввиду, если будешь ими пользоваться. Вечером качну сорцы трейнера - может, посоветую чего. PPS: Очень надеюсь, что музыка там не в виде wav-файла.