Расшифровка базы теста

Тема в разделе "WASM.BEGINNERS", создана пользователем buhanoid, 24 апр 2020.

  1. buhanoid

    buhanoid New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2017
    Сообщения:
    2
    Здравствуйте, есть программа тестирования с базой вопросов.
    Хочу расшифровать эту базу.
    Загрузил программу в Die-он показывает это
    [​IMG]
    Потом запустил ProcMon,Увидел что читает нужный файл порциями по 128 бит
    [​IMG]
    Загрузил фаил в OllyDbg - поставил брекпоинт на функцию ReadFile - нашел ее по адресу 402C0E
    Дальше не понятно как быть- на F8 долго ждать пока программа прочитает весь файл такими порциями-как быть дальше?
    Спасибо.
    Сама программа с базой https://dropmefiles.com/WFtSl
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Мозги вообще есть, не можешь понять логически что нужно выделить цикл ?

    40328С. Дальше спрашивай.
     
  3. Al Shark

    Al Shark New Member

    Публикаций:
    0
    Регистрация:
    16 май 2006
    Сообщения:
    13
    Адрес:
    Moscow
    Данные в блоках выравненных по 5002 байта(5000 + перенос [0dh 0ah]) сами данные распределены от 0e0h до 0ffh, при этом 0efh — в данных не встречается т. е. ваши данные распределены по 31 значению. Делайте выводы.
     
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    Предварительно на 0x10 ксорится, [e0..ff] получаются 32 символа и несколько управляющих кодов. Есть соблазн назвать это кодом цезаря, но по-моему это какая-то поносная феерия из нагромождения всего, что автору программы в голову пришло. Я бы посоветовал взять функцию .004AB734 (edx:указатель на шифрованные данные, ecx:размер, eax:указатель на переменную, куда будет вывален результат), найти там где-нибудь как уцепиться за буфер после расшифровки (оно похоже стрипает до длины строки), сделать скриптик, который накормит эту функцию всем файлом базы (по 0x1388 байт) и заберет результаты. По-хорошему реверсить эту туфту имхо так себе занятие.
     
  5. Indy_

    Indy_ Well-Known Member

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

    Для начала нужно узнать происходит ли декрипт бд в полную её сборку. Если база собирается в памяти, то её можно дампить, тогда незачем копаться в крипто функциях. Аналогично как с протекторами - зачем нужен анпак, если слой крипта снимается после инит.
     
  6. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    Расшифровка происходит прозрачно при ее интепретировании. Создается гориллиард связанных объектов, парсить это еще хуже, чем на коленке расшифровать и разобрать формат файла.
     
  7. Indy_

    Indy_ Well-Known Member

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

    Не рациональный путь решения. Нужно найти при выборке ссылку в бд. Далее понять, статична ли она. Либо декрипт на лету. А какие то действия апп не относящиеся к целевой выборке совершенно прозрачны и не важны.
     
  8. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    Ну возьми и сделай, мне-то че объясняешь чего лучше?
     
  9. Indy_

    Indy_ Well-Known Member

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

    Запросто, у меня есть инструмент для этого. Только вот это не задача, а вопрос тс для обучения.
     
  10. Al Shark

    Al Shark New Member

    Публикаций:
    0
    Регистрация:
    16 май 2006
    Сообщения:
    13
    Адрес:
    Moscow
    Пре-xor не изменит числа символов — в потоке их будет 31.
     
  11. Indy_

    Indy_ Well-Known Member

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

    > Инди придумал анклавовы-XSR и анклавы-АБВГД

    Сарказм что ле, софт анклавы это следствие устройства ав виртуалок. Они используют шлюз для эмуляции, я лишь развил эту тему. Оказалось что можно создать не читаемый блок(скан памяти) и общим способом обнаружить/обойти симуляцию.
     
  12. Indy_

    Indy_ Well-Known Member

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

    buhanoid New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2017
    Сообщения:
    2
    Спасибо.
    f13nd, попробую этот вариант- написать скрипт.
    Indy_, смотрел с адреса 4AB734, непонятный алгорит:
    Код (Text):
    1. mov dl,byte ptr ds:[edx+esi-1]
    значение dl не используется потом, как понять куда расшифровывает чтобы забрать?
     
  14. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    684
    не смотрел, но есть догадка что edx используется =)
     
  15. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    push edx там используется в вызванной процедуре.