IDA反組譯碼/反編譯靜態分析iOS模擬器程式(三)函數表示與搜尋函數

來源:互聯網
上載者:User

開啟IDA一般都是去搜尋函數,可以說函數是IDA工程的基本單位吧,資料結構什麼的都是為函數服務而已。函數列表在介面左側的Functions Window:

可以看到,UIKit有27789個函數呢。在搜尋前要Crowdsourced Security Testing道函數的表示方式。

Objective-C函數的表示:

拿UIView來做例子吧。在xcode documentation中,UIView的函數會有這樣的表示:

 

+ (void)beginAnimations:(NSString *)animationID context:(void *)context- (void)drawRect:(CGRect)rect- (id)initWithFrame:(CGRect)aRect- (void)removeFromSuperview@property(nonatomic) CGRect frame

 

在gdb/lldb中的表示:

 

+[UIView(Animation) beginAnimations:context:]-[UIView(Rendering) drawRect:]-[UIView initWithFrame:]-[UIView(Hierarchy) removeFromSuperview]-[UIView(Geometry) frame]-[UIView(Geometry) setFrame:]

可以看到,xdb表示的特點是:

 

 

  • 省略傳回值
  • 省略參數型別宣告與形參
  • 函數名與類名之間有一個空格,多參數之間不含空格,直接是冒號分割
  • 類名後緊跟著category名
  • property被展開,readwrite屬性的property會等於兩個函數,set函數會有set首碼和第一個字母大寫(@property時顯式聲明函數名的話也許不同)

 

在IDA中的表示是:

 

__UIView_Animation__beginAnimations_context____UIView_Rendering__drawRect____UIView_initWithFrame____UIView_Hierarchy__removeFromSuperview___UIView_Geometry__frame___UIView_Geometry__setFrame__

其特點就是把xdb標記法中除字母數字外的字元都用底線代替。

 

(block型的函數會較複雜,後面的章節再講)

C++函數的表示:

和xdb的格式差不多,不單獨列了。基本格式為:

命名空間名::類名::函數名(參數類型,參數類型...)

預設命名空間的話就會沒有前面的名字和兩個冒號。C函數沒有類名,有的C函數實際有參數,但在IDA中不顯示。

盡量列我所看到的規則吧:

 

  • 省略傳回值,省略形參
  • 空參數時會表示為 函數名(void)
  • 指標型參數是 類型+空格+* ,引用型參數是 類型+空格+&
  • const型參數的const聲明在後,有空格隔開,在*和&之前
  • const型函數的const省略
  • 參數的typedef會展開,例如CFDictionaryRef會變成__CFDictionary const*
  • 參數類型也要加命名空間名

 

一些函數樣本如下:

 

WebCore::loaderRunLoop(void)WebCore::runLoaderThread(void *)WebCore::CustomEvent::~CustomEvent()WebCore::CustomEvent::initCustomEvent(WTF::AtomicString  const&, bool, bool, WebCore::ScriptValue)WebCore::LegacyWebArchive::createResource(__CFDictionary  const*)_WKViewAddSubview

好了,知道函數名的表示規則之後,就可以搜尋你想看的函數了。

 

啟用Functions Window(隨便點擊一行令本視窗處於焦點狀態),頂部菜單Search->Search...->輸入函數名->OK。IDA的是模糊搜尋,可以不填全名,只要你能確保輸入的字元會令搜尋結果唯一就行,匹配中的話就會跳到那個函數處,雙擊這條函數,就能在右邊視窗看到此函數的反組譯碼代碼了。如果搜尋結果有多個,可以在頂部菜單->Search->Search again跳到下一個。

Search快速鍵為Alt+T,Search again的快速鍵為Ctrl+T。

為整體效果(點擊查看大圖):

一般來說,看著xcode文檔也難以確定其實際函數名的,先用xdb搜尋一遍再對照規則在IDA裡尋找會便捷些。

 

上一篇:IDA反組譯碼/反編譯靜態分析iOS模擬器程式(二)負載檔案與儲存資料庫

轉載請註明出處:http://blog.csdn.net/hursing

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.