Перейти к содержанию

keng

Ветераны
  • Постов

    1 635
  • Зарегистрирован

  • Посещение

  • Победитель дней

    55

Весь контент keng

  1. Я и не говорил, что код работоспособен, просто показал прицип. Не за что. Вообще, ящитаю хорошей практикой всегда сохранять регистры и флаги при выполнении своего кода - мало ли что, типа.
  2. Ну блин. Вот оригинальная инструкция: 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 Что-то я не понимаю, зачем для сравнения левый регистр использовать, когда можно это сделать с оригинальным.
  3. А не проще сохранить все регистры через pushad, сравнить, сделать что-то и восстановить popad'ом? В приведённом тобой участке ebx никак не используется, просто кладётся в стек и восстанавливается обратно.
  4. Что-то я ещё не проснулся, видимо. Для чего мы в этом куске кода ebx используем?
  5. Я не играл, но два варианта: 1. Ищем неизвестное "изменилось - не изменилось" - "крюк выбросился - крюк не выбросился", долго отлаживаем. 2. Если он выбрасывается за какое-то время - включаем в СЕ спидхак и ищем "увеличилось - уменьшилось", долго отлаживаем.
  6. В общем, может у меня бинарник какой-то гадкий, но ему очень не нравится Оля и он наотрез отказывается под ней запускаться. Отложу до завтра, уже циферки скакать начинают.
  7. По мнению Оли, у ехе нету точки входа и секции кода, хотя он отлично работает. Гы-гы, к чему бы это? Чувствую, я и сегодня не посплю.
  8. Копался в ехе, наткнулся вот на такую строчку: memcpy+99 - D1 8A 0688078A - ror [edx-CryptInstallOIDFunctionAddress+421],1 Внимательно смотрим на аргументы и говорим, кто что думает по этому поводу? Судя по MSDN, я чуток зря копаюсь в ехе.
  9. Ну и зря! Надо добить - рипать чужие релизы != хорошо.
  10. Ыы, если найдётся целое 2 байта со значением 14688 при полном баке закиси - не замораживайте, у меня игра повисла намертво.
  11. Экранные - да. А нафига игровым обновляться? Ну еду я себе, закиси азота у меня полный бак и я её не трачу. Обновлять каждый кадр полоску - да. А вот истинное значение надо менять, когда я на кнопочку нажму. Зачем просто так-то её переписывать?
  12. Нет, у меня всё равно ощущение, что это экранное значение. Не может оно записываться постоянно и по нескольку сотен раз в секунду.
  13. А откуда у вас взялась msvcr90.dll? Это же кусок плюсов, который нужен чисто для корректной работы игры - ей явно незачем хранить в ней свои данные. Кусок кода, который я нашёл, крутится в отдельном потоке процесса игры (Need For Speed The Run.exe), там и нужно копать. И это явно не экранное значение, потому что в память по этим же смещениям грузятся структуры ботов и у них количество нитры выражается так же - а мне его на экране явно не видно.
  14. Я не догоняю, почему структура моей машины через этот цикл не прогоняется.
  15. Гы! Меня одного смущает, что вот такая процедура: Делает какую-то прикольную ахинею? Не, я понимаю что оно копирует даблы. Выделенная инструкция срабатывает сейчас на найденном в моём случае адресе - 0xE146C958, которого я нигде в регистрах не вижу, сколько ни дебажил - это раз. Второе, что мне не понятно - это то, что вокруг значения моего адреса лежит вся структура - таймер гонки, координаты машины, скорость, ускорение и прочая лабуда. Причём цикл этот (а это цикл) кушает все машины по-очереди. В длину структура, кажется, 80 байт. И самое вкусное - висит всё это в отдельном потоке, и каждую новую загрузку карты (не игры) оно пересоздаётся, меняя себе все смещения. Это делает отладчик и сканер указателей грустными, поэтому указатели найти тоже не получается. Короче, я пойду в олю и иду, а то НЕГОЖЕ!11
  16. Игру я уже скачал, сегодня буду ковырять. Предположу, что запакована чем-нибудь.
  17. На моей памяти это нужно было только однажды - при снятии StarForce вручную. Ну да ладно, я правильно думал, просто не сообразил сначала.
  18. Ну ок, я это и перечитывал, просто по-диагонали.
  19. Я путаю "два режима - ядра и пользовательский" с ring0-1-2-3 защищённого x86? Нипанятна. Или это просто такое разделение на "ядро \ дрова" и "всё остальное"?
  20. Да, по поводу пакеров. Сейчас накидал простенькое WinForms-приложение - формочка с двумя кнопками, умеющая рожать MessageBox'ы. Без ресурсов, правда. Использовал настройки, как на скриншоте в аттаче, результат сжатия можно лицезреть там же. PS: [Вот ещё парочка пакеров], чисто доцнетовских.
  21. Могу показать, как с длл-кой это делается - там вроде ничего сверхъестественного нету.
  22. Да пофиг на чём, просто лично мне доцнет уже поднадоел и не хочется за собой таскать фреймворк размером в пару сотен мегабайт, когда мне надо достаточно простецкую программу написать.
  23. [Держы], например! Проигрыватель .xm-файлов под .NET, там вроде даже примеры есть. По сути - порт оригинального fmod, который используется в большинстве кейгенов\патчей\трейнеров.
  24. PS: На пакеры многие антивирусы любят ругаться - мол, hack-tool и вообще не торт - православные PE Executables сжимать чем-то. Имей ввиду, если будешь ими пользоваться. Вечером качну сорцы трейнера - может, посоветую чего. PPS: Очень надеюсь, что музыка там не в виде wav-файла.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.