вторник, 29 декабря 2009 г.

О полезности x86emu

Решил написать об одном довольно интересном и полезном плагине для IDA, о котором почему-то не так много народу знает и еще меньше использует.
Разработчиком этого плагина, вот уже более пяти лет (разрабатывается с 2003 года), является Chris Eagle. Небезызвестный автор уникальной в своем роде книге The IDA PRO Book. На самом деле попыток реализовать эмуль в виде плагина для IDA было довольно много и даже некоторые из них были довольно удачными, но все они постепенно канули в лету. Причин для этого было много не удачная реализация и лень чего-то менять в ней, закрытые исходники и игнорирование автором просьб общественности о добавление полезного функционала и т.п.

Итак что же умеет x86emu (стандартные вещи опущу пожалуй):
- есть поддержка floating point operations
- поддержка MMX
- поддержка SSE
- парсит PE import tables
- показывает структуру PEB/TEB
- понимает SEH
- понимает специфику формата ELF (правда пока еще не все реализовано)
- эмуляция вызова некоторых WinAPI-функций

Помимо эмуляции x86-инструкций x86emu умеет эмулировать вызов довольно большого количества WinAPI-функций: список всех эмулируемых WinAPI-функций.
Этот плагин распространяется в исходных кодах, что само по себе очень ценно. Так же в стандартной поставке есть скомпилированный вариант x86emu.plw для версии IDA Pro 4.9 (freeware version). Есть некоторые нюансы при сборке плагина для новых версий IDA, поэтому я залил сюда свою сборку для IDA v5.5.
Домашняя страница проекта
Репозиторий на SourceForge