OEP(протекторы).

Тема в разделе "WASM.RESEARCH", создана пользователем Indy_, 3 апр 2019.

  1. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    То есть это код, который на некотором этапе интерпретируется как данные. Является ли он кодом - вопрос скорее для размышления долгими вечерами у камина.
     
  2. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Да. Эти данные используются для динамического построения кода, там 0x11111111 заменяется на нужный адрес. По логике rmn - это код, т.к. содержит корректный cfg; по сути это и есть код, но его нельзя представлять как код (для дальнейшего криптования к примеру), т.к. он используется в качестве данных (к примеру там по определенным смещениям будут записаны актуальные адреса и т.п.).
     
  3. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Почему нельзя? В каком контексте нельзя? То, что эти данные являются кодом - самая точная их характеристика. Если не заниматься теоретическими размышлениями о том, как найти ОЕР накрытой протектором программы статическим анализом, а действовать в контексте любой практической задачи, то можно смело определиться с тем, считать это кодом или нет.
     
    UbIvItS и q2e74 нравится это.
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Критерий первый отличия кода от данных - валид инструкции и их не наложение, тоесть не может быть ветвления не на начало инструкции, уже описанной в cf.

    Чем меньше размер данных, тем больше вероятность ошибки при статик анализе. IDA довольно кривой анализер куда глючней той же олли, тупит на любом бинаре даже при наличии дебаг символов.

    Но смысл то не в этом, а в покрытии - если собрать все указатели и ошибки анализа по ним, то пересобрать образ рабочим не получится со 100% вероятностью. Помимо проблемы отличия кода есть вторая по размеру данных. Так что увы критерий распаковки по AI сработает на всём.

    Где слон кстати, в депресняк впал ?
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Нет. По моей логике, если указатель на эту кашу получен из rtti, то ты точно знаешь, что это. А анализировать cfg надо в тех случаях, когда в коде есть что-то типа mov eax, offset dword_12345678, и нет никакой дополнительной инфы, как интерпретировать этот указатель.
     
  6. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Нельзя потому что программа использует эти данные и считает их данными, а не кодом.

    Этот указатель получен не из rtti, а как раз из случая который ты описал:

    upload_2021-2-28_19-36-39.png

    LEA ESI, [ECX + 0FA9B470] - как интерпретировать этот указатель? Анализируя cfg приходим к выводу что это код, но это данные.
     
  7. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Без контекста все это философские размышления над дилеммой Папы Карло: был он музыкантом или мускульным приводом для шарманки? С одной стороны он только ручку крутил, с другой - ритм, гармония и мелодия - все формальные признаки на месте.
     
  8. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Ну если ты собрался к примеру морфить код, то ты не можешь морфить этот код не отличив данные от кода. Ну и по факту это данные, а не код. Как минимум на эти данные никогда не будет передано управление.
     
    q2e74 и Indy_ нравится это.
  9. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Вот в этом контексте нежелательно считать это кодом. А если твоя задача реверсить саму прогу, в которой такое творится, лучше это понимать как код.
     
  10. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Ну про реверс вручную я не спорю тут все понятно интуитивно. Вопрос стоит как раз в автоматике.
     
  11. RETN

    RETN Member

    Публикаций:
    4
    Регистрация:
    4 апр 2020
    Сообщения:
    74
    Не совсем согласен, есть декомпиляторы вполне приличные для VB6, если P - код то и вообще отлаживать обычными средствами нет смысла, увязните, но декомпили норм справляются, причем тут Ида и Оля, если для этого есть вполне конкретные инструменты, например тот же VB Decompiler? Да и вообще рантайм msvbvm6 давно расковыряли - ему 23 года уже, хоть и не документирован ;)
     
  12. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Нет, это ты получил его не из ртти, а тыкая в рандомные инструкции в оллидебагере. Продолжайте заниматься статик анализом в том же духе, лол :)
    Еще раз: в вб и дельфи прогах столько метаинфы, что исходник восстановить можно, не то, что назначение какого-то адреса установить.
     
  13. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Не знаю, я не использовал VB Decompiler, какой у него выхлоп - понятия не имею. Видел пару раз люди пробовали, но там мрак был. Нативный код отлично отлаживается под Олькой.

    Где расковыряли? МБ какие-то приватные тулзы, я не в курсе. Но то что в паблике полно неточных/частичных описаний структур, почти нет инфы о недокументированных функциях - вот с этим я знаком.

    Ты читал что я тебе писал? Прочитай еще раз. При чем тут вб/дельфи проги?
    --- Сообщение объединено, 28 фев 2021 ---
    Да нормально отлаживается, даже есть таблица опкодов в паблике (правда кривая и неполная).
     
  14. RETN

    RETN Member

    Публикаций:
    4
    Регистрация:
    4 апр 2020
    Сообщения:
    74
    Ну как бы не приватные совсем, но там и ковырять по идее нечего. За 23 года по любому всё есть, сам когда то углублялся в вирт машинку VB6, но наработок не сохранилось, думаю найти за 23 года существования можно где нить. Я сам в 98г начинал на нем высокоуровневые софты писать с гуями, имхо там нет проблем с зависимостями, если ocх сторонние не юзать и можно просто на коленке гуй набросать. Но предпочитал делать exe на нём, а функционал на сях в виде длл. К сожалению VB6 не держит многопоточность совсем, не считая сабклассинга, который тоже не то. Но я умудрялся линкер к нему приворачивать от сишки и даже длл на нем писал, но это изврат.
     
  15. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Ну это только догадки. По факту толком ничего нет. А по какому-нибудь VBA6.dll вообще инфы нет. Я недавно делал патч для парсера кода, инфы - 0, все реверсил с нуля сам.

    А в чем проблема с зависимостями? Любой нормальный софт юзает зависимости, в этом нет ничего плохого. DLL для этого и создавали, для многократно используемого кода.

    Держит.

    Если ты про GWL_WNDPROC то при чем тут многопоточность?

    Линкер там и так от студии стоит по дефолту. DLL пишутся также по дефолту.
     
  16. RETN

    RETN Member

    Публикаций:
    4
    Регистрация:
    4 апр 2020
    Сообщения:
    74
    - докажите, что VB6 держит многопоточность
    дайте семпл с CreateThread ))))))
    - там линкер можно ставить любой, который поддерживает соответствующие объектники
    угу, ну - ну, потом рантаймы с собой возить? если виртушка VB6 между прочим во всех виндах в комплекте идёт, и кстати причем тут вот это? ->>
    Вы видимо попутали с msvbvm60.dll
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Не переживай, просто добавь его в игнор, с ним бесполезно спорить, он как Инде, только унылый: не шарить и спорить - его основная задача на форуме.

    Хз, я видел какой-то платный декомпиль, но он не справлялся нормально ни с одной малварью на вб6, семплы которой у меня были. Кстати аверы тоже не очень умеют с вб6 п-кодом работать, судя по всему.
     
  18. RETN

    RETN Member

    Публикаций:
    4
    Регистрация:
    4 апр 2020
    Сообщения:
    74
    Rel, я ему в лику не собирался писать.
    1. Аверы раскручивают пи -код
    2. декомпили которые Вы Rel видели небось паблик, а не платные версии отнюдь
    P.S: да длоя школоло VB6 - самое то, и всякие .NET поделки тем более, кудаж Вам до асма и действительно низкоуровневого кодинга (тем более системного, со знанием именно того к чему так все стремяться, но мозгов не хватает).
    P.P.S: С Инде сравнение - спасибо, польщён. Но мы с разных позиций с ним работаем. У меня опыта больше в реальных релизах, у него теорий, идей и знаний.
     
  19. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    ActiveX EXE - это стандартный путь, без всяких заморочек. Создал объект - он живет в своем потоке. Можно сделать и с CreateThread, но тут будут ограничения, т.к. необходимо инициализировать правильно все. Также есть специальные модули которые позволяют создавать потоки произвольно, которые сами инициализируют все что нужно. Более того я писал такой код который копируется в память другого процесса и там работает. В общем на нем можно делать довольно низкоуровневые вещи и многопоточность уже давно не проблема.

    Ну да, т.к. родной линкер (от 6 студии) неправильно работает в некоторых нестандартных сценариях.

    Да не, я не про рантаймы которые по дефолту, а про OCX. OCX/DLL - одно и тоже по сути. Я писал о зависимостях на пост >>имхо там нет проблем с зависимостями, если ocх сторонние не юзать и можно просто на коленке гуй набросать

    Не. vba6/msvbvm60 скомпилированы из одних и тех же исходников, только VBA6 используется при написании кода под IDE (там есть к примеру парсер кода). По сути там много кода дублировано. Я писал проект который патчит VBA6 рантайм и позволяет юзать CDECL функции из VB. В общем если интересно.
    --- Сообщение объединено, 28 фев 2021 ---
    Я сужу вот по этому выхлопу. Я из exe в ольке код сделал почти один в один.

    Да ладно, есть пара инлайн асмов для VB6.
     
    Последнее редактирование: 28 фев 2021
  20. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Я не о тебе говорил, а об rmn вообще-то.

    Всю жизнь стремился розетки ставить, да-да.

    Хз, я не могу посмотреть тамошние скриншоты без регистрации.