четверг, 22 сентября 2011 г.

эфир? действительно, почему нет

Оригинал взят у в эфир? действительно, почему нет

Crack story, bro!

Началось это в 98-99 году. С игры "Вангеры", игра была красивая и необычная и главная проблема была в том, что диск был один и не мой, а поиграть хотелось нам обоим. С какого-то диска мне попалась программа w32dasm ей я и начал ковырять .ехе файл игры.
Делал довольно тупо и линейно, знаний по асму никаких, про win32api даже не слышал. Запускал игру на отладку и с точки входа по одной команде "trace over" шел вперед. Если после какого-то вызова процедуры игра запускалась и просила вставить диск, то я запоминал адрес вызова, заходил внутрь функции и повторял действия. В какой-то момент, добравшись до самого низа, то есть до самих win32 функций винды начал смотреть что они делают.
Исписал адресами несколько листов А4, была цепочка из адресов со стрелочками переходов.
Нашел функцию GetDriveTypeA, которая возвращала тип диска, где =5 был CD, =3 был HDD.
От этой функции посмотрел вверх вниз проверку диска. Заменил условные переходы и даже не поверил, когда игра запустилась, а диск был вынут из CD, я вставил и вынул диск несколько раз и, держа его в руках, запустил игру еще раз.
В первый раз на всё ушло около 10 часов непрерывно смотреть в непонятный ассемблерный код.
Было странное чувство радости, что начал копаться в непонятных вещах, разобрался и сделал.
Куча соплей под катом.