Девятый бит: Архив блога кафедры АСОИУ ОмГТУ

Process Monitor спешит на помощь NetBeans'у

Сегодня ставил NetBeans 7.1, установка как всегда прошла нормально, а вот с первым запуском - проблемы:

platform\lib\nbexec.dll

nbexec.dll

Под катом описание уязвимости в NetBeans и Happy End.


Первым делом находим, где же лежит "nbexec.dll". Смотрим на свойства ярлыка, которым запускаем NetBeans: Так-с, рабочая директория отличается от места положения "netbeans.exe", поэтому "nbexec.dll" надо искать в "C:\Program Files\NetBeans 7.1\platform\lib\nbexec.dll", и он там есть.

Так где же  'netbeans.exe' ищет 'nbexec.dll'?

Сейчас нам как раз и поможет Process Monitor.
Запускаем его, останавливаем трассировку (Ctrl+E), и создаем фильтр (Ctrl+L) для "netbeans.exe" : 

Нам нужны только события файловой системы, запись остальных - отключаем:Теперь включаем трассировку (Ctrl+E), и запускаем NetBeans. В момент появления ошибки - останавливаем трассировку, и ищем "nbexec.dll":Вот и ответ: "C:\Program Files\NetBeans 7.1\bin\platform\lib\nbexec.dll", "C:\Windows\SysWOW64\platform\lib\nbexec.dll", ...

Получается, что NetBeans уязвим (описание уязвимости в механизме динамической загрузки DLL - MSA2269637), а в используемой системе эксплуатация этой уязвимости закрыта. Вот по этому (из-за исключения поиска dll в текущей директории) "nbexec.dll" и не был найден.

Что же делать?

Можно для "netbeans.exe" в реестре "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\netbeans.exe" включить поиск dll в текущей директории. Однако, это откроет доступ к эксплуатации уязвимости в NetBeans.

Другой вариант - создать символьную ссылку "platform" на  "C:\Program Files\NetBeans 7.1\platform\" в "C:\Program Files\NetBeans 7.1\bin\" командой:

MKLINK /d "C:\Program Files\NetBeans 7.1\bin\platform" "C:\Program Files\NetBeans 7.1\platform"

После создания символьной ссылки, NetBeans наконец запустился :-)