我發現guarded_open_np
函數被libsqlite3.dylib用來打開數據庫文件。我看了一下sqlite3開源,沒有這樣的事情。所以肯定蘋果已經修改它使用guarded_open_np
而不是unix的open
。guarded_open_np的參數
我知道guarded_open_np
是一個私人API,我沒有發現頭文件或文檔。我想在guarded_open_np
上做攔截(Cydia的MSFunctionHook),所以我需要知道什麼是參數,而不僅僅是函數名。
我逆向工程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