2.4 KiB
Итак, товарищи, по скриптам п1. ВНИМАТЕЛЬНО. Если что-то не можете понять -- Ghidra и дебаггер вам в помощь. Они дают ответы на все вопросы :) Просто вопросы надо задавать правильно :) Ранее мы выяснили, что текущий файл предварительно грузится в память целиком (вроде как), но затем, ВНИМАНИЕ, нужный скрипт из Пака (который вы научились экспортировать), копируется по адресу 80100000 БЕЗ ПЕРВЫХ 8 БАЙТ. В первых 8 байтах Пака указываются смещения на разные части Скрипта (как и в п2, кстати, а вы говорили, что непохоже)) То есть,
08 00 - 10 80 - 90 29 - 10 80
0800 - это смещение копирования (начинать с 8 байта) 1080 - это, скорее всего, окончательный адрес копирования скрипта, то есть - 80100000 9029 - 10640 - размер копируемых данных и повторяется адрес копирования 80100000 Скрипт начинается в памяти с 801010С0
Скорее всего, текст проходит какую-то доп. обработку, либо грузится какой-то другой скрипт, потому что данные в памяти не соответствуют данным в первом скрипте. Это ещё предстоит выяснить. + нужно будет разобрать до конца этот пак скрипта, почему-то кажется, что распаковался он неверно. Ну а теперь, к практике - Рекомендую запустить дебаггер и установить брейкпоинт на адрес 800ac264. Это как раз чтение команды скрипта. В регистре r2/v0 будет номер команды, а в r21/s5 - адрес чтрения текущей команды. Приложу ниже дизасм процедуы обработки. Идём по скрипту и смотрим, что команда FF 55 00 00 - то, что нам нужно и сразу за ней