Здрасьте кул-хацкеры! Продолжим
заставлять работать проги так, как мы хотим!
Сегодня мы рассмотрим … нет что-то не то 😉
как будто лекция какая-то! В общем пришел я
как-то к другу, а он мне и говорит: «Я тут NFS
IV достал, скоро отдавать, а он без диска не
пашет. Помоги!» Ну я тут же его
дизассемблировал, думал ничего сложного, но
этот экземпляр оказался крепким орешком.
Прикол в том, что все Виндосовские функции
не имели названия, вернее имели но одно и то
же для всех — Kernel32! Я немного прифигел, но не
сдался! Короче забрал я у перца диск, пришел
домой, дизассемблировал и стал смотреть.
Первым что я сделал, я запустил игру без
диска. Она в свою очередь выдала мне
неказистый Форточковый диалог, мол диск-то
вставьте! Я ухмыльнулся, залез в String Data Reference
и нашел нужную мне строку. Кликнув на нее
два раза, увидел кусок проги, где эта строка
используется, и опять прифигел! Оглядел
процедурку и решил, что без стакана или
ящика пива не разберешься, но тут же
вспомнил, что есть такая полезная фича —
трейсиг! Начал трейсить (Debug\load process\load) и
дошел до того места программы, где она
выдает мне то самое окно. Кстати, я забыл
рассказать про полезные примочки Win32DASM. Во
время трасинга процедуры можно
перескакивать или входить в них. Делается
это с помощью кнопок Step over и Step into
соответственно. Ну вот, дошел, значит, до
того места, где прога диск просит вставить.
Вставил диск и опять начал трейсить. Опять
дошел до того же места, но теперь прога, не
доходя до сообщения, прыгала куда-то. «Понятно!»
— сказал
я и залез в HEX Editor. Переправил Jne на Jmp, код
которого — EB (да, кстати, нужный нам прыжок по
адресу 004F4764) и запустил прогу. Сообщения не
появилось, но открылся CDROM. Я опять начал
трейсить. Оказалось, что прога еще смотрит
что за диск вставлен в CDROM, и если диск не NfS
то открывает его. Опять протрейсил с диском
NfS и c левым диском, и нашел место, где прога
определяет диск, а потом в случае если диск
NfS прыгает (во заело! :). Переправил его (адрес
— 004F47BC) на Jmp и опять запустил игру, в полной
уверенности, что сейчас сработает, но не тут-то
было. Прога, как будто зависла! Опять стал
трейсить и нашел место, где игра
зацикливается и проверяет все Drive’ы, а если
диска нет, то она не прыгает и зависает.
Правим прыжок на jmp (адрес 004F479E), запускаем и
видим новое окно 🙂 которое гласит: «Чтобы
поиграть в NfS вы должны вставить диск в
СиДиРОМ :)» Это окончательно добило меня.
Ну наглость какая-то! Ребята из EA хорошо
постарались, чтобы усложнить нам жизнь. Но
это не могло меня остановить, и я снова
начал трейсить. Потрейсил и попал в такой
вот адрес — 00501D05. Здесь прога после
очередной проверки, решала кидать
сообщение или нет. Меняем je на nop nop, коды
которых — 90, и радуемся жизни. Заметьте
менять нужно именно на два nop, так как код je —
74CC, и это одна команда, а если СС останется,
то будет ошибка. Запускаем NfS и радуемся
плоду своих трудов. Ой, чуть не забыл, для
того чтобы игра запустилась, в реестре по
адресу HKey_Local_Machine\Software\Electronic Arts\Need For Speed High
Stakes\1.0\SrcDrive, нужно вписать путь к папке DATA в
катологе NFS на вашем диске и скопировать с CD
мувисы и музон (последний найдите сами :).
Все! Играйте, а я пошел, а то меня совсем
запинают 🙂 …

Оставить мнение

Check Also

Хакер ищет авторов. Читатель? Хакер? Программист? Безопасник? Мы тебе рады!

Восемнадцать лет мы делаем лучшее во всем русскоязычном пространстве издание по IT и инфор…