Показаны сообщения с ярлыком firefox. Показать все сообщения
Показаны сообщения с ярлыком firefox. Показать все сообщения

пятница, 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, понимаиш!

вторник, 11 марта 2008 г.

Ё в firefox

Давно меня раздражало непонимание Firefox-а буквы ё. Оказалось, что всё решаемо и помехой была только моя лень.
Решение как всегда лежало в Гугле, почти на самом виду. Более того, новый словарь одновременно проверяет и русские и английские слова, что очень удобно - не надо переключатся между ними.

Для ленивых даю ссылку.
http://forum.mozilla-russia.org/viewtopic.php?id=15316

пятница, 23 ноября 2007 г.

Баг с раскладками в Firefox исправлен!

Ура, ура, ура. Шестилетний баг с раскладками в Firefox исправлен.

Настораживает правда фраза
Патч написанный Олегом Крыловым получил одобрение разработчиков и был включен в код, а значит Firefox 3.0 выйдет уже без этой проблемы.
А 2.x как же ? Неужели они промаринуют баг до релиза 3.0 ?

Всё-таки я надеюсь на исправление в 2.0.0.10. Эта ошибка уже конкретно достала. Особенно невозможностью скопировать что-либо в буфер обмена.

Клац здесь, клац там. Аргх.... Раскладка то русская.

четверг, 22 ноября 2007 г.

Устанавливаем две лисы

Как уже всем наверное известно, недавно вышел FireFox 3.0b1. Многим наверное хотелось бы посмотреть, но останавливают опасения испортить существующий профайл или замусорить его. Сейчас я расскажу, как можно безопасно установить бету, и как её удалить (впрочем, зачем удалять ?).

Первым делом скачиваем инсталляцию. Например отсюда

Пока файл качается сохраним наш профайл Firefox 2.0:
Переходим в директорию
C:\Documents and Settings\<username>\Application Data\Mozilla\Firefox\Profiles

Директория, впрочем, может быть другой, в таком случае Вам нужно узнать где же находятся эти самые Application Data. Далее я буду указывать пути начиная с Application Data.

Итак, пеерходим в Application Data\Mozilla\Firefox\Profiles и видим там одну или несколько директорий с профайлами. Лучше всего весь Application Data\Mozilla\Firefox заархивировать и сохранить. Повреждений данных не предвидится, но есть одна тонкость о которой я скажу позже.

Теперь инсталируем Firefox 3.0b1. По умолчанию он ставится в отдельныую директорию и не помешает второй версии, но лучше это проверить, так как со временем это может изменится.
! Снимаем отметку «Запустить Firefox». Пока это нам не нужно.

Создаём директорию Application Data\Mozilla\Firefox3. Если вы не хотите переносить данные из Firefox 2.0, то переходим на следующий пункт, иначе копируем в неё содержимое вашего текущего профайла. Обычно она выглядит как Application Data\Mozilla\Firefox\Profiles\что-то-там.Default User

! Внутри Application Data\Mozilla\Firefox3 должны находится сами данные профайла, а не директория с профайлом. Проще говоря содержимое Application Data\Mozilla\Firefox3 и Application Data\Mozilla\Firefox\Profiles\что-то-там.Default User должны совпадать.

Примерно так:



Теперь необходимо подправить все ярлыки на Firefox3 следующим образом:
К Target "C:\Program Files\Mozilla Firefox 3 Beta 1\firefox.exe" добавим полный путь к новому профайлу:
"C:\Program Files\Mozilla Firefox 3 Beta 1\firefox.exe" –no-remote –profile "C:\Documents and Settings\<username>\Application Data\Mozilla\Firefox3"
Все кавычки нужны.

Параметр –no-remote позволит запускать разные версии лисы одновременно. Без него, лиса ищет в памяти уже загруженную копию (любой версии) и открывает ссылку в ней. Этот флаг отключает такую связь.

Кстати, просто создать ещё один профайл для Firefox 3 не получается. Каждый браузер при старте начинает почему-то проверять свои расширения, что раздражает.

Теперь можно запускать. Если ничего не напутано, то Firefox 3 будет использовать новый профайл, а Firefox 2 старый. Проверить это можно например добавив в закладки какую-либо ссылку, и перезапустив оба браузера.

Вот и всё. Теперь имеем 2 независимые лисы. Версия 2.0 продолжает работать как обычно, а 3.0 с параметром -no-remote будет иметь немного отличное от обычного поведение

Удаление. С удаление нужно быть осторожным. Отметку «Удалять личные данные» ставить не стоит – будут удалены профайлы лисы 2.0, а профайл от 3.0 останется нетронутым. Удалять профайл 3.0 (которым мы сами создали и поместили в несвойственное для него место) лучше руками.

пятница, 16 ноября 2007 г.

Некоторые 'проблемы' с prefwindow в XUL

Довелось мне вчера использовать контрол 'prefwindow'

Основное время использования (часа эдак 2) я пытался понять, почему ничего не работает и кто виноват.

Проблема была в том, что моё окно prefwindow появлялось в каком-то кастрированном виде. На диалоге была только одна закладка, в то время как их должно было быть 3. При этом сам FireFox открывал моё окно настроек (из окна управления расширениями) очень даже правильно.

Всё оказалось просто. Я открывал окно без указания опции toolbar, а сами ярлыки закладок были именно там. Поэтому не забываем этот факт и пишем так:

window.openDialog('chrome://ogameextender/content/options/options.xul', 'ogameoptions', 'chrome,modal,toolbar');

понедельник, 12 ноября 2007 г.

Расширяем гуглоблог

Редактор постов на blogger.com/blogspot.com не кажется мне слишком удачным.

Крошечное окошко для редактирования сообщений развивает у меня некое подобие клаустрофобии.

Но на помощь спешит FireFox с установленным расширением GreaseMonkey! Небольшой скрипт исправит положение и раздвинет окна широко, как только возможно.

Сам скрипт тут. Если кликнуть по ссылке при установленном GreaseMonkey, то последний предложит вам установить скрипт. Можете посмотреть исходный код и убедится, что форматировать винчестер я не собираюсь.


З.Ы. Высота окна редактирования пока не изменяется. Позже проработаю этот вопрос глубже, дальше, нежнее.

Update: все скрипты тут.

четверг, 8 ноября 2007 г.

Отдельные излишне возбуждаються...

Тут некоторые товарищи на форумах излишне любят восклицательные знаки. Сиё явление мы будем всячески осуждать и пресекать. Например с помощью этого скрипта к greasemonkey

Updated:
Я вспомнил, что у меня есть ftp доступ к хостингу на tut.by. Даю прямую ссылку на скрипт.
Если у вас установлен greasemonkey, то простого клика будет достаточно - firefox предложит установить его.

Updated2:
Скриптик оказался побит жизнью и движком блога, поэтому в нём не хватало пары кусков кода.
Полностью правильные скрипты тут

четверг, 1 ноября 2007 г.

OGame-Extender

Продолжаю тему игры OGame. Сама игра мне уже порядком поднадоела в виду того, что меня уже пару раз отпиздили (да так вот грубо). Но тем не менее, свой набор скриптов (который уже перерос в нормальное FireFox расширение) я продолжаю дорабатывать.

Сегодня вечером я завершил релиз 1.0. В данном релизе я сделал то чего мне давно хотелось - составил сводную табличку по ресурсам со всех планет.


На панели с ресурсами появилась надпись All resources. При наведенн на неё курсора всплывает табоичка, которую можно видеть на картинке. Колонка Big.Transports указывает примерное число больших транспортов для вывоза всех ресурсов.


Как это происходит. Как только пользователь загрузил страницу на которой присутствует информация о ресурсах, эти данные запоминаются и показываются в дальнейшем. А сам плагин не лазит по страницам в поисках данных, поэтому они быть устаревшими. Об этом говорит последняя колонка данных - время прошедшее с последнего обновления.


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

Расширение пока нигде не доступно, но по просьбе могу выслать на e-mail

пятница, 19 октября 2007 г.

FireFox и OGame - друзья навек

Последнее время играю в одну незамысловатую онлайн игру. Называется ogame. Игра и вправду незамысловатая, особенно в части интерфейса. Интерфейс неудобен и крив. Но на помощь к нам спешит FireFox и один из его плагинов - Greasemonkey.

Плагин Greasemonkey позволяет добавлять на любую страницу свой JavaScript и исполнить его. А так как DHTML это сила, то становится возможным перекроить страницу как только угодно.

Этим я и занялся. Плюсы занятия очевидны - я получаю более удобный интерфейс, и знания в области JavaScript и HTML DOM.

Итак, рассмотрим одну из страниц игры - "Технологии". На ней расположена таблица, в которой отображено какие технологии нужно изучить и на каком уровне для возможности что-то построить/изучить.
Имеем (142 k):

Не очень то удобно... Например, если есть выбор что изучить - Плазменную технологию, или Лазерную технологию, что выбрать ? Нужно выбрать ту, что даёт более желаемый результат. Но, что даст Плазменная технология просто так не узнать. Нужно найти все вхождения её во втором столбце. Что нудно и вообще не интересно.

Значит нужен 3-ий столбец, показывающий что даёт данная технология/постройка. Берём в руки DOM и точим напильником (то есть JavaScript-ом).
Получаем (130k):


Что ещё мы тут имеем ? А вот что:
  • Таблица стала на всю ширину экрана. От уеньких табличек у меня развивается клаустрофобия.
  • Были зверски убиты дополнительные возможности, связанные с реальными деньгами. Я не платил и не собираюсь платить за какого-то там командира. И знать количество Тёмной материи (денег проще говоря) мне незачем.
  • В качестве бенефита я решил слегка изучить Graphviz - комплекс программ, позволяющий генерировать различные графы. И после непродолжительного мучения получен следующий граф (33k):


Пока этот граф нужно генерить самому на основе описания. Описание же графа генерится JavaScript-ом, и помещается под таблицей технологий (на картинках не видно). Что конечно не удобно и вообще...

З.Ы. Скрипт тут