пятница, 27 февраля 2009 г.

История одного взлома

Буквально сегодня мне понадобилось по работе немножечко взломать одну программу лину(назовём её crackme.exe). Собственно ничего особенного и криминального нет - программа куплена, но имеет некоторые настройки(а именно SQL запросы), которые нужно было модифицировать. Данные хранились в запароленной Access базе (.mdb), которая лежала в запароленном zip архиве.
Была поставлена задача - извлечь mdb файлик, с целью поглумиться над ним в дальнейшем.

В начале я решил посмотреть, что ценного программа создаёт в всяческих TEMP-ах. Чтоб не путаться с остальными программами сделал так
mkdir mytemp
set TEMP=mytemp
set TMP=mytemp
crackme.exe

Вуаля. Все временные файлы этой и только этой программы лежат в поддиректории mytemp, и пару из них имеют многообещающие названия JETxxxxx. Ну, думаю, это временно распакованная база, вот свезло, так свезло! Глядь - а она не открывается. Файл размера 0. Ясно, думаю, запретили одновременный доступ. Быстрым движением рук убиваю процесс, чтоб он стервец не успел поудалять временные файлы. Смотрю - успел. Ишь ты шустрик какой, видно создавал темпы с флажком FILE_TEMP (или как там его), чтоб после завершения работы программы он автоматически удалялся системой. И ведь удаляется!

Ладно, начал размышлять, как бы изменить параметры создаваемого временного файла, и тут подумал "think different". Взял в руки task manager 'procxp' от Марка Руссиновича и стал изучать чего вообще там программа держит. Какие файлы, темпы, DLL-ки и объекты.
Ага! Программа держит файлик называющийся в точности как нужная мне база, где-то в Application Data. Перемудрил я немного, никто в темпах и не скрывался, всё вполне открыто лежит.

Ну, теперь нужно вскрыть эту mdb базу консервным ножом. Ищем нож в интернете, находим, скачиваем и запускаем. Нож рапортует "пароль восстановлен. давайте деньги". Вот ещё, платить деньги за 1 секунду работы :( Ищу дальше, и в конце концов нахожу Open Source консервный ножик, написанный на Java. Запускаю и тут же получаю пароль. В голову закрадывается мысль, что в Microsoft сидят идиоты, в частности те, кто писал запароливание Access баз.

Получаю пароль и отсылаю по месту требования. Все радуются и переходят к обеду.

После обеда оказывается, что нужные запросы хранятся не в базе, а в зашифрованном zip файле, и я снова при деле!

Нахожу какой-то восстанавливатель паролей для zip архивов, запускаю - и вижу удручающую картину. Шифрование zip-ов писали не кретины: программа перебирает, перебирает и конца этому не видно. Впрочем, конец всё-таки наступил, и довольно быстро - программа через 5 минут работы потребовала денег. Жадные, все какие :(
Искать бесплатный аналог бесполезно, пары лет в запасе у меня нет.

Опять начинаю "думать по другому". Ладно, возьму отладчик SoftICE и им расколупаю, что угодно. Нахожу одну версию, ставлю, получаю BSoD. Нахожу другую версию - цвет не менее синий и не менее смертельный :( Опять просачивается мысль про идиотов, теперь уже в NuMega или Compuware (уже запамятовал чей этот дебаггер сейчас).

Так. Скоро я вообще перестану думать нормально, а только "different". Снова приходит мысль - ищу в зависимостях какие-нибудь интересные DLL-ки. Нахожу только msvbvm60.dll. Вижуал васик, говорю себе грустно.

Тут начальник упоминает про какую-то DLL. Уточняю - оказывается он посмотрел exe обычным notepad-ом и увидел там строку 'sevZip30.dll'. Смотрю Far-ом (нет у меня доверия к нотпаду). Ну точно, есть такая строчка. Значит грузит во время работы! Собственно, чего ещё ожидать от васика. Нахожу этот файл в c:\windows\system32. Так они ещё и мусорят в системной директории, сцуки :(

Рождаю мысль написать DLL-переходник. Программа вызывает мой переходник, который в свою очередь вызывает реальную DLL. А по пути ненавязчиво собираем передаваемые параметры, среди которых будет пароль!

Скачиваю masm, и начинаю понимать, что ассемблер то я совсем забыл. Ну ничего, после непродолжительного гугления, нахожу програмулину, выполняющую то, что надо - генерирующую подобный переходник. Ура. Запускаю и получаю ошибку :( Та-а-к, заглядываю в DLL и вижу - дело не чисто, тут порылся UPX. Скачиваю UPX, распаковываю DLL и снова натравливаю утилитку. Опять ошибка, хотя и другая :(

Ладно, в голову приходит свежая идея. Берём IDA Pro и дизассемблируем файлик. Авось найдётся алгоритм генерации пароля, или что там у них.

Качаю, устанавливаю, начиню дизассемблирование. Да... IDA Pro - мощнейшая штука... Час лажу по дизассемблированному исходнику, и тут... Звонит начальник и сообщает, что эти запросы, оказывается, можно редактировать прямо из программы! Собственно, почти день работы на смарку! Но остановиться уже не могу - подлая программа должна быть побеждена!

Внутренний генератор идей не на шутку разошёлся сегодня и выдал ещё одну - в начале функции UnZip влепить 0xCC, что как известно int 3. Программа загрузит dll, дёрнет функцию, функция наступит на int 3, подскользнётся и рухнет. Тут я её сачком и накрою aka обычным отладчиком из Visual Studio. И уже из студии посмотрю стек, а в нём... пароль.

Сказано сделано. В IDA нашёл где начинается функция UnZip, скачал двоичный редактор WinHEX и влепил в нужное место 0xCC. Запустил программу а сам притаился перед монитором. Бабах! Программа выполнила невыполнимую операцию и будет отлажена. Хлоп - накрываю её сачком. Смотрю стек и нахожу странно-подозрительный параметр 'firefox'. Эге-ж. Открываю архив, подсовываю 'firefox' в качестве пароля. Канает! Он.

Дело закрыто.

З.Ы. А создателям программулины - решпект. Firefox, понимаиш!

четверг, 26 февраля 2009 г.

Поблютутсил тут...

Поехал сегодня в налоговую. Вызвали, значит.

В метро от скуки включил поиск устройств bluetooth, хотя конечно не мог поверить, что кто-то может его не отключать для сохранности аккумулятора. Как ни странно, таковые нашлись и довольно много. Максимальное число одновременно блютутсящих в пространство людей достигало 3-ёх. Конечно, кроме как поглазеть на имена телефонов, сделать больше ничего нельзя. Нужны коды доступа и всё такое... Но и сами имена бывают довольно презабавные. "Юльчик", "Дэн", "SGH-xxx Мой хороший", много безликих Nokia, SGH ну и так далее. Одно имя просто таки поразило по самое немогу - "Жизнь говно". Ищу, значит, устройства сопряжения, а тут "жизнь говно". Нашлось... :)

А в налоговой уговаривали написать заявление на проверку меня. Проверка разумеется для того, что бы что-нибудь накопать и оштрафовать. Зачем заявление? Да самовольно не имеют право. Закон-с.

Короче, бред. "Оштрафуйте меня по собственному желанию"...

четверг, 12 февраля 2009 г.

Вжик! сказала бензопила. Ага! сказали сибирские мужики.

Когда-то давно, ещё до моего вселения стоял на пути от дома до автобусной остановки забор. Обычный такой школьный забор - металлические уголки, а на них натянута сетка. Некий добрый человек, спасибо ему большое, отодрал эту сетку на одном пролёте, после чего ходить стало намного прямее. Но есть маленькая проблема - рамка забора осталась, приходится пригибаться, когда пролазишь.

И вот вчера тёмной ночью я выбрался с не менее тёмной целью - выпилить кусок верхней рейки. Специально дождался когда жена идёт ночную смену (она меня не пускает пилить, говорит боится, что попадусь. Да я и сам боюсь, но дело то нужное...), подождал до 2 часов ночи и пошёл. Пристроился, значит, пилю, нервно озираюсь вокруг: а ну как менты придут, у них есть привычка по вечерам патрулировать в нашем районе.

Начало пилилось за милую душу - вжик, вжих. Но вот под конец полотно стало застревать - планка забора прогибается и пропиленная щель сужается. Взялся в две руки. Не прошло и пары минут, как - готово. Сломал. Лопнуло ножовочное полотно :( Запасного конечно нет, не озаботался.

Не слолно пиливши пришлось возвращатся домой, отворачивая морду лица от камер наблюдения.

Придётся сегодня заехать и купить пару ножовочных полотен. Может быть даже 3, нельзя недооценивать школьные заборы...

среда, 11 февраля 2009 г.

Гарри Поттер и все все все...

Ура-ура-ура. Сегодня наконец-то закончил читать семилогию о Гарри Поттере. Последнюю книгу я читал полтора года :)

Но у меня есть оправдание, я её читал в оригинале - на английском. Задумал её так прочитать за пол года до выхода, так что общее время от намерения прочесть до конца чтения составило около 2 лет. Да... Немного затянувшееся чтение по вечерам :)

Ну, по правде говоря, читал я её очень не регулярно. В один из перерывов я умудрился прочитать "Остров сокровищ", в другой "Приключения Шерлока Холмса" (какие-то избранные рассказы), ещё одну книгу про Холмса, пару рассказов про Дживса и Вустрера... Всё это на английском. Импрувлю, так сказать по тихонькую скилы.

Как обычно, после прочтения/просмотра какой-нибудь XXXлогии на душе тоскливо от того, что всё прочитано. Вот скоро ещё досмотрю "Доктора Хауса" и вообще впаду в депрессию... :(

Но это всё лирика. Следующая книга предназначенная для чтения в оригинале - "Трое в лодке не стесняясь собаки". Уже скачана, нарезана на главы, закинута на мобилу. Перевод тоже под рукой, что бы проверять себя.

Надеюсь закончить её к 2010 ;)

вторник, 3 февраля 2009 г.

Фильтр Brita. Раунд 2

Постольку поскольку срок работы фильтрующего вкладыша благополучно закончился(при этом я, надо признаться, тоже приложил свой рот к носику фильтра, хотя и не верю в его могущество), я решил провести ещё один эксперимент. Хотелось выяснить, фильтруется ли чай, и насколько.

Ну, надо, значит надо. А хочется, значит... значит тоже надо.
Заварил чай, залил, подождал выхода продукта. Перелил в "результационный" стакан.


Затем промыл фильтр и повторил операцию с растворимым кофе.


А вот и результаты, с лева на право:
Кофе, фильтрованный кофе, чай, фильтрованный чай.


Как видно, что-то отфильтровалось. И чай и кофе слегка просияли.

Выводы такие - никаких выводов.

Шоколадочка

На днях отец с тестем привезли новую кухню. За одно привезли небольшую шоколадку весом в 1 кг. Отломать кусочек не представляется никакой возможности. Да даже отрезать практически нереально - приходится приставлять нож и молотком рубить её.

В последнее время, правда, я приноровился её кромсать без молотка - ударами ножа, как в "Основном инстинкте". Хрясь, хрясь... Глядишь на вечер уже и наколол :)

Вообще, если я всё правильно понял, это какой-то полуфабрикат для кондитерских нужд, который был где-то нагло спёрт и продан доверчивому населению.

А вообще ничего. Вкусно :)