Инструкции Arm или Thumb в файле il2cpp

Sbenny.com доверяют 1,331,121 XNUMX XNUMX счастливых пользователей с 2014 года.
Зарегистрируйтесь

ДрувжВерма

Lurker Уровень 0️⃣
Участник 3 лет
Я новичок в моддинге и хотел бы знать, есть ли способ определить, написаны ли инструкции в файле il2cpp (libil2cpp.so) в ARM или Thumb. Также, если есть какой-либо другой набор инструкций, который используется в играх для Android, я хотел бы знать, как их идентифицировать.

Также, если в игре есть armeabi-v7a и arm64-v8a. Затем мне нужно изменить оба файла или любой из них (например, v7a) и удалить другой (например, v8a)
 

Sbenny

Сумасшедший ученый
Штатный сотрудник
Администратор
Отряд СБ Мод ⭐
✔ Утвержденный релизер
Активный пользователь
Вы можете безопасно удалить armv64-v8a, когда есть папка armeabi-v7a, поскольку она широко поддерживается и работает на 99% устройств без проблем. Чтобы ответить на ваш первый вопрос, чтобы узнать, THUMB это или ARM, я использую простой трюк, который включает использование IDA. По сути, вы открываете файл lib в IDA и открываете функцию, которую хотите изменить, и, если расстояние между инструкцией и другой составляет 2 бита (1 байт), это THUMB, в противном случае это ARM, потому что инструкции ARM ВСЕГДА занимают 4 бита ( 2 байта).

Давайте сделаем пример:

.................................
124AB10
МАВС Р0, # 1
124AB12 ДОБАВИТЬ R0, R1
124AB16 Б sub_124AB3A
124AB18 BX LR
.................................

Как видите, разница между 123AB10 и 124AB12 (или 124AB16 и 124AB18) составляет 2 бита, а не 4, что означает, что эта библиотека написана в THUMB, а аналогичная функция вроде этой:

.................................
124AB10
MOV R0, # 1
124AB14 ДОБАВИТЬ R0, R1
124AB18 Б sub_124AB3A
124AB1C BX LR
.................................

записывается в ARM, так как расстояние между каждой строкой равно всегда 4 бита (2 байта).
 

ДрувжВерма

Lurker Уровень 0️⃣
Участник 3 лет
Спасибо. Теперь мне ясно

так что, если у меня есть шестнадцатеричная функция, подобная этой
9E 5B F6 02 5C 26 E8 02 10 4C 2D E9 08 B0 8D E2
как узнать, рука это или большой палец?
 
Последнее редактирование:

PixelYT

Ученик Уровень 2️⃣
Участник 5 лет
Используйте armconverter.com, это вам поможет.
 

Sbenny

Сумасшедший ученый
Штатный сотрудник
Администратор
Отряд СБ Мод ⭐
✔ Утвержденный релизер
Активный пользователь
Спасибо. Теперь мне ясно

так что, если у меня есть шестнадцатеричная функция, подобная этой
9E 5B F6 02 5C 26 E8 02 10 4C 2D E9 08 B0 8D E2
как узнать, рука это или большой палец?
Как я сказал выше, вам нужно использовать IDA, потому что вам нужно увидеть инструкции ASM. Строки шестнадцатеричных значений недостаточно, потому что ее часто можно преобразовать как в ARM, так и в THUMB, поэтому вы в конечном итоге запутаетесь еще больше, чем уже есть.
 
Топовое