[Uneex] vmware 3 hacking
Nikita V. Youshchenko
uneex@cs.msu.su
Sat, 8 Dec 2001 22:50:40 +0300
На этот раз пришлось повозиться.
Задача: заставить vmware 3 работать со временной лицензией неограниченно
долго.
Актуальность: теперь с vmware.com временную лицензию можно скачивать не
более одного раза. Можно, конечно, регистритровать там новые адреса, но
это муторно.
Отличия от взлома 2.x: теперь vmware содержит несколько программ. В
частности, лицензию проверяет bin/vmware, а диалог с пользователем по
части того, что лицензия неверна, ведет lib/vmware/bin/vmware-ui. Из-за
этого старая технология, основанная на поиске в исполняемом файле
обращений к строкам, выводимым при обнаружении просроченной лицензии,
оказалась неприменимой.
Использованная технология взлома:
при помощи gdb и простенькой программы, общающейся с gdb, была собрана
трасса из первых 100000 адресов команд, выполняемых vmware, в варианте с
откатанной системной датой (до времени, когда временная лицензия была еще
действительно), и в варианте с нормальной системной датой.
Тут неприятной проблемой оказалось то, что vmware посылает сам себе
SIGSEGV и продолжает работать из обработчика SIGSEGV - а как определить
адрес обработчика, неясно: gdb это не позволяет, поймать момент установки
обработчика также не удалось, а по команде stepi она просто запускалась и
не останавливалась. Помогла такая хитрость - watchpoint на $esp+4 - тогда
на ближайшей инструкции push произошел останов и адрес обработчика был
найден.
В резальтате сравнения двух трасс была найдена точка, где они начинают
различаться. Остается заменить условный переход на безусловный ...
Итак, в файле bin/vmware надо найти последовательность байт
8b 46 04 39 c2 77 0a 75 0d
и заменить 75 на eb
Вроде работает ...
:-)