Исследование и изменение исполняемого кода в процессе работы программы, что может быть интересней? Intel Pin – фреймворк для динамической бинарной инструментации (Dynamic Binary Instrumentation, DBI) исполняемого кода. Этот фреймворк обладает широкими возможностями по анализу и модификации кода. Мне было очень интересно посмотреть вживую на доступные в нем функции по анализу отдельных инструкций. И наконец подвернулась такая возможность.
В статье будет рассмотрено получение адреса перехода для инструкции jmp
, перехват вызова функции, находящейся за таблицей инкрементальной линковки (Incremental Linking Table, ILT) и все это средствами Pin.