CrackMe! by Reject.

Discussion in 'Реверсинг' started by Reject, 11 Nov 2006.

  1. Reject

    Reject Member

    Joined:
    19 Oct 2006
    Messages:
    35
    Likes Received:
    8
    Reputations:
    17
    Ок, буду ждать результатов)
     
  2. taha

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

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    Лан хрен с ними - типовиками, надо отдыхать!! =)
    Если кто-нибудь знает какой-нибудь тутор по распаковке этого протектора, киньте ссылочку.
    Извини что выкладываю ответ, но чёт никто ничего не пишет.

    Запускаем программу и мы тут:
    Code:
    004050D4 > EB 01            JMP SHORT CrackMe_.004050D7
    трассируем по f9.

    программа запускается после вот этого:
    Code:
    004001C1   FFFF             ???                                      ; Unknown command
    004001C3   FFFF             ???                                      ; Unknown command
    004001C5   FFFF             ???                                      ; Unknown command
    004001C7   FFFF             ???                                      ; Unknown command
    Как всегда, ставим бряк на esp-4, доходим до этого места, Shift-F9, и мы тут:
    Code:
    00406ADA   F7D2             NOT EDX                                  ; ntdll.KiFastSystemCallRet
    00406ADC   39C2             CMP EDX,EAX
    00406ADE   F7C0 74E7F921    TEST EAX,21F9E774
    00406AE4   0FACC2 48        SHRD EDX,EAX,48                          ; Shift constant out of range 1..31
    Т.к. я знаю на чем ты кодишь(это тоже важная инфа), мне показался подозрительным следующий код:
    Code:
    00406B14   31C2             XOR EDX,EAX
    00406B16   68 6A1E3E44      PUSH 443E1E6A
    00406B1B   812C24 4E05FE43  SUB DWORD PTR SS:[ESP],43FE054E
    00406B22   68 2C6B4000      PUSH CrackMe_.00406B2C
    00406B27  -E9 A6A6FFFF      JMP CrackMe_.004011D2                    ; JMP to MSVBVM60.ThunRTMain
    Чтобы убедится, что я прав распаковываем твой старый крякмис. И смотрим начало.
    Code:
    004011A4   68 78224000      PUSH CrackMe!.00402278
    004011A9   E8 F0FFFFFF      CALL CrackMe!.0040119E                   ; JMP to MSVBVM60.ThunRTMain
    004011AE   0000             ADD BYTE PTR DS:[EAX],AL
    004011B0   0000             ADD BYTE PTR DS:[EAX],AL
    004011B2   0000             ADD BYTE PTR DS:[EAX],AL
    Чтож так оно и есть. MSVBVM60.ThunRTMain должен находится в начале программы.
    Я не сталкивался с этим потектором и подумал, что это спёртые байты(возможно так оно и есть).
    Дошёл до JMP CrackMe_.004011D2 и зашёл в него.
    Я оказался тут:
    Code:
    004011C0   .-FF25 58104000  JMP DWORD PTR DS:[401058]                ;  MSVBVM60.EVENT_SINK_QueryInterface
    004011C6   .-FF25 40104000  JMP DWORD PTR DS:[401040]                ;  MSVBVM60.EVENT_SINK_AddRef
    004011CC   .-FF25 50104000  JMP DWORD PTR DS:[401050]                ;  MSVBVM60.EVENT_SINK_Release
    004011D2   .-FF25 88104000  JMP DWORD PTR DS:[401088]                ;  MSVBVM60.ThunRTMain
    004011D8     00             DB 00
    004011D9     00             DB 00
    004011DA     00             DB 00
    004011DB     00             DB 00
    004011DC     00             DB 00
    004011DD     00             DB 00
    004011DE     00             DB 00
    004011DF     00             DB 00
    Таблица импорта сразу понял я.

    Поднявшись выше, я увидел:
    Code:
    00401166   $-FF25 44104000  JMP DWORD PTR DS:[401044]                ;  MSVBVM60.__vbaStrCmp
    Хм, гдет я это видел =)

    Ставим бряк на доступ.

    снимаем бряк с esp-4, и по f9.
    Прога запустилась.

    Вводим в эдитконтрол "Я крут" =). И на кнопку.
    Code:
    00401166   $-FF25 44104000  JMP DWORD PTR DS:[401044]                ;  MSVBVM60.__vbaStrCmp
    Смотрим в окошко пониже:
    Code:
    DS:[00401044]=660E8A03 (MSVBVM60.__vbaStrCmp)
    Local call from 004026CA
    Идём на 004026CA

    Видим следующие строки:
    Code:
    004026BC   . 50             PUSH EAX
    004026BD   . E8 B6EAFFFF    CALL CrackMe_.00401178                   ;  JMP to MSVBVM60.__vbaHresultCheckObj
    004026C2   > FF75 E8        PUSH DWORD PTR SS:[EBP-18]
    004026C5   . 68 0C234000    PUSH CrackMe_.0040230C                   ;  UNICODE "Unicode"
    004026CA   . E8 97EAFFFF    CALL CrackMe_.00401166                   ;  JMP to MSVBVM60.__vbaStrCmp
    004026CF   . 8BF8           MOV EDI,EAX
    004026D1   . 8D4D E8        LEA ECX,DWORD PTR SS:[EBP-18]
    004026D4   . F7DF           NEG EDI
    004026D6   . 1BFF           SBB EDI,EDI
    004026D8   . 47             INC EDI
    
    Чтож должен признаться UNICODE "Unicode" усыпило моё внимание, но не надолго.

    1. vbaStrCmp - это единственный вызов.
    2. гдет читал про троян, который шифрует файлы по их адресам(адрес в смысле путь).

    Короче Unicode - это и есть пасс.

    Registred!
     
    2 people like this.
  3. Reject

    Reject Member

    Joined:
    19 Oct 2006
    Messages:
    35
    Likes Received:
    8
    Reputations:
    17
    Не плохо так все расписал... спасибо. Работал под Softice'ом ?
    дальше прошу продолжить разговор здесь .