簡體   English   中英

哪些方法/調用執行磁盤I / O操作,以及如何找到它們?

[英]Which methods/calls perform the disk I/O operations and how to find them?

  1. 我應該使用哪些方法和系統調用,以便可以替換OS X應用程序(目標)如何從HD讀取和寫入HD?
  2. 如何確定功能或系統調用列表?

添加更多上下文:這是最終項目,我正在尋求建議。 目的是改變OS X應用程序的行為,為其添加數據加密和解密功能。

  1. 我可以使用哪些工具來實現自己的目標,為什么?

例如,假設目標應用是“文本編輯”。 而不是將“ hello world”以純文本格式保存在HD的.txt文件中,而是保存:“ ifmmnXxnpme”。 打開文件將顯示原始文本。

我認為最好變得更現實或至少意識到您想做什么。


軟件中的最低級別是存儲模塊之上的內核模塊,用於“加密”數據。
在Windows中,您可以堆疊驅動程序,因此從概念上講,您只需攔截對讀/寫的調用,對其進行編輯並將其傳遞到驅動程序堆棧中即可。
在BSD下肯定有一個等效的機制,但是我不確切知道它是什么。

我認為您不想深入研究內核編程。


從用戶空間應用程序的角度來看,最低級別是系統調用。
在BSD派生的OS(如OS X)中,用於寫入和讀取的系統調用分別為3和4(請參見此處 ),它們分別為2000003h2000004h (請參見此處 )。
IA32e特定於此,因為您使用的是Apple計算機。

可以通過內存映射文件來讀取/寫入文件,因此您也需要劫持系統調用sys_mmap
由於您需要檢測頁面錯誤或用於實現文件映射的任何機制,因此這更加復雜。

要劫持系統調用,您需要再次使用內核模塊。


下一個更高的抽象層是運行時,可能是Obj C運行時(在數據上,Swift仍使用Obj C運行時AFAIK)。

Obj C應用程序使用Cocoa Framework,並可以通過[NSData dataWithContentOfFile: myFileName][myData writeToFile: myFileName atomically:myAtomicalBehavior]類的調用來讀取/寫入文件。
有很多可寫入或讀取文件的Cocoa方法,但是在內部框架將僅使用Obj C運行時中的方法。 我不是Cocoa內部專家,因此您需要使用調試器並查看調用鏈是什么。

找到可以讀寫文件的“低級”方法后,即可使用swizzling方法

如果目標應用程序將您的代碼作為庫的一部分加載,這確實很簡單,否則您將需要更巧妙的技術(例如直接感染或操縱其他進程的內存)。 您可以在Google周圍搜索更多信息。

再次說老實話,盡管可以管理,但是這仍然是很多工作。
您可以考慮簡單地劫持一組有限的Cocoa方法,例如NSDatawriteToFileNSString類似方法,然后將該項目視為正在進行中的演示。


在這里已經提出了類似的問題並得到了回答。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM