C-Dilla

Тема в разделе "WASM.RESEARCH", создана пользователем Kedzu, 23 ноя 2005.

  1. Kedzu

    Kedzu New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2005
    Сообщения:
    2
    Здравствуйте.



    Возникла проблема... столкнулся на днях с C-Dilla.



    Обползал вудмана ничего примечательного не нашёл.



    Подскажие, пожалуйста, может туторы какие есть?



    цель: NFS: Most Wanted



    С уважением...
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    А это случаем не старое название SafeDisc? По крайней мере, я вроде видел тутор для NFS3...
     
  3. Kedzu

    Kedzu New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2005
    Сообщения:
    2
    возможно и так... в кишках запротекченного exe явно обозначалось C-Dilla
     
  4. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    да, c-dilla == safedisc



    где там тутор про nfs3 ? :)
     
  5. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
  6. Dimosz

    Dimosz New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2005
    Сообщения:
    4
    Адрес:
    Moldova
    Здраствуйте ребята!

    Я тоже занимаюсь распаковкой NFS Most Wanted.

    А она, оказывается, защищена протектором SafeDisc 4.60.000 от Macrovision. Должен сказать что они молодцы!



    Технология защиты такая: к хвосту главного EXE закреплены три "PE" файлика: две DLL (SecServ.dll и AuthServ.dll) плюс ещё один EXE ("cleanup.exe"). На самом деле они копируются во временном каталоге винды. Оттуда они инициализируются и загружаются в память.

    Если вам интересно, могу рассказать больше. :)
     
  7. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    рассказывай, один знакомый как раз застрял с этим NFSMW
     
  8. Dimosz

    Dimosz New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2005
    Сообщения:
    4
    Адрес:
    Moldova
    Ну, самая прикольная это DLL-ка "SecServ.dll" (кстати во временном каталоге винды у нее другое имя: если я не ошибаюсь "~df394.tmp"). Так вот, SFX-код из нашего главного EXE (speed.exe) передает управление ей в точку входа функции "Ox12121212". Тут начинается самое интересное. Во первых, большинство функций из этой DLL-ки зашифрованы, так что при выполнение каких либо операщий идет 1) декодирование нужной функции

    2) её выполнение и конечно же

    3) обратное кодирование :)

    (этот приемчик используется для любителей дампить процесс из памяти) так что будьте внимательны...

    Из функции "Ox12121212" загружается и "AuthServ.dll" (он также распаковывается под другим именем). В AuthServ.dll много кода который проверяет если установлены программы которые эмулируют CD/DVD-ROM, TEA-decrypt, ASCIIZ-decrypt.
     
  9. Dimosz

    Dimosz New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2005
    Сообщения:
    4
    Адрес:
    Moldova
    Я еще не полностью разшифровал эти две DLL-ки, так что хвалиться не буду. В "SecServ.dll" (ImageBase=0x66700000) раскопал несколько интересных функций. Приведу ниже перечень их имена и смещения:



    0x667309E7: int decrypt_asciiz_simple@8(LPCSTR lpszDecryptedAsciiz; LPCSTR lpszCryptedAsciiz)

    0x667309B8: LPCSTR decrypt_asciiz_simple@4(LPCSTR lpszCryptedAsciiz)

    0x6672FF53: DWORD get_asciiz_decrypt_key@0

    0x6672FF71: decrypt_asciiz_with_first_key@8(LPCSTR lpszDecryptedAsciiz; LPCSTR lpszCryptedAsciiz)

    0x66702FC5: check_for_debugger

    0x66701402: miscellaneous_debugger_checks

    0x66705740: multiple_debugger_checks <- здесь серцевина всех проверок на присудствие дебаггера

    0x6670B110: _is_debugger_present_

    0x6670B020: _check_if_softice_for_win9x_is_running_

    0x6670AF60: _check_if_softice_for_winnt_is_running_

    0x6672F98C: get_kernel32_handle

    0x6672FBB1: get_proc_address_by_crypted_name

    0x6672FB25: LPVOID *emulate__get_proc_address@8(HMODULE hModule; LPCSTR lpszCryptedProcName)



    В "SecServ.dll" эмулируются и такие API-функции как CreateFileA, DeviceIoControl etc.



    Но на счет NFSMW, остановился я на восстановлении таблицы импортов, так как SafeDisc смешал их полностью.

    Но это не все. SafeDisc портит и секцию кода (в случае с NFSMW это ".text"). Он использует перехват некоторых API-функций (вместо CALL ставит JMP куда-то в секцию "stxt774"), но это не самое сложное. Помимо этого SafeDisc 4.60 использует принцип краденного кода, то есть вместо некоторых машинных кодов ставит опкод CCh (int 3). Я предполагаю что он использует SEH для определения смещения где возникла нарошная ошибка и какую именно инструкцию следует выполнить дальше.
     
  10. s0cpy

    s0cpy New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2004
    Сообщения:
    7
    Адрес:
    Russia
    1. импорт восстанавливается прекрасно по статье про распаковку NFSU2...

    2. перенаправленные джампы и коллы восстанавливаюся по той же статье (хотя у меня почему-то не восстановилось штуки 4 колла)...

    3. c int3 тоже вроде проблем не замечено...

    4. AuthServ.dll на самом деле AuthServ.exe...

    5. самое хреновое из всего - API SafeDisc`а...:

    SUB ESP,20

    PUSH ESI

    MOV ESI,DWORD PTR DS:[8FAD10] ------- В ESI заносится адрес SecServ.DLL

    TEST ESI,ESI

    JNZ SHORT call_ref.00666D27

    MOV EAX,DWORD PTR DS:[8FAD14]

    TEST EAX,EAX

    JE SHORT call_ref.00666D5D

    PUSH EBX

    MOV EBX,DWORD PTR DS:[8FAD9C]

    PUSH EDI

    MOV EDI,DWORD PTR DS:[8FAD98]

    LEA EAX,DWORD PTR SS:[ESP+34]

    PUSH EAX

    LEA ECX,DWORD PTR SS:[ESP+34]

    PUSH ECX

    LEA ECX,DWORD PTR SS:[ESP+14]

    CALL call_ref.0065FA90

    LEA EAX,DWORD PTR SS:[ESP+C]

    CDQ

    PUSH EDX

    PUSH EAX

    PUSH EBX

    PUSH EDI

    CALL ESI ------- здесь и вызывается

    ADD ESP,10

    POP EDI

    POP EBX

    POP ESI

    ADD ESP,20

    RETN

    MOV EDX,DWORD PTR SS:[ESP+2C]

    MOV EAX,DWORD PTR SS:[ESP+28]

    PUSH EDX

    PUSH EAX

    CALL call_ref.00666380

    ADD ESP,8

    POP ESI

    ADD ESP,20

    RETN

    и такой код встречается оч много раз... :dntknw:

    в аттаче полная IAT....

    все выше сказанное относится к NFSMW v. 1.2



    [​IMG] _1509667898__iat_full!!!.txt
     
  11. Dimosz

    Dimosz New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2005
    Сообщения:
    4
    Адрес:
    Moldova
    Здравствуйте. Поздравляю вас с Новым Годом! :)



    На счет NFSMW v1.2:

    Хочу сказать s0cpy огромное спасибо за полную таблицу импортов, она мне очень пригодилась. С джампами и коллами я разобрался (эти структуры находятся на "REDIRECTION BRIDGE" :-D).



    На счет "INT 3" должен сказать что они все-таки существуют! Посмотрите функцию кде вызывается "SetErrorMode". Чуть выше на пару инструкций будут два опкода 0CCh. На их месте должна быть инструкция XOR EBX, EBX. Также посмотрите функции где вызываются InterlockedIncrement и InterlockedDecrement. Так вот у меня будет к вам такой вопрос: где находятся эти STOLEN BYTES?

    И в подарок, наткнулся на фунцию про которую говорил s0cpy. Так что, если мы хотим создать "антивирус" надо изучить "вирус". Я вот сижу и парюсь с этими двумя DLL-ками (пака еще не расшифровал их полностью).



    Похоже этот SafeDisc немножко круче чем ASProtect нашего многоуважаемого Алексея Солодовникова.