Ultra Core Protector 6.x

Discussion in 'Реверсинг' started by _ruzmaz_, 13 Feb 2011.

  1. _ruzmaz_

    _ruzmaz_ New Member

    Joined:
    4 Jan 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Кто-нибудь имел дело с сабжем? Интересует отладка или хотя бы запуск под вм.
     
  2. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    Сабж в студию. экстрасенсы в отпуске.

    з.ы.: а то я щас опять подумаю, что это клон sXe с перебитыми копирайтами
     
    #2 s0l_ir0n, 13 Feb 2011
    Last edited: 13 Feb 2011
  3. _ruzmaz_

    _ruzmaz_ New Member

    Joined:
    4 Jan 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    #3 _ruzmaz_, 13 Feb 2011
    Last edited: 13 Feb 2011
  4. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    ucp.exe
    Code:
    046F13C1 IN EAX,DX ; eax=0x564D5868 ; VMXh
    
    стандартный способ узреть работу под vmware
     
  5. UnameR

    UnameR New Member

    Joined:
    23 Jun 2010
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Против аттача на DbgUiRemoteBreakin стоит jmp ведущий в секцию античита(программа завершается). Убрав jmp программа опять таки заверашется. Но обойти можно.

    Античит в отличии от sXe упомянутого выше не использует драйверов. А сам накрыт VMprotect.
    В коде есть очень интересная функция против разных утилит(сделайте поиск по секциям на строчку h00k). Она без ВМ так как выполняется довольно часто. Можно убрать все эти проверки поставив jmp от начала проверок на конец(проверок валидности этой функции нет). Но пока лазил в ней открыл много нового в области определения разных тузл(детект по стилю окна ваще класс придумано).

    Меня мало интересует сам античит. А вот то как VMProtect определяет VirtualBox очень даже. Реестр отпадает. Процессы сервисов тоже. 80ee:cafe аналогично. Идентификаторы жестких дисков и прочего подобного тоже. Больше ничего не придумал. Вопрос затронутый ТС частично пересекается с моим, поэтому надеюсь кто-то подкинет идей и мне.

    В ВМбокс, вроде как, нет же бекдоров по типу VMXh? Через что может быть детект?

    А ну ещё ucp ставит защиту на память некоторых секций. Тож интересный для меня вопрос(хотя уже и не актуальный, так для общего развития :) ).
     
    #5 UnameR, 15 Feb 2011
    Last edited: 15 Feb 2011
  6. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    UnameR
    Почему же без названий модулей, например sandboxie определяет с помощью GetModuleHandle('sbie.dll')
     
  7. UnameR

    UnameR New Member

    Joined:
    23 Jun 2010
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Ну я не спорю, что при некоторых обстоятельствах можно обнаружить VBOX по модулю в процессе,
    Но я проверял при отсутствии дополнений гостевой системы(этим модулям было просто неоткуда взяться). Поэтому и сделал такой вывод.

    PS: За инфу о sandboxie спасибо, если что буду иметь в виду.
     
  8. UnameR

    UnameR New Member

    Joined:
    23 Jun 2010
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Все, разобрался как VMProtect находит VirtualBox

    Вообщем все завязано на неправильном исполнении команды rdtsc
    При выполнении она сразу захватывает и следующую за ней команду.

    Регистрируем обработчик исключений и смотрим на какую инструкцию указывает EIP. Если через одну -> работаем под VBOX

    А, ну и для эксепшена ставим single-step флаг 1.

    Я не знаю как сделан обработчик исключений в VMProtect, но я думаю он не сильно отличается от моего. По крайней мере смысл один.
    Для себя сделал реализацию:
    Code:
    #include "windows.h"
    
    void VirtualBox()
    {
    	MessageBox(0,"VirtualBox detected!",0,0);
    	ExitProcess(0);
    }
    
    void NativePC()
    {
    	MessageBox(0,"Hello world!",0,0);
    }
    
    __declspec(naked) void CheckVM()
    {
    	__asm {
    		// возводим флаг T
    		pushfd
    		pop eax
    		or ah, 1
    		push eax
    		popfd
    
    		rdtsc // если мы под VirtualBox, то вместе с rdtsc сразу выполнится и nop
    		nop
    		call NativePC
    		ret
    	}
    }
    
    LONG WINAPI Exception(struct _EXCEPTION_POINTERS *pExceptionInfo)
    {
    	if ( pExceptionInfo->ContextRecord->Eip == (DWORD)CheckVM+10/*call NativePC*/ ) pExceptionInfo->ContextRecord->Eip = (DWORD)VirtualBox;
        return EXCEPTION_CONTINUE_EXECUTION;
    }
    
    int __stdcall WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)	 
    {
    	SetUnhandledExceptionFilter(Exception);
    	CheckVM();
    }
    Осталось придумать как обойти это не парясь каждый раз в отладчике... Буду рад идеям)
     
    #8 UnameR, 17 Feb 2011
    Last edited: 17 Feb 2011
    1 person likes this.
  9. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,284
    Reputations:
    327
    имел имел. я единственный, изза кого автор защитил его вмпротектом))
    это после поломки 6.0 версии произошло. долго думать Энди не захотелось.

    кстати товарищи не забудьте - он много использует вместо экспортных апи прямые системные вызовы. в основном int 21 (какой 21 нахрен, этож дос) 2Е конечно. sysenter я у него не встречал.
     
    #9 sn0w, 19 Feb 2011
    Last edited: 6 Mar 2011
    2 people like this.
  10. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    Отключение vmware VMX backdoor

    Неожиданно для себя узнал что отключить простейший детект vmware можно установив значение в конф. файле
    monitor_control.restrict_backdoor = "TRUE"
     
  11. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,284
    Reputations:
    327
    да. еще бывает что вмвар тулз мешают - но в основном - это отключение бакдура. оригиналли постед бай креш