1
Ромхакинг и программирование / [SMD] ROM glitcher - сделай себе хак не зная ромхакинг
« : 20 Февраль 2024, 03:08:38 »
Программа редактирует ром особым образом и пользователь проверяет, появилось ли нужное ему изменение. Если не появилось, то ром восстанавливается и изменяется в другом месте. Если нужное находится, то начинается удаление лишних багов/фич.
Сейчас программа ищет только логику типа "включилось/выключилось", "есть/нет", "случилось/не случилось", "равно/не равно" (инструкции BEQ и BNE) и переключает их в друг друга. Т.е. вряд ли найдёт скорость, цвет, параметры, координаты и т.д. Не ищет и логику "больше/меньше".
Примеры того, что удалось сделать таким способом (в скобках - проход/цикл/попытка):
Что не удалось:
Можете предложить мне свои идеи хаков для проверки.
Как видно, поиск требует не так много времени - не более 300 попыток, каждая занимает секунд 5 или меньше.
За всё время разработки я ни разу не заглянул в отладчик, т.к. мне было интересно попробовать добиться нужного принципиально только таким способом.
Как пользоваться
—сохраняетесь перед условием, которое хотите изменить. В моөм случае с секретными меню UMK3 и пунктами в опциях SoR я сохранился на предыдущем экране, чтобы код рисовал-обновлял нужный экран. Если сохраниться прямо на нужном экране, то каждый раз будет загружаться только этот сохранөнный экран, без нужных дополнительных пунктов.
Если же нужное вам может появляться на экране в любой момент при определөнном условии, тогда можно и сохраняться в любой момент - как только Глитчер переключит это условие, нужное появится сразу после загрузки сохранения.
—закидываете ром на иконку программы и открываете его в эмуляторе, загружаете сохранение, смотрите результат и выбираете подходящий пункт меню в Глитчере. Перезагружаете ром, перезагружаете сохранение, смотрите, выбираете пункт меню и так повторяете.
—при закрытии Глитчера ром восстанавливается до первоначального состояния, а поиск сохраняется, чтобы можно было продолжить потом. При этом отменяется последний выбранный пункт - это аналог Ctrl+Z для случая, если ошибочно нажали не ту клавишу. Т.е. достаточно перезапустить программу.
—если при поиске нашли что-то интересное, не связанное с основной целью, то есть два варианта:
1) сделать бэкап файла [поиск на паузе], чтобы искать потом;
2) выбрать пункт 3 и искать нужную инструкцию сейчас - этот пункт создаөт [поиск на паузе] сразу и даст вернуться к основному поиску, если в конце ничего не нажмөте и выйдете из программы.
Подробнее про пункты интэрфэйса
1 баги мешают увидеть есть ли нужное изменение
2 баги не мешают увидеть, что нужного изменения нет
3 баги не мешают увидеть, что нужное изменение есть. Далее начинается удаление багов
Как можно ускорить поиск
Програмка создана в Win11, VS2022 и запакована в zip без сторонних програм самой же ОС. Но, при попытке скачивания архива из интэрнэта, Винда ругается на вирусы и удаляет файл - приходится выключать антивириус
Как назвать такое позорище Мелкомягких приличными словами - у меня не хватает фантазии
Если кто-то боится, то исходный код могу дать в личку
Сейчас программа ищет только логику типа "включилось/выключилось", "есть/нет", "случилось/не случилось", "равно/не равно" (инструкции BEQ и BNE) и переключает их в друг друга. Т.е. вряд ли найдёт скорость, цвет, параметры, координаты и т.д. Не ищет и логику "больше/меньше".
Примеры того, что удалось сделать таким способом (в скобках - проход/цикл/попытка):
Что не удалось:
Можете предложить мне свои идеи хаков для проверки.
Как видно, поиск требует не так много времени - не более 300 попыток, каждая занимает секунд 5 или меньше.
За всё время разработки я ни разу не заглянул в отладчик, т.к. мне было интересно попробовать добиться нужного принципиально только таким способом.
Как пользоваться
—сохраняетесь перед условием, которое хотите изменить. В моөм случае с секретными меню UMK3 и пунктами в опциях SoR я сохранился на предыдущем экране, чтобы код рисовал-обновлял нужный экран. Если сохраниться прямо на нужном экране, то каждый раз будет загружаться только этот сохранөнный экран, без нужных дополнительных пунктов.
Если же нужное вам может появляться на экране в любой момент при определөнном условии, тогда можно и сохраняться в любой момент - как только Глитчер переключит это условие, нужное появится сразу после загрузки сохранения.
—закидываете ром на иконку программы и открываете его в эмуляторе, загружаете сохранение, смотрите результат и выбираете подходящий пункт меню в Глитчере. Перезагружаете ром, перезагружаете сохранение, смотрите, выбираете пункт меню и так повторяете.
—при закрытии Глитчера ром восстанавливается до первоначального состояния, а поиск сохраняется, чтобы можно было продолжить потом. При этом отменяется последний выбранный пункт - это аналог Ctrl+Z для случая, если ошибочно нажали не ту клавишу. Т.е. достаточно перезапустить программу.
—если при поиске нашли что-то интересное, не связанное с основной целью, то есть два варианта:
1) сделать бэкап файла [поиск на паузе], чтобы искать потом;
2) выбрать пункт 3 и искать нужную инструкцию сейчас - этот пункт создаөт [поиск на паузе] сразу и даст вернуться к основному поиску, если в конце ничего не нажмөте и выйдете из программы.
Подробнее про пункты интэрфэйса
1 баги мешают увидеть есть ли нужное изменение
2 баги не мешают увидеть, что нужного изменения нет
3 баги не мешают увидеть, что нужное изменение есть. Далее начинается удаление багов
Как можно ускорить поиск
Програмка создана в Win11, VS2022 и запакована в zip без сторонних програм самой же ОС. Но, при попытке скачивания архива из интэрнэта, Винда ругается на вирусы и удаляет файл - приходится выключать антивириус
Как назвать такое позорище Мелкомягких приличными словами - у меня не хватает фантазии
Если кто-то боится, то исходный код могу дать в личку