天天看點

Iphone攻與防-一

實作一下:如果微信群裡發幾個大的紅包時,你永遠是第一個搶到的。如果APP有營運活動,你能繞過限制拿到第一大獎。如果在APP裡面你無需充值就是VIP使用者.......當然所有這些其實最重要的是幫助我們增強我們APP的安全性能,不知攻焉知防~

現在有一個城堡,如果派兵去攻打,需要什麼?大的來說應該就2步:第一步:找出這個城堡最脆弱的地方,然後呢,當然就是打的問題了:排兵布陣集中優勢火力攻打這個最脆弱的地方。

對于要說的IOS來說,我們首先會講解如何去攻打,然後再後續講解如何找到城堡中最薄弱的地方。

name 表示的是方法的名稱,用于唯一辨別某個方法,比如 @selector(viewWillAppear:) ;

types 表示的是方法的傳回值和參數類型(詳細資訊可以查閱蘋果官方文檔中的 Type Encodings);

imp 是一個函數指針,指向方法的實作;

SortBySELAddress 顧名思義,是一個根據 name 的位址對方法進行排序的函數。

Method Swizzling 的實質是在運作時,通路對象的方法結構體,并改變它的底層實作。

Iphone攻與防-一

給項目中所有圖檔名稱加字首,所有按鈕點選事件都加一個統計......

一、Theos越獄開發工具的配置和安裝:

下載下傳架構到本地,一般直接在這個目錄即可。

打包工具安裝,theos開發的插件将會以deb的格式進行釋出

在Theos開發插件中,iOS檔案的簽名是使用ldid工具來完成的,也就是說ldid取代了Xcode自帶的Codesign。下方就是ldid的安裝過程

配置CydiaSubstrate

打開Terminal

設定環境變量

進入你打算放置項目的檔案夾

建立工程:

會出現如下圖,進行如下操作即可,主要輸入的是MobileSubstrate Bundle filter和APP的bundleIdentifier對應,目前作業系統的面闆,則輸入如下即可。

5.Makefile檔案開頭輸入你需要安裝手機的ip位址

6.Tweak.xm輸入你需要hook的程式

%hook 指定需要hook的類名,以%end結尾

%log 用來列印log的,将資訊輸入到syslog中,如%log((NSString *)@"xiang")

%orig 執行被hook函數的原始代碼,類似于super.method功能

編譯:

執行指令make:

打包:

執行指令:make package

安裝:

執行指令:make install

過程會讓你輸入兩次iphoen密碼 , 預設是alpine

過程基本一樣,隻是輸入[iphone/tweak] MobileSubstrate Bundle filter 時,輸入APP的bundile identifier。

Tweak.xm代碼如下: