#c #compilation #intel-pin
#c #Сборник #intel-pin
Вопрос:
Я пытаюсь запустить ручные примеры новейшего Pin-инструмента от Intel (3.7-97619) на 32-разрядной версии Kali (Linux kali32 4.19.0-kali4-686-pae #1 SMP Debian 4.19.28-2kali1 (2019-03-18) i686 GNU / Linux).
Я мог бы скомпилировать примеры, найденные в source/tools/ManualExamples, используя make TARGET=ia32, но как только я запускаю пример с помощью команды ../../../pin -t obj-ia32/isampling.so — /bin/ls из ManualExamples, как предложено в документации. Тем не менее, я сталкиваюсь со следующей проблемой:
A: Source/pin/elfio/img_elf.cpp: ProcessSectionHeaders: 560: assertion failed: SEC_vaddr_i(sec) >= IMG_seg_text_vaddr_i(img) amp;amp; SEC_vaddr_i(sec) < IMG_seg_data_vaddr_i(img)
################################################################################
## STACK TRACE
################################################################################
??? at isampling.so 0x24472
??? at isampling.so 0x90946
??? at isampling.so 0x98671
??? at isampling.so 0x14654d
??? at isampling.so 0x148b9d
??? at isampling.so 0x148c50
??? at isampling.so 0x6f243
??? at isampling.so 0x4bfab
_ZN14LEVEL_INJECTOR13UNIX_INJECTEE12StartProgramEb 0x10f at /root/pin/ia32/bin/pinbin 0x3354af
??? at isampling.so 0x48889
main 0x97 at isampling.so 0x90d7
_ZN14LEVEL_INJECTOR13UNIX_INJECTEE9StartToolEv 0x1d2 at /root/pin/ia32/bin/pinbin 0x333f12
_ZN14LEVEL_INJECTOR13UNIX_INJECTEE29RunMainThreadOnPinStackAttachEPS0_ 0x3de at /root/pin/ia32/bin/pinbin 0x3374ee
Pin: pin-3.7-97619-0d0c92f4f
Copyright (c) 2003-2018, Intel Corporation. All rights reserved.
Aborted
Итак, я решил запустить pin без какого-либо инструмента, используя командный pin-код — /bin/ ls, и он работает. Есть идеи, почему я получаю это сообщение об ошибке?
Большое спасибо
Комментарии:
1. «pin-код — / bin / ls и это работает» => откуда вы знаете, что это работает? Чего вы ожидаете, так это выборки. что делать? Отсутствие указания какого-либо инструмента для закрепления приводит к тому, что вывод не инструментален для целевого приложения (ls). Ошибки нет, но и результата нет.
2. Привет, @Heyji, прошу прощения за поздний ответ. Под моим предложением «pin-код — / bin / ls и он работает» я имел в виду, что процесс pin-кода выполнялся и завершался без каких-либо ошибок (т.Е. Сообщение об ошибке с отслеживанием стека), отображая обычный вывод
ls
. Я ожидалisampling.so
бы отобразить значение регистра EIP для некоторых инструкций (на самом деле это один из примеров инструмента Pin).
Ответ №1:
После нескольких часов, потерянных на расследование этой проблемы с коллегой, мы не смогли выяснить причину этой ошибки. Мы попробовали на Kali и Debian, которые были обновлены.
Позже я решил попробовать старую виртуальную машину Ubuntu с ядром 4.15.0-47-generic, и это сработало! Точнее:
➜ ~ uname -a
Linux gpu 4.15.0-47-generic #50-Ubuntu SMP Wed Mar 13 10:44:52 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
➜ ~ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
Я не пробовал использовать более новую версию Ubuntu, поэтому я не могу утверждать, что это связано с новым программным компонентом, таким как более новая версия ядра. Поэтому мой обходной путь заключается в использовании более старой версии ядра, не имея уверенности в том, что именно это вызвало проблему.
Любой ответ на дальнейшее расследование в этой теме, который лучше определит проблему, будет отмечен как ответ.