Files
SergObsidian/PERSONAL PROJECTS/Persona 1/Script Format.md
2025-01-13 19:57:36 +05:00

20 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Итак, товарищи, по скриптам п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 - то, что нам нужно и сразу за ней