Я пытаюсь создать скрипт на python, который будет разбирать двоичный файл (точнее, исполняемый файл Windows) и анализировать его код.
Мне нужна возможность взять определенный буфер и извлечь некоторую структуру, содержащую информацию об инструкциях в нем.
Я работал с libdisasm в C раньше, и я нашел его интерфейс довольно интуитивно понятным и удобным.
Проблема в том, что его интерфейс Python доступен только через SWIG, и я не могу заставить его правильно скомпилироваться в Windows.
В аспекте доступности diStorm предоставляет приятный готовый интерфейс, но он предоставляет только мнемонику каждой инструкции, а не двоичную структуру с перечислениями, определяющими тип инструкции, а что нет.
Это довольно неудобно для моей цели и потребует много того, что я считаю потраченным на завершение интерфейса, чтобы он соответствовал моим потребностям.
Я также посмотрел на BeaEngine, который на самом деле обеспечивает нужный мне вывод, структуру с двоичной информацией, касающейся каждой инструкции, но ее интерфейс действительно странный и нелогичный, и он почти мгновенно завершает работу при наличии неправильные аргументы.
Вид CTypes типа предельной смерти для вашего питона.
Итак, я был бы рад услышать о других решениях, которые занимают немного меньше времени, чем возиться с djgcc или mingw для создания SWIGed libdisasm, или писать оболочку OOP для diStorm.
Если у кого-то есть какое-то руководство относительно того, как скомпилировать SWIGed libdisasm, или, что еще лучше, скомпилированный двоичный файл (pyd или dll + py), я бы хотел услышать / получить его. :)
Спасибо, вперед.