понедельник, 12 июля 2010 г.

IDA + Bochs: нафига оно надо?

Я как-то уже писал об эмуляторе x86emu для IDA, но сегодня я хочу рассказать о гораздо более мощном эмуляторе Bochs. Bochs представляет собой полный эмулятор системы, на базе которого вы можете загрузить любую ОС (если только нужное для загрузки этой ОС железо поддерживается эмулятором).
В эмуляторе есть встроенный отладчик, который позволяет отлаживать загрузку операционной системы еще на раннем этапе. Но самое интересное другое, а точнее то, что начиная с версии IDA Pro 5.4 появилась возможность подключаться к отладчику Bochs из стандартного интерфейса IDA. Работает эта связка достаточно быстро, в отличии, если вы попытаетесь загрузить винду под эмулятором и выполнить какие-то осмысленные действия. А том, как подключить отладчик Bochs из IDA уже есть хороший мануал, а я постараюсь рассказать собственно зачем это делать. На самом деле эту возможность почему то многие упускают из виду, хотя порой эта фича оказывается крайне полезной. Например, при отладке шелл-кода, обфусцированного кода или когда просто нужно быстро выполнить произвольный участок исполняемого файла. IDA поддерживает несколько режимов отладки в связке с Bochs:
- отладка ранней стадии загрузки (Disk Image), что позволяет отлаживать boot record
- отладка произвольного участка кода (IDB), позволяет выполнить на эмуляторе любой выделенный участок кода. Этот режим полезен при отладке шелл-кода и обфусцтрованных участков кода
- отладка исполняемого файла (PE), стандартный режим отладки
Отладка загрузочной записи бывает очень полезна при анализе зловредов, которые ее модифицируют (mebroot, gootkit ...).
Использование связки IDA + Bochs значительно эффективнее, нежели x86emu, т.к. здесь происходит эмуляция не выборочного набора вызовов API, а работы всей ОС целиком.