среда, 8 июня 2011 г.

"Трассировка и как её избежать" -> особенности сборки приложений компилятором VC 10.

   Что такое трассировка и с чем её едят Вы можете узнать и из великого_и_ужасного. Основой для моих изысканий была статья Криса Касперского "Трассировка или игры в прятки" в журнале "Хакер". Все описываемые в статье техники отслеживания трассировки прекрасно работают на Windows 7. В ходе тестирования примеры для Win 7 пришлось пересобирать, т.к. собранные для Win XP, не запускались(( Опции сборки для всех примеров одинаковы.
   Первоначальные ключи компилятора: /c /Ox /Os /G6. Начнем с того что новый компилятор не поддерживает ключи /G{3|4|5|6|7|8}, поддерживаются только ключи /G{1|2} для платформы Itanium 1|2. Больше вопросов у компилятора не возникло. (Опции компиляции в итоге: /c /Ox /O.
   Перейдем к линкеру. Изначальные опции линкования: /ALIGN:16 /DRIVER /FIXED /SUBSYSTEM:CONSOLE KERNEL32.LIB USER32.lib. При попытке сборки линкер наконец начал собирать драйвер, а не обыкновенный PE (см. ключ /DRIVER). Убираем это ключ. Линкер выдает "Warning LNK4108 : параметр /ALIGN указан без параметра /DRIVER; образ нельзя запустить". При этом пример собирается и нормально запускается. Вот такие чудеса;)
   В ходе экспериментов замечено, что OllyDBG2.0 на PUSHFD  в любом виде не ведется, что конечно не может не радовать!

Комментариев нет:

Отправить комментарий