PIN/DinamiRIO. Аттач после запуска возможен?

Тема в разделе "WASM.RESEARCH", создана пользователем samuraishowdown, 31 авг 2011.

  1. samuraishowdown

    samuraishowdown New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2011
    Сообщения:
    70
    Интересует возможность выполнить только часть программы в режиме JIT, а остальное нативно. Например - от старта приложения до загрузки такой-то DLL код выполняется нативно, а потом в режиме JIT-рекомпиляции.

    Пользовался только PIN. В нём такая возможность планируется в будущем, сейчас нету. Как насчёт DinamoRIO. Читал его доки нашёл вот-что:

    An alternative to running an entire application under DynamoRIO control is to use the Application Interface to specify a portion of the application to run. This interface consists of the following routines:
    dr_app_setup()
    dr_app_start()
    dr_app_stop()
    dr_app_cleanup()
    dr_app_take_over()


    Примеров использования вышеперечисленных API не видел/не нашёл. Даже не уверен в том, что это то что мне надо.

    В общем кто пользовался DinamoRIO - отпишитесь.
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Я не очень разбирался в исходниках ядра DynamoRIO, но для твоей задачи достаточно будет сделать dr_insert_call() для нужной точки кода (после которой программу нужно инструментировать), и когда обработчик этой точки кода сработает -- вызвать dr_register_trace_evet/dr_register_bb_evet (или что там тебе нужно) что бы перейти к инструментированию программы. Таким образом, JIT не будет задействован до тех пор, пока ты не зарегистрируешь обработчик на trace или bb event.

    Да, так же настоятельно рекомендую собрать DynamoRIO из последних исходников с репозитория. Версия, которая лежит на сайте, старая и бажная.