蘋果私有API檢查工具開源項目

jopen 9年前發布 | 31K 次閱讀 蘋果 iOS開發 移動開發

iOS-private-api-checker 蘋果iOS私有API檢查工具 Developer tool to scan iOS apps for private API usage before submitting to Apple https://github.com/hustcc/iOS-private-api-checker

</blockquote>

iOS私有API檢查工具

私有API檢查的原因在于:蘋果在app提審的時候,會檢查app使用私有api的情況,對于使用了私有api的app,不予通過,這個工具的目地就是在提審之前檢查一下,提高通過率。

</blockquote>

一、如何使用

1. 構建私有api庫

  • db/dsidx_dbs.py文件為解析docSet.dsidx的庫,請實現將docSet.dsidx內容導出到sqlite中。docSet.dsidx是xcode作為代碼提示的數據庫,表示是apple公開的公有api。

    </li>

  • 修改config.py中sdks_config字典,增加各個version的sdk路徑,然后運行build_api_db.py,會自動解析私有api,存存儲到sqlite中。

    </li>

  • (項目中的數據庫內容是我編譯sdk7.0的數據,可以直接用。)

    </li> </ul>

    2. 檢查ipa私有api

    運行方式有二,建議第二種web方式:

    1. 修改iOS_private.py main方法中的ipa路徑,運行即可。

      </li>

    2. 使用Web上傳運行的方式,運行python run_web.py(請先配置flask運行環境),然后瀏覽器輸入127.0.0.1:9527 將ipa拖入上傳框等待即可看到檢查結果。

      </li> </ol>

      二、檢查原理

      1. 通過mac上xcode的開發環境,找出不同sdk版本的public framework和private framework;通過class-dump反編譯出public framework中的api,分別設置為集合PU和PR。

        </li>

      2. 通過xcode代碼提示的sqlite數據庫查詢出所有的document api,設置為集合DA。

        </li>

      3. 那么PU - DA為公有framework中的私有api,設置為A

        </li>

      4. PR為私有framework中的api都不能使用,則私有api集合PRAPI = A + PR

        </li>

      5. 使用class-dump反編譯ipa中的app文件,然后和PRAPI集合取交集即可獲得。

        </li>

      6. 其中有一些細節的集合操作,來準確定位api,例如使用方法名和類名來唯一確定API方法。

        </li> </ol>

        三、參考項目

        • RuntimeBrowser

          </li>

        • iOS-private-api-scanner

          </li>

        • iOS-api-scan.md

          </li> </ul>

          四、Note

          1. 私有的api = (class-dump Framework下的庫生成的頭文件中的api - (Framework下的頭文件里的api = 有文檔的api + 沒有文檔的api)) + PrivateFramework下的api。

            </li>

          2. 私有api在公開的Framework及私有的PrivateFramework都有。

            </li>

          3. 請暫時暫mac上運行,linux上暫時沒有找到合適的、代替otool的工具,求推薦^^!

            </li> </ol> </div> 來自:http://segmentfault.com/a/1190000003956100

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!