我想反編譯iOS 3.1.3內核以更好地理解它,但我不確定從哪裏開始,但不要被愚弄,在編程時我不是綠色的角。是否可以編輯和重新編譯iOS內核?
回答
內核是open source所以你可以查看和編譯它。 iOS 3.1.3在回購,但你也想看看3.0。
從Apple:
爲第一大電腦公司做開源開發其正在進行的軟件戰略的重要組成部分,蘋果公司仍然致力於開源開發模式。 Mac OS X的主要組件包括UNIX核心在Apple的開源許可下提供,允許開發人員和學生查看源代碼,從中學習並提交建議和修改。
據我所知,iOS內核不是開源的。 –
@JosephFoote好的,這是什麼?你沒有檢查鏈接嗎?可可和CocoaTouch不是開源的。 – zaph
是的,我檢查了鏈接,引自維基百科「源模型封閉源」。蘋果公司不會將內核視爲開放源代碼,因爲這會危及安全性。 –
的XNU內核在其iOS的化身不開源的,但在其I386/x86_84 XNU(另外,對於舊版本的PPC)是。
XNU由幾層內部構建而成,底層有兩個平臺專家和ml_ * APIs作爲底層硬件的「粘合劑」。這意味着如果沒有上述代碼片段,您可以編譯源代碼(使用ARMv7交叉編譯器,如iPhone SDK中的代碼),但內核實際上不會啓動。
另一個困難是在內核擴展(XNU-說「模塊」)。這些是驅動程序,沒有這些驅動程序,你無法真正做很多 - 再一次,內核不啓動,因爲它無法初始化任何平臺依賴項。與其看起來相反,雖然iOS和OS X內核非常相似,但它們之間存在一些細微的差別(在1699年之後,當Apple意識到他們是在1699年以後,它們通過#ifdef CONFIG_EMBEDDED和#ifdef ARM可見泄露使用信息給jailbreakers,最後使用預處理器在公開之前刪除iOS特定的修改
反編譯是一個不同的問題,可以從內核映像中反彙編和回溯(一旦解密或轉儲)通過相當易讀的程序集(儘管不是完整的源程序),IDA和其他專業工具(例如jtool)具有這些功能。至少有兩個項目可以爲ARM編譯和引導開源版本。一個由Christina Brooks(?)製作,另一個由WinOCM製作。後者由於在內部的ARM實現中對XNU的瞭解而聲名狼借,最終被蘋果公司僱用,從而減少了任何開源實現的機會。
- 1. 是否可以編輯和重新編譯iOS二進制文件?
- 2. 是否可以在OS X中編譯Linux內核(用於BeagleBone)?
- 3. 是否可以對CUDA內核進行即時(jit)編譯?
- 4. 快速內核重新編譯
- 5. 編譯時是否可以編輯模板名稱?
- 6. 是否可以在iOS上編譯爲Arduino編寫的代碼?
- 7. 是否可以重新編程鍵盤?
- 8. 是否可以在iOS上編譯和使用xapian,clucene或lucy?
- 9. Java:編輯並重新編譯.jar?
- 10. 是否有可能爲iOS編譯potrace?
- 11. 哪裏可以編譯新的內核模塊代碼
- 12. 編譯android內核
- 13. 編譯linux內核
- 14. 編譯Linux內核
- 15. Linux內核源代碼修改和重新編譯
- 16. 是否可以用C++而不是C編寫OpenCL內核?
- 17. 除編譯glibc和內核模塊外,是否需要內核頭文件?
- 18. Scala編譯器是否可重入?
- 19. C#可編輯資源,無需重新編譯
- 20. 編譯器是否只編譯可以執行的代碼?
- 21. Fortran 95編譯器是否可以編譯Fortran 77代碼?
- 22. 是否可以在IPython Notebook中使用%編輯來編輯瀏覽器內?
- 23. 是否可以編輯UITableViewCellAccessoryDetailDisclosureButton屬性?
- 24. 是否可以編輯Json輸出?
- 25. 是否可以編輯git哈希碼?
- 26. 是否可以編輯indexeddb的來源?
- 27. 是否可以編輯UITableViewCell的numberOfLines?
- 28. 是否有水印,我可以編輯
- 29. 是否可以編輯牆貼?
- 30. 是否可以反編譯NSIS腳本?
這個問題太廣泛了。 – NobodyNada
這很容易批評,但你可以嘗試給予更多建設性的批評。 –
這很誘人,但您可以閱讀Stack Overflow [幫助文件](http://stackoverflow.com/help)。本網站鼓勵提出能夠產生明確答案的特定技術問題。如果你能分離出一些具體的問題或問題,你就更有可能獲得援助。 – MarsAtomic