iOS安全攻防(十四)arm彙編之建立objc物件
objc是完全面向物件的語言,所以逆向的重點就是逆向類,這篇帖子通過ida的神奇的f5功能,來逆向某個物件的建立。
我們直接看ida中的main方法的逆向出來的arm程式碼:
基本上看不出所以然,我們使用ida的f5分析得出c語法的虛擬碼如下:
提一下,我在原始碼中,把自動記憶體管理ARC關掉了,為的是讓程式碼更整潔。
在 8,9行都看到objc_msgSend,這個objc_msgSend其實是編譯器生成的程式碼,在原始碼中沒有的,objc呼叫例項方法其實是動態的通過訊息傳遞,只有在runtime的時候才能確定到底給哪個method去處理,也就是說編譯期間根本無法確定函式地址。
objc_msgSend函式至少包括2個引數,第一個引數型別是id,也就是範型class,可以傳遞任何class;第2個引數型別是SEL,selector,暫時可理解method的字面宣告,後面的帖子裡會詳細講到selector。從第3個開始後面的引數就是SEL所指method需要的具體引數,本例中都只有2個引數。
最後看一下main 的原始碼:
相關推薦
iOS安全攻防(十四)arm彙編之建立objc物件
objc是完全面向物件的語言,所以逆向的重點就是逆向類,這篇帖子通過ida的神奇的f5功能,來逆向某個物件的建立。 我們直接看ida中的main方法的逆向出來的arm程式碼: 基本上看不出所以然,我們使用ida的f5分析得出c語法的虛擬碼如下: 提一下,我在原始碼中,把自動記憶體管理ARC關
iOS安全攻防(十二)arm彙編之mov 和 mvn
先看2段程式碼: 第一段程式碼main裡面沒有任何語句,第2段程式碼是返回0值,這2段程式碼的反彙編是一樣的,看下圖: 一共 2行彙編程式碼,第2行 bx lr 代表返回到main呼叫之後的語句,而第一行 movs是 mov的擴充套件,最後字母s代表影響標誌位,從彙編程式碼可知,如果返回int
iOS安全攻防(十一)arm彙編之暫存器簡介
2014-12-13 21:10 by 16位元組, ... 閱讀, ... 評論, 收藏, 編輯 iOS安全攻防必須掌握arm彙編,這裡先簡要介紹arm中暫存器。 這是第一篇帖子,簡要說下arm的各個暫存器的功能。 R0-R3:用於
iOS安全攻防(十五)使用hopper修改字串
2014-12-25 09:59 by 16位元組, ... 閱讀, ... 評論, 收藏, 編輯 逆向iOS的mach-o檔案,除了用耳熟能詳的ida反彙編器外,在mac下還有個叫做hopper的反彙編器,hopper可謂是價效比很高的
iOS安全攻防(十九)重組mach-o格式實現簡單反ida
之前3篇大致講了下mach-o的相關知識,這篇主要講解如何通過對mach-o檔案簡單的更改達到反ida靜態分析的目的,此篇目的是拋磚引玉,掌握mach-o格式可以按自己的思路去更改,做到防反彙編器。 mach-o檔案格式的節: 1.struct section { /* for 32-bit arc
iOS安全攻防(十六)看懂mach-o(1)
在win下搞逆向需要看懂pe,同樣搞iOS安全攻防必須看懂mach-o格式,水果的官方mach-o文件在此:https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/index.
iOS安全攻防(十七)看懂mach-o(2)
接上一篇看懂mach-o(1),本文繼續講緊隨mach-o的header檔案的load command載入命令,看下面2張圖,分別是hopper中顯示的第一個load command區域和segment_command的定義: 第一張圖擷取的是第一個load command,從第一張圖所知道
iOS安全攻防(十八)看懂mach-o(3)
之前兩篇帖子分別講了mach-o的header區和load command區中的segment,今天繼續講segment中的的setcion,一般在__TEXT和__DATA段中有section。這裡注意下命名規範,大寫代表segment,小寫是section,例如 __TEXT.__text,指的是__
Oracle入門(十四.22)之建立DDL和資料庫事件觸發器
一、什麼是DDL和資料庫事件觸發器?DDL語句觸發DDL觸發器:CREATE,ALTER或DROP。資料庫事件觸發器由資料庫中的非SQL事件觸發,例如:•使用者連線到資料庫或與資料庫斷開連線。•DBA啟動或關閉資料庫。•使用者會話中引發了特定的異常。(1)在DDL語句中建立觸
iOS安全攻防(十三)arm彙編之函式(int引數)傳遞
之前講到函式呼叫的引數傳遞通過r0-r3來實現,這篇帖子我們來驗證下。先看一個4個引數的函式程式碼: main方法簡單呼叫compute方法,先看main的彙編程式碼: 明顯可以看出,引數值1,2,3,4分別傳遞給r0-r3,然後通過b呼叫函式 compute,接著看下compute的彙編程式
iOS安全攻防之結構體保護使用
fff n) cnblogs 調用 hook hang ras evel amp Objective-C 代碼很容易被 hook,因此需要對一些重要的業務邏輯進行保護,可以改用結構體的形式,把函數名隱藏在結構體裏,以函數指針成員的形式存儲。這樣編譯後只留了下地址,去掉了
iOS安全攻防之使用 Frida 繞過越獄設備檢測
檢測 攻防 -i blog 越獄 工具 分析工具 href 設備 Frida 是 一款有趣的手機應用安全分析工具。 文章參考:Bypass Jailbreak Detection with Frida in iOS applications iOS安全攻防
iOS安全攻防(二十)動態除錯利器---gdb基礎篇
一、除錯平臺搭建 1、GNU Debugger。首先安裝ios下的gdb偵錯程式,新增源:cydia.radare.org 。搜尋 GNU Debugger,安裝之。(有些源的GDB好像不能用,這個測試沒問題) 3、adv-cmds。新增源:apt.saurik.com(這個應該是預設源裡
iOS安全攻防(四)使用OpenSSH
既然iOS是基於MAC OS X的,那麼我們肯定也能用ssh了,開啟Cydia搜說索到OpenSSH進行安裝。 安裝完畢,預設的密碼是 alpine,檢視下iOS裝置的ip(我的裝置是192.168.0.114)地址,就可以用同網段中的機子訪問ios了。 win下我用的是putty, mac 下
[ios]安全攻防之程式碼混淆的一個小工具
看了“念茜”的這篇文章: http://blog.csdn.net/yiyaaixuexi/article/details/29201699 覺得非常好,不過裡面提到一個func.list的檔案。 規則: 建立函式名列表func.list,寫入待混淆的函式名,如:-(voi
iOS安全攻防(二十一):廢除應用程式的ASLR特性
原文地址:http://blog.csdn.net/yiyaaixuexi/article/details/20391001 ASLR (Address Space Layout Randomization),即地址空間隨機佈局。大部分主流的作業系統都已實現了ASLR
iOS安全攻防(十七):Fishhook
Fishhook眾所周知,Objective-C的首選hook方案為Method Swizzle,於是大家紛紛表示核心內容應該用C寫。接下來進階說說iOS下C函式的hook方案,先介紹第一種方案————fishhook .什麼是fishhookfishhook是faceboo
第二十四天 框架之痛-Spring MVC(四)
cte and inf 業務 net dtd oct tar nco 6月3日,晴。“綠樹濃陰夏日長。 樓臺倒影入池塘。 水晶簾動微風起, 滿架薔薇一院香”。 以用戶註冊過程為例。我們可能會選擇繼承AbstractContro
【三十四】thinkphp之curd操作
傳遞 nfa ace meta png 設置 顯示 logs 對象 1.數據創建(create) 接受提交過來的數據,比如表單提交的 POST(默認)數據。接受到數據後,還可以對數據進行有效的驗證、完成、生成等工作 // 這裏 create()方法就是數據創建,
Linux學習總結(三十四)lamp之用戶認證和域名跳轉
lamp 用戶認證 域名跳轉 訪問日誌 用戶認證 為了某些網站的安全需要,特意授權特定用戶訪問,因此產生了網站訪問的用戶認證機制。我們可以針對某個站點進行認證,也可以指定某個目錄,或者是一個文件。編輯虛擬主機配置文件:vim /usr/local/apache2.4/conf/extra/ht