iOS逆向工程:插件與應用的打包成deb文件教程
一、背景介紹
我于去年(2014)下半年的十月份開始了逆向開發(fā)的探索之旅。初次接觸逆向開發(fā)時,資料稀缺,毫無頭緒。幸運的是,得益于《iOS應用逆向工程》一書及其相關論壇和扣扣群的幫助,我得以逐漸攻克難題。對于剛?cè)腴T的逆向開發(fā)者來說,購買并閱讀這本書,積極參與論壇討論,無疑是一個極好的開始。

時隔大半年后,一位新朋友向我咨詢了關于插件和應用打包的問題。他看到了我曾經(jīng)在CocoaChina和逆向論壇上的提問,現(xiàn)在遇到了同樣的挑戰(zhàn)。我回想起自己當初解決這個問題的過程也是頗為不易,于是決定分享我的經(jīng)驗。
二、打包步驟詳解
當你的所有準備工作都已完成時,我們可以開始打包流程了。
1. 在終端中執(zhí)行相關命令,為應用賦予可執(zhí)行權(quán)限。如需要輸入密碼,請按照提示輸入你的電腦密碼。
2. 接著執(zhí)行命令,為Package(插件)賦予可執(zhí)行權(quán)限。

3. 進入你的Package目錄所在的路徑,使用dpkg進行打包。執(zhí)行相應的命令后,你可能會看到“共忽視了有關主控文件的N個警告”這樣的提示,這通??梢院雎?。打包完成后,你會在Package同一目錄下發(fā)現(xiàn)一個生成的deb文件。
三、在手機上進行操作
接下來,我們需要將手機系統(tǒng)上的操作。使用ifunbox打開手機文件系統(tǒng)/var/mobile/documents路徑,將剛剛生成的deb包復制到該路徑下。然后,在手機上使用ifile工具打開這個路徑,點擊新添加的deb包,下方會彈出一個提示框,選擇安裝應用。如果手機上顯示返回0并完成了安裝,那就意味著安裝成功。
四、安裝完成后的操作
最后一步是重啟手機。請注意,這里說的是真正重啟手機,而不是重啟Springboard。

五、ios砸殼是什么意思
在iOS開發(fā)中,“砸殼”是指去除App的加密保護(即殼),以便進行逆向分析和調(diào)試的過程。砸殼前,App處于加密狀態(tài),能有效保護App的代碼和資源不被非法獲取和修改,防止黑客和盜版者進行逆向工程。但砸殼后,App的加密保護被移除,開發(fā)者可以更方便地進行逆向分析和調(diào)試,通過反編譯代碼、查看資源文件以及調(diào)試運行時行為來深入了解App的實現(xiàn)細節(jié)和邏輯。這一過程對于開發(fā)者來說非常有益,可以幫助他們優(yōu)化代碼、發(fā)現(xiàn)潛在問題和漏洞。砸殼也存在一定風險,可能導致App安全性降低以及被用于盜版和篡改。因此在進行砸殼操作時需謹慎處理。
一、逆向工程前的思考
在決定深入探索iOS逆向工程之前,開發(fā)者必須全面考慮應用的安全性和逆向分析的需求。為了守護自己的App,采取適當?shù)姆雷o措施是至關重要的。這包括但不限于使用代碼混淆、加固和加密技術,以增強App的安全性,并確保合規(guī)地進行逆向分析和調(diào)試。
二、走進iOS逆向的世界

自從投身于iOS開發(fā),我始終關注著行業(yè)的最新動態(tài),不斷學習、探索。我過去忽視了iOS黑產(chǎn)領域,現(xiàn)在卻發(fā)現(xiàn)它依然充滿活力和挑戰(zhàn)。
三、黑產(chǎn)需求與逆向?qū)嵺`
近期,我接觸了一些iOS破殼、逆向及外掛相關的項目,這使我收獲頗豐。在實際操作中,我遇到了一些典型的黑產(chǎn)需求和應用場景:
1. 游戲啟動時的授權(quán)驗證,無授權(quán)直接關閉程序。
2. 程序啟動時通過多個方法檢測手機是否越獄,越獄手機則加大逆向難度。

3. 修改程序中的所有域名連接,進行換殼操作。
4. 面對外掛的防破解措施,再對其進行逆向破解。
這些實踐中,我深感逆向工程的重要性和復雜性。每一個細節(jié)都可能隱藏著深層次的邏輯和技術挑戰(zhàn)。
四、近期的挑戰(zhàn)與應對策略
最近,我面臨一個頗具挑戰(zhàn)性的任務:在一個已經(jīng)被破解的App中再次進行破解。這個App原本是一個保險銷售軟件,但被人破解并加入了打卡功能,并增加了授權(quán)碼進行收費限制。我的任務是在已破解的基礎上,進一步繞過授權(quán)碼的限制。

通過抓取接口、分析驗證接口域名和確定各個動態(tài)庫的功能,我最終鎖定了控制驗證的庫為 custom3.dylib。使用Hopper工具尋找驗證函數(shù)的過程中,我遇到了一個關鍵難題:驗證過程中的key與設備有綁定關系。在走了一段彎路后,我意識到這一點,并開始尋找修改設備標識的方法。通過修改UUIDManager返回的UUID,我成功地繞過了激活碼的驗證。雖然過程中遇到了一些dylib打包的錯誤,但這些問題都逐漸得到了解決。
五、逆向工程的價值與啟示
對于iOS開發(fā)者而言,了解逆向工程不僅有助于提高開發(fā)技能,還能增強對應用安全性的認識。以我在上述案例中的經(jīng)歷為例,如果我能將key做成加密狀態(tài)而非明文,那么應用的防御能力將大大增強。逆向工程讓我們從另一個角度審視自己的應用,發(fā)現(xiàn)潛在的安全風險并進行防范。這也是一個不斷學習和進步的過程,每一次的挑戰(zhàn)和嘗試都讓我們離成功更近一步。
在探索iOS逆向工程的道路上,每一個開發(fā)者都在不斷地學習和成長。這是一個充滿挑戰(zhàn)和機遇的領域,值得我們深入研究和探索。
