вторник, 15 февраля 2011 г.

Джентельменский набор маньяков - Windows reverse engineering

Так как моя работа уже более полугода как связана с сабжем, приведу список инструментов без которых не обходится ни один мой рабочий день. Номер в списке с приоритетом никак не связан.
  1. Microsoft Visual Studio 2008 Professional - средство разработки и отладки. Думаю, комментировать тут нечего.
  2. Книга "Windows Internals 5th.ed." - авторства знаменитого Марка Руссиновича, рассказывает о том, что осталось за бортом официальных мануалов Microsoft'a. И, скажем так, Microsoft от этого не в восторге. Если описывать в двух словах, я бы описал ее так - "Тру кулХацкерам посвящается...".
  3. Утилита Procexp - из набора Sysinternals Suite, разработки того же Руссиновича. Представляет продвинутый Task Manager. Из всех фич, я более всего ценю следующие:
    • Список запущенных процессов представлен древовидной иерархией.
    • Список модулей, загруженных процессом
    • Списко хэндлов открытых процессом
    • Информация о запущенных потоках с возможностью просмотра стэка
  4. Утилита Procmon - из вышеупомянутого набора. Монитор активности процессов c потрясающим механизмом фильтрации событий. Составляет журнал всех операций совершенных процессом по отношению к реестру, файловой системе, операций связанных с сетевой активностью. По каждой операции можно просмотреть ее аргументы(например, имя открываемого файла, или с какими правами он открывается), результат выполнения и стэк. Незаменимая утилита при анализе ошибок в работе приложений, когда нет ни исходных кодов приложения, ни отладочной информации, ни документации - короче, черный ящик.
  5. Отладочная информация для системных dll-ок - взятая с Microsoft Symbol Server. Используется Procexp и Procmon утилитами для показа читабельного стэка вызовов. Загружается с серверов Microsoft'a по мере надобности автоматически, хотя можно скачать весь пакет сразу.
  6. Утилита WinDbg - использую для просмотра crash dump'ов. Но может использоваться и для отладки запущенных приложений. Пока не очень хорошо в ней разбираюсь, посему, скромно промолчу.
  7. Microsoft Visual Studio Remote Debugging Monitor - использую для удаленной отладки приложений вкупе с MSVC.
  8. Виртуальная машина на базе VMware Workstation - так как реверс инжинеринг - это дело весьма низкоуровневое и хачить систему приходится постоянно, то всегда существует опасноть того, что в любой момент может накрыть Синька, оно же BSOD, оно же Синий Экран Смерти, и дабы не подставлять основную ось под "Крававый Молот Рагнарёка"(кодовое название моего проекта =) ), отладка и тестирование ведется на виртуальной машине.
  9. http://www.reactos.org/ - эти хлопцы весьма успешно продвигаются в создании ОС аналогичной Windows, но с открытыми кодами. Аналогичной - мягко сказано, можно сказать, что они передирают ее один в один, с сохранением сигнатур API-шных функций и структур данных. Реализация функций тоже весьма схожа, хлопцы наверное часами сидят с декомпилятором. В эти исходники я частенько заглядываю, чтобы узнать, как работает та или иная API функция или посмотреть на структуру, на которую указывает хэндл возвращаемый? например, OpenScmManager().
  10. http://www.insidetheregistry.com/ - описание назначения всевозможных ключей реестра
  11. MSDN - как ни крути, а все же основной источник информации
  12. Много кофе
  13. Железные нервы
  14. Стена, об которую можно биться головой, если нервы таки сдают.

Комментариев нет:

Отправить комментарий