Реверсинг. Задай вопрос - получи ответ

Discussion in 'Реверсинг' started by 0x0c0de, 2 Sep 2007.

  1. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Использовал PeTools, - все получилось. Всем спасибо!
     
  2. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Че то не могу понять чем упакованно (peid юзал, не выдал ничего)

    http://dump.ru/file/3358890

    Помогайте чтоли :)
     
  3. neprovad

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

    Joined:
    19 Oct 2007
    Messages:
    900
    Likes Received:
    275
    Reputations:
    59
    ничем не упаковано
     
  4. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    так подождите, почему я тогда не могу найти слова типа "Не верный серийный номер"

    Искал во всех файлах но никак не могу найти слова о неверном серийном номере (или же подобному слову) (точнее искала программа w32dasm (Search Text))

    Или я что-то не так делаю?
     
    #524 wolmer, 4 Sep 2009
    Last edited: 4 Sep 2009
  5. neprovad

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

    Joined:
    19 Oct 2007
    Messages:
    900
    Likes Received:
    275
    Reputations:
    59
    крутой термин - языковой барьер
    w32dasm - атавизм на мой взгляд, используй IDA и OllyDBG
     
  6. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    есть такие слова, как "ресурсы", "юникод"... а иногда ещё есть "защита", что ли. в смысле "шифрование"

    PS попробуй по слову "serial" поискать
     
  7. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    сорри за тупой вопрос, так просто на будущее спрашиваю, есть прога меняет мак адрес ))))) с помощью оллюдбг можно в поле вставить мак адрес, что бы при запуске проги поле было не пустое а с моим маком? и что подменить примерно? :rolleyes:
     
  8. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    если гуи программа - то можно впаять небольшой инлайн патчик, который будет задавать значение полю. нужно только надебажить нужный момент для вызова внедрения текста - когда окно создано.
     
    1 person likes this.
  9. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    кинь ссылку, посмотрим. При запуске GUI приложений обычно оно устанавливает значения текстовых полей функцией SetWindowText, ставь бряки на всех и ищи когда будет текст похожий на текст поля для MAC, то есть как я понимаю, скорее всего пустой "".

    BOOL SetWindowText
    (
    HWND hWnd, // дескриптор окна или элемента управления
    LPCTSTR lpString // адрес строчки
    );

    Меняем соответственно push "адрес первого аргумента для SetWindowText" на push твой mac, посмотри свободные байты, найдеш - запиши туда свой mac и push его адрес.
     
    #529 Dosia, 6 Sep 2009
    Last edited: 6 Sep 2009
    1 person likes this.
  10. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Че то не могу никак найти где вызывается MessageBox

    Сама программа (упакованная FSG 2.0):

    http://multi-up.com/137749

    Распакованная программа (она же токо распак. вроде как):

    http://dump.ru/file/3371134

    Подскажите что не так делаю?(и так искал поиском MessageBox, по титлу/тексту messagebox'а, ничего не помогает) Я чую что-то не так намудрил с распаковкой (распаковывал этим: http://www.opensc.ws/trojan-malware-releases/5386-fsg-unpacker-plugin-peid.html)

    (при нажатии на кнопку "Начать" вылезает окно о авторизации)(сейчас задача стоит найти откуда вызывается MessageBox!)
     
  11. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    потому что это и не MessageBox вовсе, а окно обыкновенное

    Code:
    Стек:
    0012F62C   001C086C  |hWnd = 001C086C ('Login',class='TForm2')
    0012F630   00000001  \ShowState = SW_SHOWNORMAL
    
    Код:
    0048A19D   . E8 EAEDF7FF    CALL <JMP.&user32.ShowWindow>            ; \ShowWindow
    
    Щас все будет ...
     
    #531 Dosia, 6 Sep 2009
    Last edited: 6 Sep 2009
    1 person likes this.
  12. zeppe1in

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

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    прога на дельфи и это дельфовский showmessage. И я хз как он работает).
    вызывается из процедуры по адресу
    0055684C
    а сам вызов вот тут
    00556977
    возьми например GODUP Plugin и примени дельфовские сигнатуры из иды. и тогда у тебя определится этот шоу меседж.
    пс: кстати программа походу сама себе кейген)

    ну вот не успел)
     
    1 person likes this.
  13. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Начало процедуры, как уже заметил zeppe1in, рекспект ему и уважуха по адресу: 0055684C. Брекйпоинт туда и трассируем по F8:

    Первый раз мы видим верный серийный номер:
    Code:
    005568D6  |. 8B55 F0        MOV EDX,DWORD PTR SS:[EBP-10]
    
    Процедура проверки:
    Code:
    00556908  |. E8 FFF6EAFF    CALL unpacked.0040600C
    Проверка условия:
    Code:
    0055690D  |. 75 63          JNZ SHORT unpacked.00556972
    А ниже если не было прыжка мы можем увидеть сохранение в файл верного серийного номера:

    Code:
    key.ini
    
    [key]
    k=*********
    
     
    #533 Dosia, 6 Sep 2009
    Last edited: 6 Sep 2009
  14. zeppe1in

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

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    Dosia, надо было хоть чегонить wolmer'у оставить)
     
  15. Alex87

    Alex87 New Member

    Joined:
    29 Oct 2008
    Messages:
    18
    Likes Received:
    1
    Reputations:
    0
    Нужны опкоды MSIL (.NET), нашел 1 сайт, но он китайский http://www.asukaze.net/etc/cil/opcode.html
    Есть что-нибудь полнее и хотя-бы на английском?
     
  16. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    И что с того что китайский, пояснения же на английском
     
    _________________________
  17. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Dosia, хм... спасибо! а как вы нашли это окно обыкновенное? (искал по слову "JMP.&user32.ShowWindow","ShowWindow" ничего вроде не находило (искал в w32dasm,IDA))
     
  18. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Хм, все очень просто, после распаковки файла я открыл его олей, после чего нажал "Ctrl-N", таким образом я выполним поиск всех функций импортируемых исполняемым файлом, после чего нашел в этом списке "ShowWindow", не "JMP.&user32.ShowWindow", а именно ShowWindow, адрес в IAT 570A74
     
    1 person likes this.
  19. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Это мне понятно вроде

    Но меня интересует сам момент как вы подцепили что именно от туда 0055690D проверка идет (т.е. как именно нашли эту проверку (я понимаю что по showwindow но подробней!))(ведь я же не могу всегда тыкать бряки на каждом углу)
     
  20. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Хороший вопрос, так как декомпилятор нам тут не поможет. Автор данной программы не шифрует строки и это его основная ошибка, именно при поиске строки: "79-81-80", я оказался тут:

    [​IMG]

    Как видиш название файла выдает его с головой =)

    Дальше я сходил по обоим адресам ( 556927, 556ACB )куда пушится строка "key.ini". Поставил бряки на начало данных процедур ( 55684C , 556A98 ). Перезапустил программу. Нажал "Старт", оказался по адресу 556A98, очевидно что там программа проверяла наличие файла или че то типо того, я не стал особо изучать процедуру, така как никаких переходов (вообще никаких ;D) я там не увидел, в общем, я протрассировал это процедуру по "F8". Потом - нажал "F9" (RUN). Всплывает форма (как мы уже выяснили в более ранних постах), текст в поле "ID" подозрительно похож на возвращаемое функцией GetVolumeInformation значение ;D, но это так, лирическое отступление, мы вводим что то типа "qwe123", чтобы потом если че посершить память (спорное конечно заявление ;D). Жмем , прерываемся по адресу 55684C. В процедуре всего 2 перехода:
    1)
    Code:
    0055690D     75 63          JNZ SHORT unpacked.00556972
    2)
    Code:
    0055687D  |. 0F84 F9000000  JE unpacked.0055697C
    Что мы делаем? мы трассируем процедуру по "F8", первый переход, какой то не понятный, ну и пофик на него, нас то интересует тот, после которого пушится в стек строка "key.ini". Заметьте, сразу после перехода, можно почти со 100% уверенностью сказать, что если перехода не будет - то будет что то интересное. По ходу трассировки этой процедуры до интересующего нас перехода ( 55690D ), как я уже писал можно увидеть настоящий пароль. Переход с адреса 55690D переносит нас по адресу 556972, выше видим безусловный переход ( JMP ), сомнений не остается, переход по адресу 55690D, именно то, что мы искали. Надеюсь теперь все понятно. =)