柚子快報激活碼778899分享:OSX macOS逆向分析基礎(chǔ)
柚子快報激活碼778899分享:OSX macOS逆向分析基礎(chǔ)
文章目錄
前言O(shè)SX基礎(chǔ)工具方法動態(tài)調(diào)試附錄參考鏈接
前言
如果你想真正成為軟件高手,就得了解底層運作機(jī)制。逆向,不會讓你成為扎克伯格或張一鳴,但或許能讓你成為安全專家。
OSX基礎(chǔ)
Mac OS X下二進(jìn)制可執(zhí)行文件的動態(tài)鏈接庫是dylib文件。 所謂dylib,就是bsd風(fēng)格的動態(tài)庫?;究梢哉J(rèn)為等價于windows 的dll和linux的so。mac基于bsd,所以也使用的是dylib。
工具
包括反匯編工具、調(diào)試器等
xcode自帶的工具:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/binlldb: 動態(tài)調(diào)試?yán)鱀Trace: 動態(tài)追蹤技術(shù),也是一種高級調(diào)試技術(shù),其基于內(nèi)核來實現(xiàn),擁有絕對的權(quán)限。和D 腳本語言結(jié)合使用,位于/usr/bin/dtrace下IDA Pro:是目前最棒的一個靜態(tài)反編譯軟件,為眾多0day世界的成員和ShellCode安全分析人士不可缺少的利器!IDA Pro Disassembler and Debugger是一款交互式的,可編程的,可擴(kuò)展的,多處理器的,交叉Windows或Linux WinCE MacOS平臺主機(jī)來分析程序, 被公認(rèn)為最好的花錢可以買到的逆向工程利器。IDA Pro已經(jīng)成為事實上的分析敵意代碼的標(biāo)準(zhǔn)并讓其自身迅速成為攻擊研究領(lǐng)域的重要工具。它支持?jǐn)?shù)十種CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000k,c8051等等。它的優(yōu)點是可以更好的反匯編和更有深層分析。可以快速到達(dá)指定的代碼位置;可以看到跳到指定的位置的jmp的命令位置;可以看參考字符串;可以保存靜態(tài)匯編等。Hopper Disassembler:分析工具,Hopper 3.11.5, HDS,Hopper 是一種適用于 OS X 和 Linux 的逆向工程工具,可以用于反匯編、反編譯和調(diào)試 32位/64位英特爾處理器的 Mac、Linux、Windows 和 iOS 可執(zhí)行程序!otx反匯編:brew install otx界面分析:Cycript、Reveal在MacOS/iOS中,是使用了/usr/lib/dyld程序來加載動態(tài)庫,dyld源碼: https://opensource.apple.com/tarballs/dyld/MachOView:查看二進(jìn)制文件,靜態(tài)分析, Mach-O格式的詳細(xì)定義:https://opensource.apple.com/tarballs/xnu/otool(object file displaying tool) :查詢依賴庫, 針對目標(biāo)文件的展示工具,用來發(fā)現(xiàn)應(yīng)用中使用到了哪些系統(tǒng)庫,調(diào)用了其中哪些方法,使用了庫中哪些對象及屬性,它是Xcode自帶的常用工具Interface Inspector允許我們研究任何Mac App運行時候的UI結(jié)構(gòu)和屬性編輯二進(jìn)制文件,系統(tǒng)自帶的vim就可以,hex 編輯器class-dump:可以從面相對象編程的OC二進(jìn)制文件中提取類的信息。這就是搜集信息的第三個層面,程序代碼中蘊含的信息。otx反匯編時其實已經(jīng)包含零零碎碎的信息啦,只不過class-dump的信息是按面向?qū)ο蟮乃枷胝磉^的。offset:目標(biāo)代碼不好定位,offset可以方便地把otx中的內(nèi)存地址轉(zhuǎn)換成二進(jìn)制文件中的偏移。找到目標(biāo)函數(shù)的虛擬內(nèi)存地址。工具: hopper 或 otx 都可以滿足。insert_dylib: 動態(tài)庫dylib修改mach_inject: 進(jìn)程注入
方法
界面分析 -> 動態(tài)分析 -> 靜態(tài)分析 -> 動態(tài)庫注入 -> …
界面分析:在Mac上面也有類似iOS Reveal的工具叫做Interface Inspector。動態(tài)分析: 動態(tài)跟蹤的方法有多種,除了iOS逆向中使用的Frida, lldb , Mac上面還可以使用Dtrace。 通過執(zhí)行了一些操作去分析問題。靜態(tài)分析: 根據(jù)假設(shè)的某個條件(因素)靜止不變?nèi)シ治?。動態(tài)庫注入: 動態(tài)庫注入可以通過DYLD_INSERT_LIBRARIES注入,也可以直接注入到可執(zhí)行文件的Load Command。動態(tài)調(diào)試,主要工具 gdb 首先,ps -ax|grep “要破解的程序名”,得到其進(jìn)程 id,如 1234 接著,使用 gdb,用 attach “進(jìn)程 id” 然后,bt 查看函數(shù)調(diào)用棧,找到可疑函數(shù)后,使用 up 繼續(xù),用 si 等命令單步跟蹤,set 等命令改變參數(shù)的值 再來,使用 disassemble 命令,查看確認(rèn)要修改的二進(jìn)制字符串 最后,用十六進(jìn)制編輯器查找并修改二進(jìn)制字符串 2. 動靜結(jié)合,主要工具 otool + gdb a. otool -tV “目標(biāo)程序” > dis.asm b. 文本編輯器打開 dis.asm,查找可疑的函數(shù) c. 使用 gdb 打開目標(biāo)程序,并在可疑的函數(shù)中設(shè)置斷點,如 b *0x00001234 d. run 運行程序,斷點處,si 等跟蹤, set 設(shè)置關(guān)鍵參數(shù)值 e. 用計算器計算需要修改的序列偏移,或 disassemble 命令 f. 用十六進(jìn)制編輯器查找并修改二進(jìn)制字符串
常用的命令:
attach 1234
b *0x1234
clear *0x1234
bt
disassemble
si
finish
set $eax
gcc test.c -o test
otool -tV target > dis.asm
動態(tài)調(diào)試
工具:Hopper+LLDB+Radare2
lldb /Applications/Camtasia\ 2020.app
附錄
參考鏈接
《macOS軟件安全與逆向分析》隨書源碼MacOS逆向技術(shù)基礎(chǔ)-第一版class-dumpmach_injectinsert_dylib
柚子快報激活碼778899分享:OSX macOS逆向分析基礎(chǔ)
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。