Android 的原始碼是開放的, 開發者很容易瞭解系統機制, 但是 iOS 的程式碼是封閉的, 單從文件上還是不足以深入的瞭解系統機制, 下面介紹一些方法能夠對 iOS 進行逆向工程, 讓開發者能夠更深入瞭解系統.
方法/步驟
為了學習框架,提升開發水平,可以看看私有API列表。iOS 的各私有API都可以通過runtime檢視獲得。如果覺得麻煩的話可以到Github看現成的,但還是推薦自己來實時獲取,因為iOS在更新,API也在更新。在App Store產品中使用私有API是違反蘋果規定的,所以能不用這些API而實現一些功能是iOS工程師水平的體現。
對iOS工程師而言,如果只是開發的話(1)也就差不多了。如果您十分有愛,想了解API以下的東西的話,依然可以利用Obj-C的runtime。您可以用它研究很多黑箱過程的來龍去脈。值得一提的是,這種技巧是合法的,可以在App Store 中使用! 蘋果曾給使用了相關技巧的開發者發過郵件,表示出於安全性和穩定性最好不再使用,但沒有禁止。
如果是對系統本身感興趣的話,不妨越獄看看。iOS和Mac OS X類似,是一種UNIX系統。越獄後你就有了root權,接下來就像您研究Linux那樣擺弄就好了。對於開發者來說,有了root權也就可以寫一些全域性的程式碼,自然也可以用來深入瞭解系統、原生app等。
另外說iOS程式碼是封閉/閉源的其實不全對,蘋果算是開源界的一面大旗了,但是如您所見,這裡並沒有iOS作業系統的程式碼,而是一些庫和編譯器、偵錯程式,可以說WebKit是iOS最重要的組成之一,截止iOS 5 所有多於一行文字的控制元件其實都是WebKit標準的。很多iOS的Hack都是從這裡開始的。