Как найти основную функцию

Discussion in 'Реверсинг' started by s0lar, 29 Jun 2008.

Thread Status:
Not open for further replies.
  1. s0lar

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

    Joined:
    16 Mar 2008
    Messages:
    63
    Likes Received:
    7
    Reputations:
    1
    Запускаем прогу(любую) например чистильщик реестра, у него есть к примеру 3 кнопки на морде
    1-запустить сканирование на ошибки в реестре
    2-исправить найденные
    3-выход из проги
    хотелось бы пореверсить функцию которая выполняет скан в реестре (1) и написать на основании ее чтото лучше
    вопрос - как попасть на эту функцию в оле(может какие плаги есть), получается бряку напрямую не поставишь(ибо не знаем на что ставить) а даже если и поставить на какуюто апи то это все равно ничего не даст так как апишка является винтиком в главной процедуре сканирования например под название Scan_reg ...жду коментов грамотных реверсеров :)
     
  2. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    >>как попасть на эту функцию в оле(может какие плаги есть), получается бряку напрямую не поставишь(ибо не знаем на что ставить) а даже если и поставить на какуюто апи то это все равно ничего не даст так как апишка является винтиком в главной процедуре сканирования например под название Scan_reg

    Ну вообще-то других способов и нет. Есть функции работы с реестром - на них ставь бряки или ищи обработчик нажатия кнопок сразу. В принципе на него ты итак выйдешь когда будешь трейсить по ret (Ctrl+F9) от функции на которой брякнулся. Определить его можно визуально: большое количество джампов (так как имеет место быть switch), функции работы с сообщениями вроде PostQuitMessage (так удобно делать и определять если у тебя с++).
    Если у тебя делфи-прога, то удобно юзать декомпилятор, который сразу выдаст что-то вроде

    Code:
    procedure TfrmAbout.b1Click(Sender: TObject);
    begin
    // Address $53165C
    end;
    
    и считай твоя функция найдена ;)

    Какие могу быть тут плаги.
    Реверсить только вручную. Смотреть откуда что вызывается и определять начало нужной функции. Только так.
     
    #2 0x0c0de, 29 Jun 2008
    Last edited: 29 Jun 2008
  3. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    >>хотелось бы пореверсить функцию которая выполняет скан в реестре (1) и написать >>на основании ее чтото лучше

    Не самый легкий путь, тогда уж легче посмотреть импорт на предмет API функций, которые использует программы и изучив их создать что то свое. Отследи обращение
    сканера к реестру (RegMon), но первое легче.
     
  4. s0lar

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

    Joined:
    16 Mar 2008
    Messages:
    63
    Likes Received:
    7
    Reputations:
    1
    В ипорте находятся все апи которые юзает прога если будет большой функционал например какой нибуть нортон антивирус замучаешься листать не то что бы изучать...

    Оксокод более приземленна, по брякнутой апи постепенно выходим на основную функцию я так и думал просто решил удостовериться...а на счет плага не права, гдето слышал для оли вроде трейсер есть типа составляет дерево колов(call) и видно сколько вообще есть основных функций а все остальные уже как вложенные в них идут ;) только вот непомню на каком ресурсе видел очень бы пригодилась такая штука не мне одному...брякаемся на апи смотрим адрес потом трейсим плагом, находим брякнутый адрес в дереве вызовов и смотрим наверх кто "основной" вуаля...может у кого есть чтото подобное :)
     
    #4 s0lar, 29 Jun 2008
    Last edited: 29 Jun 2008
  5. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    >>Оксокод более приземленна по брякнутой апи постепенно выходим на основную функцию я так и думал просто решил удостовериться...

    Вы бы лучше формулировали сразу нормально чего вы хотите. телепатов здесь нет и не было.

    Если вам нужно дерево вызовов, то вы можете посмотреть их или в Ida или в ImmutityDbg. Там такие опции есть. Плагин для оли, если два вышеперечисленных инструмента вас не устраивают

    http://tuts4you.com/download.php?view.90


    >> Не самый легкий путь, тогда уж легче посмотреть импорт на предмет API функций, которые использует программы и изучив их создать что то свое. Отследи обращение
    сканера к реестру (RegMon), но первое легче.

    Вообще-то некоторые библиотеки могут подгружаться динамически. И ваша идея отправится лесом. Это раз. А монитор реестра в данной ситуации вообще никаким боком не нужен. Конечно, прога для работы с реестром обращается к реестру. Лог, выданный RegMon ничего не даст. Способ который предложила я - нормальный, универсальный и быстрый.
     
    #5 0x0c0de, 29 Jun 2008
    Last edited: 29 Jun 2008
  6. s0lar

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

    Joined:
    16 Mar 2008
    Messages:
    63
    Likes Received:
    7
    Reputations:
    1
    да кстати, по поводу динамических длллей это точно, так можно и половину функционала подгрузить потом :)

    по поводу дерева вызовов, я не говорил что мне оно конкретно нужно как вариант предложил по поводу плага, а все стандартные фичи и ольги и иды по отображению дерева вызовов, так ильфака с его винграфом32 под причалом найдут когда то, так на людьми приколоться плаг тоже на винграфе построен, все не то...вот нашел неплохой плаг http://www.tuts4you.com/download.php?view.2006
    но что то не разобрался как им пользоваться ...подскажите...а метод ручного реверсинга согласен самый унифицированный ибо мозг все еще в моде :)
     
    #6 s0lar, 29 Jun 2008
    Last edited: 29 Jun 2008
  7. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    Readme.txt читаем =) Брякаешься на какой-нибудь функции и активируешь OllyCallTrace. Потом смотришь его лог. Вот и все
     
  8. s0lar

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

    Joined:
    16 Mar 2008
    Messages:
    63
    Likes Received:
    7
    Reputations:
    1
    http://www.harmonysecurity.com/OllyCallTrace.html уже почитал только не пойму зачем брякаться, чего не сделать проще загрузил в ольгу активировал плаг запустил трейсинг over по F8, протрейсил..показал результат...
     
  9. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    дока... а если ты запустишь сразу на EP проги - ты задолбаешься трейсить. Запустишь плаг, через пару дней продолжишь ломать %)
     
  10. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Я лишь предложил иной способ, а обратного я не утверждал!
     
  11. neprovad

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

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    s0lar, у тебя была поставлена цель - изучить алгоритм работы приложения. Конкретно что у тебя получилось или не получилось? Много воды льешь. Твоя ситуация в том что ты начинаешь искать ПО для работы, какие-то методы хитрые выискиваешь, причем совершенно ненужные. IDA все отлично покажет и расскажет. Не надо погружаться в глубокий анализ, тут он неуместен.
    Для Delphi используй DeDe и найдешь адреса обработчиков нужного элемента управления.
    Для C программ ищи TranslateMessage, PostMessage функции и где-то поблизости от них будет case отвечающий за обработку событий от элементов управления.
     
  12. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    TranslateMessage
    DispatchMessage
     
  13. s0lar

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

    Joined:
    16 Mar 2008
    Messages:
    63
    Likes Received:
    7
    Reputations:
    1
    по поводу получилось что а что нет, я хочу получить общую картину какие подходы есть и при каких ситуациях что именно будет оптимально, а вода это хорошо ибо с нее рождается истина, мы обговорили уже делфи и си++, трейсеры зацепили....как например быть с визуал бейсиковскими прогами какие есть к ним подходы..

    ЗЫ интересно чего паскаль(дельфи) код можно декомпильнуть а сишный(с++) нет и там м там двоичный файл и при компиляции создается тот же бинарь...хм
     
  14. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    Если у тебя VB -> VBDecompiler

    http://www.vb-decompiler.org/?gclid=COaLnpqTm5QCFROA1QodvVZ9tQ

    Если .Net -> DisSharp Decompiler / .NetReflector / MSIL Disassembler [в составе .Net Framework]

    http://netdecompiler.com/
    http://cracklab.ru/download.php?action=list&n=NjA=

    Ну и, просматривая то, что выдал декомпилятор, находишь нужную функцию. Здесь, думаю, все ясно...

    >> ЗЫ интересно чего паскаль(дельфи) код можно декомпильнуть а сишный(с++) нет и там м там двоичный файл и при компиляции создается тот же бинарь...хм

    ну вообще-то можно. HexRays в помощь
     
    1 person likes this.
  15. s0lar

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

    Joined:
    16 Mar 2008
    Messages:
    63
    Likes Received:
    7
    Reputations:
    1
    ага за такой рейс ильфака нужно бить очень долго :D ну думаю в дальнейшем мож и получится гуд декомпилер..посмотрим

    замечательно вобщем зацепили разные языки и декомпилеры..так

    что у нас с либами(dll) бывает нужно пореверсить и либы, на сколько понимаю все пользуются идой)) есть может тулзы такие...закидываем либу в прогу-анализатор длл показывает все внутри функции с их адресами..потом кидаем в иду и по адресам смотрим что и где...если есть расширенная инфа..вери гуд))
     
    #15 s0lar, 30 Jun 2008
    Last edited: 30 Jun 2008
  16. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    >> закидываем либу в прогу-анализатор длл показывает все внутри функции с их адресами..потом кидаем в иду и по адресам смотрим что и где...если есть расширенная инфа..вери гуд))

    ида и есть этот анализатор, просто видать вы не до конца разобрались с ее функционалом. зачем еще один анализатор тут не понимаю.
    тема себя исчерпала, на первоначальный ваш вопрос отвечено.
    вы хотите, чтобы вам объяснили в одной теме, как реверсить все, что только можно и все возможные случаи рассмотрели (и готовое решение к каждому дали)? это нереально.

    А вообще, для разноплановых вопросов

    https://forum.antichat.ru/threadedpost722626.html#post722626

    я специально тему создавала.
     
  17. s0lar

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

    Joined:
    16 Mar 2008
    Messages:
    63
    Likes Received:
    7
    Reputations:
    1
    интерисовали манипуляции с бинариками и длл вобщем да тему можно закрывать ответов было предостаточно...thx
     
  18. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    Closed

    Closed
     
Thread Status:
Not open for further replies.