iOS安全攻防(十二)arm彙編之mov 和 mvn
先看2段程式碼:
第一段程式碼main裡面沒有任何語句,第2段程式碼是返回0值,這2段程式碼的反彙編是一樣的,看下圖:
一共 2行彙編程式碼,第2行 bx lr 代表返回到main呼叫之後的語句,而第一行 movs是 mov的擴充套件,最後字母s代表影響標誌位,從彙編程式碼可知,如果返回int型別,沒有明顯的 return 語句,那預設就是返回0(返回暫存器r0)。(0x代表16機制)
接著修改程式碼為return -1看下反彙編
return -1程式碼,推測第一行肯定會和之前的不同,但是很奇怪不是movs,而是mov.w,這裡.w只是強調是32位架構的。而字面值-1卻變成了0xffffffff,這是因為記憶體中沒有真正的負值,負值全部以補碼的形式來表現,(補碼 = 反碼+1),而正值的補碼就是其自身。
接著修改程式碼為return -2看下反彙編
第一行程式碼又變動了,之前都是mov的擴充套件,現在變成mvn,mvn的意思是,先取反再賦值,0x1取反是 1111 1111 1111 1111 1111 1111 1111 1110,16進製表示為0xfffffffe,而0xfffffffe就是-2的補碼。
相關推薦
iOS安全攻防(十二)arm彙編之mov 和 mvn
先看2段程式碼: 第一段程式碼main裡面沒有任何語句,第2段程式碼是返回0值,這2段程式碼的反彙編是一樣的,看下圖: 一共 2行彙編程式碼,第2行 bx lr 代表返回到main呼叫之後的語句,而第一行 movs是 mov的擴充套件,最後字母s代表影響標誌位,從彙編程式碼可知,如果返回int
iOS安全攻防(十四)arm彙編之建立objc物件
objc是完全面向物件的語言,所以逆向的重點就是逆向類,這篇帖子通過ida的神奇的f5功能,來逆向某個物件的建立。 我們直接看ida中的main方法的逆向出來的arm程式碼: 基本上看不出所以然,我們使用ida的f5分析得出c語法的虛擬碼如下: 提一下,我在原始碼中,把自動記憶體管理ARC關
iOS安全攻防(十一)arm彙編之暫存器簡介
2014-12-13 21:10 by 16位元組, ... 閱讀, ... 評論, 收藏, 編輯 iOS安全攻防必須掌握arm彙編,這裡先簡要介紹arm中暫存器。 這是第一篇帖子,簡要說下arm的各個暫存器的功能。 R0-R3:用於
iOS安全攻防(二十一):廢除應用程式的ASLR特性
原文地址:http://blog.csdn.net/yiyaaixuexi/article/details/20391001 ASLR (Address Space Layout Randomization),即地址空間隨機佈局。大部分主流的作業系統都已實現了ASLR
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,指的是__
GNU ARM彙編--(十二)arm彙編指令的B真的那麼簡單嗎?
說句題外話,在輸入“指令”二字的時候,就想起了google搜尋時,提示“令”不能搜尋,要我換詞彙.如果不能說髒話,我真就無語了. 在前面對具體晶片的各個基本模組做完了學習後,在上一篇小結中自以為已經具備了自己寫個bootloader
iOS安全攻防(十三)arm彙編之函式(int引數)傳遞
之前講到函式呼叫的引數傳遞通過r0-r3來實現,這篇帖子我們來驗證下。先看一個4個引數的函式程式碼: main方法簡單呼叫compute方法,先看main的彙編程式碼: 明顯可以看出,引數值1,2,3,4分別傳遞給r0-r3,然後通過b呼叫函式 compute,接著看下compute的彙編程式
iOS安全攻防(二十)動態除錯利器---gdb基礎篇
一、除錯平臺搭建 1、GNU Debugger。首先安裝ios下的gdb偵錯程式,新增源:cydia.radare.org 。搜尋 GNU Debugger,安裝之。(有些源的GDB好像不能用,這個測試沒問題) 3、adv-cmds。新增源:apt.saurik.com(這個應該是預設源裡
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]安全攻防之程式碼混淆的一個小工具
看了“念茜”的這篇文章: http://blog.csdn.net/yiyaaixuexi/article/details/29201699 覺得非常好,不過裡面提到一個func.list的檔案。 規則: 建立函式名列表func.list,寫入待混淆的函式名,如:-(voi
iOS安全攻防(十七):Fishhook
Fishhook眾所周知,Objective-C的首選hook方案為Method Swizzle,於是大家紛紛表示核心內容應該用C寫。接下來進階說說iOS下C函式的hook方案,先介紹第一種方案————fishhook .什麼是fishhookfishhook是faceboo
十二.ARM裸機學習之SD卡啟動詳解
一.主流的外存裝置發展及介紹 2017/12/12 23:08 ** 1.首先,清楚記憶體和外存的區別: ** 一般是把這種RAM(random access memory,隨機訪問儲存器,特點是任意位元組讀寫,掉電丟失)叫記憶體, 把RO
C++ primer 第十二章筆記之 動態內存
weak memory ont 創建 tor size prim 自動 pre 動態內存: 運算符:new,delete 智能指針: 頭文件:memory shared_ptr:允許多個指針指向同一個對象; unique_ptr:"獨占"所指向的對象; weak_ptr:
關於產品的一些思考——(四十二)網易之有道雲筆記協同版
mil 新版本 strong dsm article 思考 post 有道 就會 ————————————————————2014.07.17———————————————————— 先前的使用體驗,補上。 在使用協同版的時候。一個筆記僅僅要點擊了編輯。就會生
(十二)easyUI之表單和驗證完成登錄頁面
() 成功 options 表單提交 odi 1-1 java ima 1.4 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>