Вчера мне что-то сутра было хреновато, поэтому сидел дома, никакого универа. И, блин, вспомнил, что завтра мне надо сдать 4 отчёта по лабам по атомной физики (физфак то!), но насколько это влом, то просто трудно себе представить, да ещё и теорию надо учить. Вобщем, я благополучно на это всё, ясное дело, забил и вспомнил только под вечер. Еле заставил себя кликнуть по папке “Лабы”, где хранились программки для моделирования разных физических процессов (типа изучение спектра излучения какого-нибудь атома или дифракции электронов), которые нам разрешили копирнуть с компов в универе, запустил и… облом. Для того, чтобы получить доступ к выполнению самой лабы нужно пройти тест из 9 вопросов с четырьмя вариантами ответов, причём выбрать можно 1 из четырёх ответов (используется обычный comboBox). Чёрт… а у меня ещё методичек нет, да и впадлу вопросы читать. Вобщем, косяк. Что делать?
И тут во мне начинает просыпаться древний, еще со школьных времён, инстинкт всё ломать. Думаем. Программка: обычный .exe, без всяких особенных присоединённых .dll. Исходников, ясное дело, нет, да и кто нам их даст. Как тут узнать правильные ответы не читая вопросы? Поэтому, единственный метод – реверсинженеринг))).
Сначала используем лёгкую артиллерию: заюзать программку ResHacker. Пытаемся открыть наш файлик и… видим “бы-бы-бы кривой layout, причина: EXE compressor”. Ну ясное дело, так защитили нашу программку, да и весит она тогда меньше. Я прекрасно знал, что у каждого компрессора своя сигнатура (записанная, например, в виде DE AD BE EF), поэтому надо её как-то определить. Берём PEid v0.95 и смотрим наш PEшник. Читаем: nSPack v2.x, уже неплохо, жмём дальше deep scan и видим: nSPack v 2.1 – 2.5. Извращенцы, что сказать. Я думал, что они, как нормальные люди возьмут что-то типа ASPack, а тут малоизвестное китайское барахло.
Как же его теперь распаковать? Официальных распаковщиков нет. Попытка воспользоваться nspack stripper ни к чему не привела. Думаем. Ага! Есть же PE explorer, хоть и шароварный, который, как я посмотрел, при просмотре файлов распаковывает их именно из nspack, хоть и частенько портит сами файлы, но это нам и не нужно (но на всякий случай копию программки сохраним). Вроде нормально. Дальше, кроме всей прочей информации о заголовках, видим что компилятор у нас Delphi 5-6 , что и понятно – другому на физфаке не учат. Скорее всего, как я подумал, что разработчик не станет сильно мудрить, а просто в обработчике по нажатию какой-то кнопки будет проверять все выставленные мной ответы и если хоть в одном случае что-то неправильно то не допустит к выполнению лабы.

(нажмите на изображение для увеличения)
Залазим дальше в раздел Resourсe Editor, где можно найти информацию об иконках, картинках используемых в файле, и, что намного важнее, информацию о формах, используемых в приложении. Так вот переходим в RC Data, дальше TQUESTDLG и выбираем ReadyBtn (благо автор её назвал незамысловато), там же найдём и сам обработчик. А он, ясное дело, ReadyBtnClick (я не думаю, что автор стал бы использовать геттеры, что широко применяются в Java). ОК, кое-что уже узнали. Дальше приступаем к самому важному и страшному этапу: дизассемблирование. Жмём “disassembling” и ждём секунд 10.

(нажмите на изображение для увеличения)
Дальше видим кучу кода в машинных командах и их соответствия в ассемблере. Далее жмём “Search” и пытаемся найти какую-нибудь машинную команду сравнения (её код “83” или её аналог в асме просто “cmp”), и находим, хорошо поискав, ровно девять таких команд (как и количество вопросов), после которых идёт переход на какие-то метки, а эти hex числа во втором операнде каждой команды и есть правильные ответы (от 0 до 3), т.е. правильные ответы: в 1-ом – 2-ой, во 2-ом – 4-ый, в 3-ем – 1 – ый и т.д.
И всё. Да.. если бы кто-то использовал программы подсовки ложных сигнатур типа EP Prot, это заняло бы у меня намного больше времени.
Хотя потом я подумал: может всё-таки надо было кому-то позвонить и попросить прислать методички по мылу?
P.S. кстати, отчёты я до сих пор не оформил)
ЗащЫта, Новости - Отзывов: 2 »