Как можно изменить индивидуальные инструкции по сборке в приложении во время его запуска?
У меня есть настройка Mobile Substrate, которую я пишу для существующего приложения. В конструкторе tweak (MSInitialize
) мне нужно переписать отдельные инструкции в коде приложения. Я имею в виду, что в адресном пространстве приложения может быть несколько мест, которые я хочу изменить, но в каждом случае необходимо изменить только одну команду. Я уже отключил ASLR для приложения и знаю точный адрес памяти инструкции для исправления, и у меня есть шестнадцатеричные байты (как char [], но это не имеет значения и может быть изменено в случае необходимости) нового инструкция. Мне просто нужно выяснить, как выполнить изменения.
Я знаю, что iOS использует Data Execution Prevention (DEP), чтобы указать, что страницы исполняемой памяти не могут быть записаны и наоборот, но я знаю, что это возможно обойти это на взломанном устройстве. Я также знаю, что процессор ARM, используемый iDevices, имеет кеш команд, который необходимо обновить, чтобы отразить изменение. Однако я даже не знаю, с чего начать это делать.
Итак, чтобы ответить на вопрос, который в противном случае был бы задан, я ничего не пробовал. Это не потому, что я ленив; Скорее, это потому, что я совершенно не понимаю, как это можно сделать. Любая помощь вообще была бы оценена.
Изменить:
Если это вообще помогает, моя конечная цель - использовать это в настройке Mobile Substrate, которая перехватывает приложение App Store. Раньше, чтобы модифицировать это приложение, нужно было сначала взломать его, чтобы расшифровать приложение, чтобы двоичный файл мог быть исправлен. Я хочу сделать так, чтобы людям не пришлось взломать приложение, поскольку это может привести к пиратству, против которого я категорически против. Я не могу использовать Mobile Substrate обычно, потому что вся работа выполняется на С++, а не Objective-C, и приложение удаляется, не оставляя никаких символов для использования MSHookFunction
on.