![]() |
eXeL@B —› Вопросы новичков —› Помощь с pin tools |
Посл.ответ | Сообщение |
|
Создано: 17 сентября 2015 23:59 · Поправил: rev4you · Личное сообщение · #1 Написал минимальный трейсер с pin tools. Логика такова: ожидает загрузки нужной длл, после того как начнет исполняется нужная мне функций - проверяю имя файла которое она получила, если подошло - начинаю записывать все исполненые инструкции в этом модуле.. Все вроде как просто, но лог какой то странный.. Вот пример выдачи Code:
В дизасме код после вызова такой Code:
Трейсер Code:
Вопрос - Как собственно pin tools планирует свои call back ? на каждую инструкцию ? Возникает ощущение что он как то пропускает их.. Еще пример, а также приложил весь лог. При этом программа не генерирует в этих местах exceptions, и исполняется "линейно" . Code:
![]() ![]() |
|
Создано: 18 сентября 2015 09:58 · Личное сообщение · #2 |
|
Создано: 18 сентября 2015 13:44 · Поправил: rev4you · Личное сообщение · #3 hash87szf пишет: мож INS_InsertPredicatedCall замениь на InsertCall ? В данном случае она используется только один раз, для определения имени файла. Так что это не влияет на результат, трассы.. П.С также сменил ее ради интереса на InsertCall ничего не изменилось, если бы изменилось это было бы странно. ![]() |
|
Создано: 18 сентября 2015 14:04 · Поправил: ClockMan · Личное сообщение · #4 rev4you может почитать мануалы на сайте ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 18 сентября 2015 14:08 · Личное сообщение · #5 |
|
Создано: 18 сентября 2015 14:43 · Поправил: hash87szf · Личное сообщение · #6 INS_AddInstrumentFunction(Trace, 0); --> Трэйс() на каждой инстракшн вызывается, a ImgLoadNotifyier на каждой дллки. Я в код не вникал... Как вариан мож с адресами/чеками что-то не в ряд? Попробуйте не фильтровать а сделать тупой трэйс. Это канешн будет длиться... и весить... А не проше ли руками под антивирь подпиливать?? Или какая другая цель приследуется? >> 0x70667e5b call 0x7057ce00 - опять хрень... 0x706686cb cmp dword ptr [esi+0x740], ebp Почему хрень? Может Колл не возвращяется через Рет. Попробуйте ловить все Брэнч после Коллов. ![]() |
|
Создано: 18 сентября 2015 15:05 · Поправил: rev4you · Личное сообщение · #7 |
|
Создано: 20 сентября 2015 02:51 · Поправил: rev4you · Личное сообщение · #8 Странное поведение InsertCall Code:
Вывод: Code:
Это конечно не то что ожидалось, оказывается все добавленные обработчики срабатывают после jmp\call\ret .. ![]() |
|
Создано: 20 сентября 2015 16:53 · Личное сообщение · #9 AFUNPTR(TEST)? В примерах (AFUNPTR)docount. (AFUNPTR)TEST? >> оказывается все добавленные обработчики срабатывают после jmp\call\ret .. Я думаю это из за Basic Block "формата". Если вставить TraceFile<< INS_Disassemble(tail).c_str() << endl; в TEST() то он будет правильно делать. Пин инлайнит ТЕСТ() перед каждой инстракшн, а шо он делает с Trace(), хз. Also, В манах есть Order of Instrumentation. ![]() |
|
Создано: 21 сентября 2015 01:43 · Поправил: rev4you · Личное сообщение · #10 |
|
Создано: 21 сентября 2015 12:27 · Личное сообщение · #11 |
|
Создано: 13 октября 2015 21:39 · Личное сообщение · #12 |
![]() |
eXeL@B —› Вопросы новичков —› Помощь с pin tools |