Инструмент более высокого уровня для написания прохода в LLVM

Обычно, если вы хотите изменить LLVM IR, вам нужно написать пропуск. Тем не менее, написание паса иногда является излишним, если инструмент более высокого уровня может помочь вам.

Например, кто-то может захотеть войти каждый load а также store в программе. Для этого ему нужно будет ввести код, который делает запись в журнал. Теперь, если есть инструмент более высокого уровня, он может предоставить нам обратные вызовы, чтобы написать то, что мы хотим. Так что в этом случае, например, это может дать нам OnLoad а также OnStore функции, которые мы можем заполнить, чтобы сообщить инструменту, что делать с каждой загрузкой и хранением. Существует ли такой инструмент?

В общем, я хочу что-то похожее на то, что предоставляют инструменты Dynamic Binary Instrumentation, но это работает с LLVM, для внедрения кода времени компиляции.

2

Решение

Я думаю, вы должны рассмотреть возможность использования PIN вместо LLVM для таких вещей: http://www.pintool.org/

PIN-код позволяет вставлять инструментарий / анализировать код на нескольких уровнях детализации: инструкция, базовый блок, функция, трассировка и даже загрузка / выгрузка общих библиотек. Это может быть более практичным способом, так как вам не нужно будет компилировать приложение, поэтому вы можете анализировать программы, которые, например, не имеют открытого исходного кода.

Есть версия ПИН для windows и linux.

PS: еще один инструмент, который кажется полезным: http://eces.colorado.edu/~blomsted/llvmpin/llvmpin.html

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]