我发现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