Наверное, каждый человек хочет, чтобы все нужное всегда было с ним и лежало в одном месте. BumpTop придерживается именно такого принципа — это своего рода «коробка», в которой можно все разложить по полочкам или парой кликов мышью обратить в хаос. Ты, наверное, уже догадался, что речь идет о рабочем столе 3D.

 

Приглашаемся на тестирование

Год назад я впервые увидел видео-демонстрацию трехмерного десктопа BumpTop(), тогда же я подал заявку на бетатестирование. Время шло, а инвайт на почту все не приходил, я уже и забыл про него. И вот, на днях в одном из блогов я наткнулся на заметку о BumpTop и вспомнил, что когда-то отправлял заявку на инвайт, и что мне так ничего и не дали.

 

Шаг первый

Для начала я решил поискать, что доступно в Сети. C этой целью я зашел на любимый thepiratebay.org, вбил в строке поиска «BumpTop» и получил всего 1 результат — бета-версию 2008 года. Скачав торрент, я установил и запустил BumpTop. Как и ожидалось, я получил окно с просьбой предъявить инвайт. Инвайта у меня, конечно, не было, так что я сразу открыл bumptop.exe в интерактивном дизассемблере IDA pro. После недолгого анализа IDA замерла, передавая управление мне. И тут понеслось.

Для начала нужно было найти код, который определяет, зарегистрирована ли программа. Для этого я открыл окно со Strings (Shift+F12) и нашел там строку «Please enter your invite code:», написанную в окне для ввода инвайта. Кликнул по ней два раза и оказался на адресе .rdata:00647D1C, где эта строка хранится. Затем я вызвал окно jump to xref operand(x), чтобы посмотреть, где наша строка используется. Получил всего один адрес и перешел по нему. Далее, чтобы удостовериться, что это тот код, который мы ищем, я поставил точку останова (F2) и запустил программу (F9). Достигнув бряка, пробежался немного вниз (F8) до адреса 0041B7A7. И... вот оно! Открылось наше окно с запросом инвайта. Теперь следует найти код, который определяет, нужно ли нам показывать это окно. Остановив программу и поднявшись по коду выше, до объявления функции по адресу .text:0041B350, я посмотрел, откуда она вызывается (jump to xref operand). Затем, перейдя по полученному адресу, сразу перед вызовом нашей функции я увидел условный переход:

.text:004862B4 cmp byte ptr [eax+8Bh], 0
; сравнение переменной с 0
.text:004862BB jnz short loc_4862C2
; условный переход
.text:004862BD call sub_41B350 ;вызов функции

Я поставил на него точку останова, запустил программу, и она встала на свежеустановленном бряке. Так как здесь условный переход осуществляется с помощью инструкции JNZ (прыгнуть, если не ноль), то, чтобы переход все-таки состоялся, нужно поменять флаг ZF (флаг нуля — единственный флаг, который влияет на инструкции JZ и JNZ) с 1 на 0. Поменяв флаг, в окне General Registers я вдавил Run(f9). Bumptop, радостно мигнув сплешскрином и вызвав несколько исключений, которые я успешно проигнорировал, стартанул!

Теперь мне оставалось только сделать битхак файла так, чтобы не выводилось окно с запросом инвайта. Открыв файл bumptop.exe в HIEW, я два раза пушнул <enter> для перехода в режим дизассемблирования. Затем нажал F5, ввел адрес условного перехода (.004862BB) и снова нажал <enter>.

После F3 и F2 для редактирования текущей инструкции я изменил текущую инструкцию JNE на противоположную ей JE (JNE/JE это синонимы инструкций JNZ/JZ). Все, дело сделано, и теперь мне оставалось только сохранить (F9) и запустить программу!

Но что это? Сразу после запуска BumpTop предложил обновить нашу старую бету на самую последнюю. Ну что ж, я думаю, не стоит отказываться от этого удовольствия. Нажимаем «Yes».

 

Ничего не предвещало беды или bumptop reload...

Сразу же после удачного запуска 3D Desktop'a я начал внимательно изучать все его вкусности, но, к моему удивлению, примерно через 5-10 минут работы появилось сообщение с предложением обновить мою beta 12 версию BumpTop'a. «Конечно», — подумал я, кликнув на появившемся сообщении кнопку «Yes».

Программа замерла и через несколько мгновений 3D-десктоп пропал с экрана моего монитора, и появилось очередное окно с запросом инвайта: «Authorization failed! Please enter your invite code». Открыв в IDA обновленный BumpTop.exe, я с ухмылкой злодея принялся за дело...

Аналогично предыдущей версии я нашел по адресу 0068A2CC объявление строки «Authorization failed!» и место, где она используется по адресу 0041FF23. После нескольких нажатий <PgUp> я увидел объявление функции, вызывающей форму для ввода инвайта. Нехитрым нажатием на клавиатуре <X> и <Enter> переместился к месту вызова функции; им оказался адрес 0042258C. Затем выделил адрес и поставил на него бряк. Запустил программу, она остановилась на бряке, поменял флаг ZF и запустил дальше, тут программа выдала ошибку. Что ж, буду искать дальше...

Я поднялся еще выше — снова до объявления текущей функции — и нашел, откуда она вызывается. Это был список из 10 разных адресов. Я прошелся по всем ним, расставляя бряки на каждый вызов нашей функции, дабы определить из какого места она действительно вызывается. В очередной раз запустил программу, и теперь она остановилась по адресу 0041EE54. Я увидел следующий код:

.text:0041EE2D test al, al
;условие
.text:0041EE2F jnz loc_41EED2 ;условный переход
.text:0041EE35 push ecx
.text:0041EE36 mov ecx, esp
.text:0041EE38 mov [esp+0ECh+var_C0], esp
.text:0041EE3C push offset aAuthorizationf
; «AuthorizationFailed»
.text:0041EE41 call ds:??0QString@@QAE@PBD@Z
.text:0041EE47 lea eax, [esp+0E8h+var_B0]
.text:0041EE4B push eax
.text:0041EE4C mov [esp+0ECh+var_4], 2Fh
.text:0041EE54 call sub_422550
;вызов нашей функции

Действуя по старой схеме, я поставил точку останова на инструкцию JNZ по адресу 0041EE2F, перезапустил программу и, после успешной остановки, поменял флаг ZF. Все, заработало! Возвратившись в HIEW, я, как и раньше, поменял инструкцию JNZ на JZ, только теперь по адресу 0041EE2F. BumpTop запустился без проблем, и это была уже не 12 версия, а новая BumpTop Beta 19!

В итоге я получил последнюю версию программы и удовольствие от процесса добычи инвайта. Можно праздновать победу и любоваться новым 3D Desktop'ом на мониторе железного друга.

 

Послесловие или сделай сам

В целом продукт функционален и привлекателен, хотя и обладает пока различными мелкими глюками, не зря ведь разработчики сохраняют за проектом статус закрытой beta. В последний день сдачи статьи разработчики BumpTop преподнесли сюрприз — вышла новая версия. Хорошо это или плохо — решать тебе.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии