Tôi thấy rằng guarded_open_np
chức năng được sử dụng bởi libsqlite3.dylib để mở tệp cơ sở dữ liệu. Tôi đã có một cái nhìn vào mã nguồn mở sqlite3, không có điều như vậy. Vì vậy, chắc chắn Apple đã sửa đổi nó để sử dụng guarded_open_np
thay vì unix của open
.Tham số của guarded_open_np
Tôi biết rằng guarded_open_np
là một API riêng tư và tôi không tìm thấy tiêu đề cũng như tài liệu về nó. Tôi muốn làm gián đoạn (MSFunctionHook của Cydia) trên guarded_open_np
, vì vậy tôi cần phải biết các tham số là gì, không chỉ là tên hàm.
tôi đảo ngược chế libsqlite3.dylib sử dụng IDA Pro, đây là cách nó được gọi là 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}
Tuy nhiên, nó vẫn chưa rõ ràng những gì params nó có thể mất. Tôi đánh giá cao nhiều nếu có một số trang web chính thức đề cập đến guarded_open_np
với tất cả các thông số của nó.
phỏng đoán tốt nhất của tôi là có vẻ như UNIX mở (3): https://gist.github.com/CodaFi/7c73abd9dfb602dcc26e – CodaFi
@Krypton bạn có thể móc điều này vào trình gỡ lỗi và kiểm tra nội dung của thanh ghi r0 ~ r3 (và nếu chúng trỏ đến bộ nhớ, nội dung của bộ nhớ) ngay trước câu lệnh blx? Các quy ước gọi thường sử dụng r0 cho đối số đầu tiên, r1 cho số thứ hai, vv – Ncat