KeygenMe 9411

Тема в разделе "WASM.RESEARCH", создана пользователем Ustin_LVO, 13 июн 2020.

Метки:
  1. Ustin_LVO

    Ustin_LVO New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2019
    Сообщения:
    1
    Здравствуйте, хотел поделиться своим KeygenMe (9411 - это размер исходника в байтах).
    Написано под линукс, x86 32bit, консольное приложение, не использует никаких библиотек помимо стандартной. Уровень сложности, надеюсь, высокий. RSA и прочие алгоритмы с открытым ключом не использую.
     

    Вложения:

    • keygenme.7z
      Размер файла:
      314 КБ
      Просмотров:
      281
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Ustin_LVO,

    Увы но дружок пойми что линукс семплы никто даже открывать не будет, не говоря про попытку решения даже вручную. Тебе тоже самое подробно обьяснил на кл. Там нет общей архитектуры, мобилы крутятся на виртах и что там внутри всем пх. Для системщика это дичайшая дикость, полнейший изврат(те ревирсить это дерьмо если не понятно, оно в принципе не реверсится).
     
    M0rg0t нравится это.
  3. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Посмотрел бы, но линукс. Надо было изначально догадаться, что большинство не возьмутся, ибо нафиг надо.
     
    Indy_ нравится это.
  4. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Похоже на результат работы movfuscator-а. Там процесс запутывания прямолинейный, так что и деобфускатор можно реализовать простым сопоставлением с образцом. Скукотища, в общем.
    --- Сообщение объединено, 19 авг 2020 ---
    А, не, просто декомпилировать не получится, т. к. там же есть перемешивание инструкций, переименование регистров. Но в любом случае можно восстановить исходный CFG.
     
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
  6. RETN

    RETN Member

    Публикаций:
    4
    Регистрация:
    4 апр 2020
    Сообщения:
    74
    Ustin_LVO,
    :blum2:
    Здрастье,
    тоже линь и тоже ktm (keygen - try - mi) aka (кейгень- попробуй - меня) :sarcastic:(с)
    https://wasm.in/attachments/b19-zip.6325/?temp_hash=894b4aff7b954a1077fc80ec76bfbe87


    Тож линь, под асик...
    - кто угадает - тому торт, ну только если Бабушка Ванга есть.
    Как прошива дешифруется/шифруется, как же менять там долбаную частоту и вольтаж? :boast:
    P.S: Ни в жизни не получится алго разреверсить, хотя оно и надо было бы кому то. Но увы :preved:
     

    Вложения:

    • b19.zip
      Размер файла:
      166,6 КБ
      Просмотров:
      481
  7. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    RETN, а где сам asic в комплекте с семплом?
    --- Сообщение объединено, 21 авг 2020 ---
    Тут есть доклад, как эта штука работает: https://github.com/xoreaxeaxeax/movfuscator/tree/master/slides.

    Насколько я понял из кода самого обфускатора, он переводит исходник (точнее, промежуточное представление от компилятора) в один большой конечный автомат. Примитивы, полученные от компилятора, заменяются на наборы mov-ов. Таким образом каждый набор реализует какой-то примитив. Интересно, что можно перемежать наборы, перетасовывать как угодно, - автомату на эту будет пофиг. А вот менять порядок отдельных инструкций в наборе нельзя, в этом смысле наборы атомарны. Так что попоставление с образцом актуально. Ну и дальше восстанавливаем автомат, выполняем оптимизации. Тут на ум приходит llvm, можно прогнать через него. На выходе будет уже что-то более внятное.

    Можно было бы заняться этим, но что-то неохота. Писать эти ваши дизассемблеры для x86 (пусть даже для одной инструкции mov) - занятие неблагодарное :lol:
    --- Сообщение объединено, 21 авг 2020 ---
    Чет забыл упомянуть Indy_ в сообщении, дополнил.
     
    RETN нравится это.
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Ну так и есть. Проблема в том, что никто так и не сподобился нормальную деобфускацию для него написать, хотя попытки вроде были: https://github.com/kirschju/demovfuscator - посмотри, мало ли. Проблема в том, что мувфускатор это скорее забавный пруф оф консепт, в здравом уме для проприетарного софта его вряд ли кто-то станет применять. Хотя да, его можно рассматривать, как своего рода виртуализацию нативного кода.
     
  9. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Конкретно на этом keygenme деобфускатор валится, пока непонятно, в чем там дело.

    Покопаю немного, идея-то хорошая. Правда, он на C++ написан. Глобальные переменные, шаблоны... Такие вещи должны на человеческих языках писаться, типа ML, а не на этом.
     
    Последнее редактирование: 22 авг 2020
  10. Rel

    Rel Well-Known Member

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

    Да, он под копотом capstone и keystone использует, так что можно на почти любом языке написать аналог))
     
  11. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Вот, кстати, интересное чтиво от создателя того деобфускатора. Там есть ссылки на работы, посвященные девиртуализации. Конкуренты indy.

    https://kirschju.re/static/ba_jonischkeit_2016.pdf
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Если вдруг тебе будет интересно. Есть такой интересный проект Tigress - обфускатор на уровне сорсов на сишечке, умеет в том числе и виртуализировать код. И само собой есть попытки его снимать в автоматике типа https://github.com/JonathanSalwan/Tigress_protection - как бы к конкретной теме это не относится, но может тебе будет интересно посмотреть, как там что делается. Но тоже это ни в коем случае не стоит расценивать, как полноценный и готовый к продакшену деобфускатор.
     
  13. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Да в общем-то идея (почти) та же, как она описана в том тезисе, принципиально ничего нового.

    --
    Правда, та работа (тезис) меня не полностью, так сказать, удовлетворила. Да, автор приводит некоторую теорию, но все как-то поверхностно. Пока поймёшь, как работает алгоритм деобфускации в его изложении, умом поедешь. Надо искать более фундаментальные труды.
     
  14. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Принес вам графы вызовов:

    [​IMG]

    И переходов вообще:

    [​IMG]

    Значение 00000000 - это на самом деле точка входа, а 080c34b8 - функция main.
    --- Сообщение объединено, 25 авг 2020 ---
    Ну и все сразу. для наглядности:

    [​IMG]
    --- Сообщение объединено, 25 авг 2020 ---
    Переходы не все, только безусловные.
     
  15. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Ну а если кому-то вдруг интересно, вот более полный граф:

    [​IMG]

    Обычные дуги - вызовы функций, пунктирные - переходы по меткам. А число на дуге - адрес, откуда переход, символы типа nei, lti - это код операции сравнения, приводящей к переходу. Если нет, то это безусловный переход.

    Сразу видно, весь треш в происходит в функции sub_0804be47. Ну а там либо быдлокод, либо макроговно.
     
  16. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Написал эмулятор, чтобы можно было запустить этот keygenme под виндой. Вдруг кому-то захочется.

    Ну и хелло-ворлд заодно добавил, проверить.

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

    Вложения:

    • linemu.zip
      Размер файла:
      1,9 МБ
      Просмотров:
      225
    Последнее редактирование: 28 авг 2020
    RETN нравится это.
  17. RETN

    RETN Member

    Публикаций:
    4
    Регистрация:
    4 апр 2020
    Сообщения:
    74
    Круто. На x64 Win 10 2004 19041 (последняя) норм эмуль отрабатывает.
    Но не все файлы пашут: "ERROR: elf_parse() failed"
     
  18. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    RETN, ну там там только 32-х разрядные поддерживаются, i386 которые. И я не все системые вызовы реализовал, только те, что в keygenme.

    Перешёл, кстати, на другой дизассемблер (nmd_assembly), с ним раза в три быстрее работает. Правда, в нем есть некоторые косяки, что печалит слегка. Сырой ещё.
     
  19. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Хорошо, что Инде этого не видел, он бы тебя основательно облил гуаном за использование capstone. Если уж его использовал, то могу бы сразу и unicorn заюзать, они от одного автора, хорошо интегрируются друг с другом. Во всяком случае так говорят, я же не авер, чтобы крекми решать и тысячи семплов гонять.
     
  20. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Rel, проверил unicorn, чет c ним медленнее, чем мой вариант. Вроде как там есть jit, но что-то он никакой. А я уж было обрадовался, что все теперь летать будет.