Process Monitor научился трассировать 32-х битный стек на x64.

March 23rd, 2008

Я как-то привык, что Process Monitor не умеет показывать 32-х битный стек события, которое произошло в 32-х разрядном процессе, выполняющемся под Wow64. Вместо этого он показывал только 64-х битный стек, что было абсолютно бесполезно, так как там по определению всегда светится wow64.dll сотоварищи. Однако после подсказки на Sysinternals Forums выяснилось, что начиная с Vista SP1 это уже работает.

Подтверждаю, действительно работает:

Process Monitor shows Wow64 symbols.

Конфигурация:

  • Vista SP1 (6001.18000.amd64fre.longhorn_rtm.080118-1840)
  • Process Monitor v1.26
  • Debugging Tools for x64 v6.8.4.0

Process Monitor использует dbghelp.dll из состава Debugging Tools. Используются символы с http://msdl.microsoft.com/download/symbols.

Кстати, показанный порядок вызовов не совсем верный. На самом деле весь 32-х битный код (строки 19-26) должен быть между 13-ой и 14-ой строками. Но тут порядок зависит от того, как его выдают Rtl функции из ntdll.dll, а они, насколько я понимаю, не затрудняются формированием правильного порядка вызовов. Просто сначала трассируется 64-х битный стек, а затем – 32-х битный.

, , ,

  1. Anthony
    July 2nd, 2008 at 05:01 | #1

    а как насчет XP/2003 x64 SP2? их-то “починят”?

    • July 2nd, 2008 at 09:08 | #2

      Сомневаюсь. Это довольно чуствительная к изменениям часть системы. Велик риск что-то поломать в процессе правки. Соответственно, нужна очень серьезная причина для выпуска исправления. Например, обнаружение уязвимости, позволяющей выполнить произвольный код, причем эта ошибка должна быть завязана именно на невозвожность трассировать 32-х битный стек.

  1. March 23rd, 2008 at 21:50 | #1
Comments are closed.