Подтвердить что ты не робот

Можно ли отредактировать и перекомпилировать двоичный файл iOS?

Я решил задать этот вопрос здесь после многого времени, потраченного на Google. Но я еще не смог ответить на вопрос. Ниже приведены детали:

У меня есть приложение и недавно отправлено в Cydia. Он был взломан кем-то другим и отправил его на торрент-сайты. Интересная часть: у меня есть механизм проверки двоичной контрольной суммы внутри, и они смогли взломать весь материал, и они создали новый файл контрольной суммы на основе изменений, внесенных ими в двоичный файл. Они отредактировали две функции и декомпилировали ее и отправили на торренты.

Итак, я провел некоторое исследование с IDA Pro и увидел, что можно увидеть фактическую реализацию функций и классов. Но для того, чтобы редактировать функции, они должны найти адрес этой функции и отредактировать ее с помощью HEX EDITOR. Это часть меня сбивает с толку, есть ли кто-нибудь помочь мне в этом? Я не хочу, чтобы это было "неустранимым":).. Это не так просто, я думаю.:) Но я действительно хочу узнать, как они взломали?:)

Мой вопрос в том, как отредактировать функцию в двоичном файле iOS и перекомпилировать ее? Например, у меня есть следующий метод в одном из моих классов.

- (id) getSomething {

   return @"Something";
}

Я хочу отредактировать возвращаемое значение этой функции. Возможно ли это?

4b9b3361

Ответ 1

Обычно вы не "перекомпилируете" его. Просто подайте файл в IDA, найдите строки, вызовы функций или все, что вы ищете, а затем используйте шестнадцатеричный редактор или аналогичный файл для редактирования на уровне сборки. В большинстве случаев достаточно просто изменить условный переход в безусловный прыжок или nop (без операции). Если вы хотите изменить возвращаемые значения, вам нужно приложить немного больше усилий, но по моему опыту вы либо редактируете последовательность char прямо внутри двоичного файла, если она указана как постоянное или начальное значение, либо просто написать совершенно новую функцию и "скопировать" код ассемблера в исходный файл. Вам просто нужно убедиться, что ваша новая функция не занимает больше места, чем оригинал - или все становится намного сложнее. Я надеюсь, что вы просили, иначе просто скажите нам, какое приложение вы говорите, и мы можем глубже в него заглянуть:)