tiho.blog
uk141 | Мой путь
общая лента | регистрация | войти

uk141 25 октября 2026 23:07

Какой-то лютейший треш.

Вчера сидел себе спокойно, делал вещи. А потом думаю, ба! Я же делаю штуку, которая позволяет запланировать вышивки, посмотреть какие цвета, где и сколько есть и если не есть - дозаказать удобно, сразу на несколько вышивок, без выписывания всего на свете на бумажку цвета, семь раз перепроверять и ставить крестики и потом заказывать, но в итоге каждый раз не то.

А вот было бы классно кидать туда тупо схему и чтобы скрипт:

Нужно как-то разобраться, как оно там хранится. Но это нам не впервой. Создаем вышивку 1*1 пиксель, полностью заливаем черным DMC-310, сохраняем. Меняем цвет на красный DMC-666 и еще раз сохраняем.

Открываем в hex редакторе и смотрим что там вышло. Где одинаково - это нам не интересно. Где отличается - это вот то, что нужно.

Я: Смотри, нейронные мозги. Вот такая задача, вот такая мысль, вот они - данные

ИИ: Так это zip архив внутри файла. Он просто не с самого начала начинается.

Я: Как волнительно, давай мы это распакуем.

Внутри оказалось:

CrossStitch3.ttf - файл со шрифтом... Чтобы все спрашивали, наверное

hoops.xpub

hoop_0.xpub

info.xpub

Не знаю, кто такой xpub, но файл открывается текстовым редактором и там что? A-Z,a-z,0-9 чуток символов и два == в конце? Да это же base64!

Ну вот тут халява и кончилась.

Оказалось, что этот base64 не расшифровывается примерно никак.

Но есть ведь apk файл приложения, который его и зашифровал. Разве там не должно быть описано, как именно приложение этот код открывает и читает и преобразовывает? Тем более, что apk это... Да, это тупо zip.

Установив себе JADX и открыв файл, оказалось, что внутри почти ничего нет. Совсем чуток кода, картинки и два файла libmain.so по 60 мегабайт. На самом деле - приложение это вот этот libmain.so, а всё остальное - это приблуда, чтобы отрисовывать всякое на экране. И в этом есть смысл. Приложение же выходит под андроид и IOS и разработчики, наверняка делают одно приложение и потом имеют 2 "нашлепки", чтобы оно запускалось под две ОСи.

Спускаемся глубже. Приложение Ghidra, которое открыло скомпилированный файл и показало мне - древо с функциями, код на ассемблере и для некоторых функций - псевдокод на си.

Довольно быстро нашлись:

Функция base64Encode и base64Decode, которые действительно просто кодируют как обычно.

Функция DecryptSecretHeader, которая... Ну, я не уверен, потому что там кода на си на МЕГАБАЙТ и что интересно - она ниоткуда не вызывается, как я понял.

Как я понял - приложение собирает информацию в xml, потом есть слой кодирования, который делает со строкой какие-то непотребства (чтобы меня пораздражать, видимо) и потом уже результатирующая строка кодируется в base64. Причем, второй шаг имеет какой-то каскадный эффект. Один символ изменяется и это влияет на всю последующую строку. Потому что строка у вышивки с черным пикселем, с красным и Маяк от Окнеас имеют одинаковое начало, но как только доходит до указания цвета и всё дальше - всё отличается.

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

И вот на это я вчерашний вечер потратил и весь сегодняшний день.

Как бы, результат есть и вижу я варианты.

А, ну еще один:

url дневник профиль


нужно войти, чтобы комментировать