Znalazłem, że funkcja libsqlite3.dylib używa funkcji guarded_open_np
do otwierania pliku bazy danych. Spojrzałem na open source sqlite3, nie było czegoś takiego. Więc na pewno Apple zmodyfikował go tak, aby używał guarded_open_np
zamiast uniksowego open
.Parametry guarded_open_np
Wiem, że guarded_open_np
jest prywatnym API i nie znalazłem ani nagłówka, ani dokumentacji na jego temat. Chcę przechwycić (Cydia MSFunctionHook) na guarded_open_np
, więc muszę wiedzieć, jakie są również parametry, a nie tylko nazwa funkcji.
odwrócić inżynierii libsqlite3.dylib użyciem IDA Pro, to jak to nazywa 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}
Jednak to nadal nie jest jasne, jakie params to może potrwać. Doceniam wiele, jeśli istnieje jakaś oficjalna strona z podaniem guarded_open_np
ze wszystkimi jej parametrami.
Zgaduję, że wygląda na to, że UNIX jest otwarty (3): https://gist.github.com/CodaFi/7c73abd9dfb602dcc26e – CodaFi
@Krypton, możesz go podłączyć do debuggera i sprawdzić zawartość zawartości rejestrów r0 ~ r3 (i czy wskazują na pamięć, zawartość pamięci) tuż przed instrukcją blx? Konwencje wywoływania zwykle używają r0 dla pierwszego argumentu, r1 dla drugiego itd. – Ncat