Я обнаружил, что функция guarded_open_np
используется libsqlite3.dylib для открытия файла базы данных. Я посмотрел в open source sqlite3, такого не было. Поэтому определенно Apple изменила его, чтобы использовать guarded_open_np
вместо unix open
.Параметры guarded_open_np
Я знаю, что guarded_open_np
- это частный API, и я не нашел ни заголовка, ни документации об этом. Я хочу сделать перехват (MSFunctionHook Cydia) на guarded_open_np
, поэтому мне нужно знать, каковы параметры, а не только имя функции.
Я обратной инженерии libsqlite3.dylib с помощью IDA Pro, это то, как он называется guarded_open_np
:
sub_79c1c:
push {r7, lr}
mov r7, sp
sub sp, #0x4
mov r3, r1
movw r1, #0xc57e
movt r1, #0x0
str r2, [sp, #0x4 + var_0]
add r1, pc
movs r2, #0xf
blx imp___picsymbolstub4__guarded_open_np
add sp, #0x4
pop {r7, pc}
Тем не менее, до сих пор не ясно, что Params это может занять. Я очень ценю, если есть официальный сайт, в котором упоминается guarded_open_np
со всеми его параметрами.
Мое лучшее предположение заключается в том, что он выглядит как открытый UNIX (3): https://gist.github.com/CodaFi/7c73abd9dfb602dcc26e – CodaFi
@Krypton вы могли бы подключить его к отладчику и проверить, что такое содержимое регистров r0 ~ r3 (и если они указывают на память, содержимое памяти) непосредственно перед выражением blx? Вызывающие соглашения обычно используют r0 для первого аргумента, r1 для второго и т. Д. – Ncat