Сейчас на форуме: localhost1, vsv1, asfa, tyns777 (+5 невидимых) |
eXeL@B —› Вопросы новичков —› Расшифровка базы теста |
Посл.ответ | Сообщение |
|
Создано: 23 апреля 2020 12:42 · Личное сообщение · #1 Здравствуйте, есть программа на Borland Dephi 7 https://dropmefiles.com/yLcqn Тест, отдельно лежит база вопросов, пытаюсь ее расшифровать. Пробовал загрузить в DeDe, поискать ссылки на функции вроде TMemo,когда отмечаешь вопрос должно сравниваться с верным, ставлю bp-все проходит мимо. В самой OllyDbg ставлю брекопоинты на чтение строк, трассировкой регистры смотрел-нигде вопрос-ответ не высвечиваются. Направьте новичка. Спасибо. |
|
Создано: 23 апреля 2020 13:24 · Поправил: _MBK_ · Личное сообщение · #2 TMemo это какбэ не функция а класс. Вы уверены что поля ввода именно этого класса? Каков результат декомпиляции через DeDe (хотя предполагаю ответ) и на основании чего и где вы ставите бряки в олли? А вообще говоря, вы как то не с той стороны реверсировать базу начали - обычно смотрят на чтение из файла а не из формочки ввода. |
|
Создано: 23 апреля 2020 13:35 · Личное сообщение · #3 |
|
Создано: 23 апреля 2020 13:41 · Поправил: _MBK_ · Личное сообщение · #4 |
|
Создано: 23 апреля 2020 14:39 · Личное сообщение · #5 |
|
Создано: 23 апреля 2020 16:39 · Личное сообщение · #6 Я с утюга, поэтому ваш файл посмотреть не могу, но какая антиотладка из под дельфи? Die что говорит - на программу точно ничего сверху не навешено? Вы уверены, что 128 бит, даже 128 байт и то как то странно, прямо с нулевого смещения так таки весь файл до конца одинаковыми порциями по 128 бит читает??? Попробуйте запустить программу и в процессе выполнения прицепиться а потом бряк на API поставить - тоже крэшится? |
|
Создано: 23 апреля 2020 18:31 · Личное сообщение · #7 |
|
Создано: 23 апреля 2020 19:18 · Личное сообщение · #8 |
|
Создано: 23 апреля 2020 20:11 · Личное сообщение · #9 ОМГ, чего только не насоветуют Бряк на CreateFileW, выйдешь на Code:
Трейсь и смотри что происходит с твоим файлом. ----- ds | Сообщение посчитали полезным: Veliant |
|
Создано: 23 апреля 2020 20:12 · Поправил: _MBK_ · Личное сообщение · #10 Первый взгляд на базу - от каждого байта в блоке используются только младшие 5 бит, остальные установлены в 1 На ум приходит модификация base64 То есть вся база - текстовый файл, каждая строка которого состоит из элементов пятибитной длины, дополненных до байта единицами, в конце каждой строки некие служебные маркеры В общем, как правильно сказал DimitarSerg, внимательно курите алгоритм расшифровки считанного буфера в процедуре начиная с адреса 4AB734: Code:
|
|
Создано: 27 апреля 2020 08:10 · Личное сообщение · #11 Login_ вместе с недостающими файлами https://dropmefiles.com/sYlTq difexacaw подробнее, не понял DimitarSerg спасибо _MBK_ спасибо, начал трассировку отсюда, потом попадаю в два цикла на 4AB778 и 4AB7AC, похоже он посимвольно их расшифровывает-появляются числа 0074, 0033- коды символов? Может после запуска программы как то из памяти забрать уже расшифрованную базу? |
|
Создано: 27 апреля 2020 08:19 · Личное сообщение · #12 buhanoid пишет: Может после запуска программы как то из памяти забрать уже расшифрованную базу? Ну так для этого надо сперва понять куда программа ее расшифровывает Там все не так просто, алгоритм на первый взгляд весьма странный или они специально запутали дабы затруднить реверс К примеру, указанное в моем листинге значение dl судя по всему, сразу теряется, не используясь потом |
|
Создано: 27 апреля 2020 08:52 · Личное сообщение · #13 buhanoid > подробнее, не понял Найти выборку в базу данных автоматикой. Выборка(data fetch) это железячное событие, вначале происходит адресная трансляция, вычисляется линейный адрес, затем происходит обращение к памяти. Так вот для начала нужно это событие обнаружить, это покажет во первых формат бд и станет ясно возможен ли дамп(собирается ли бд в памяти). Иначе это всё танцы с бубном, не технический подход к задаче. ----- vx |
|
Создано: 27 апреля 2020 08:56 · Личное сообщение · #14 |
|
Создано: 27 апреля 2020 09:00 · Личное сообщение · #15 |
|
Создано: 27 апреля 2020 09:11 · Личное сообщение · #16 |
|
Создано: 27 апреля 2020 09:21 · Личное сообщение · #17 |
|
Создано: 27 апреля 2020 09:28 · Поправил: _MBK_ · Личное сообщение · #18 Смотря что вы хотите найти. Если реверсировать алгоритм - ставьте аппаратный бряк на любой байт из считанного буфера и следите за его перемещением. Правда, будьте готовы к тому, что в процессе алгоритм его зачем то туда-сюда много раз перетасовывает через movsb. На каждое новое местонахождение старательно бряк переставлять надо, лично я, сказать по правде, замаялся и бросил. А если хотите просто расшифрованные данные получить - в каждой вызываемой процедуре внимательно следите за передаваемыми параметрами - в одной из них, скорее всего, параметром будет адрес буфера, заполняемого после вызова расшифрованными данными. |
|
Создано: 27 апреля 2020 09:35 · Личное сообщение · #19 |
|
Создано: 27 апреля 2020 11:15 · Поправил: Veliant · Личное сообщение · #20 Нет там никакого особого шифрования. Читает до \x0d\x0a, ксорит с 0x10, разворачивает по два байта (Как пример .-АокитПр "ПИ0С => 0СПИ Приток-А). В начале строки всегда идет число указывающее длину строки. Все остальное - мусор. Вкуривайте функцию, указанную DimitarSerg, в ней все происходит. | Сообщение посчитали полезным: _MBK_, CyberGod |
eXeL@B —› Вопросы новичков —› Расшифровка базы теста |