IOS安全 逆向 反編譯5 Mach O

2021-10-01 18:19:13 字數 2287 閱讀 5411

介面分析

cycript、reveal

**分析

對mach-o檔案的靜態分析

machoview、class-dump、hopper disassembler、ida等

動態除錯

debugserver、lldb

4.**編寫

必要時還可能需要重新簽名、打包ip

class-dump

命令格式為:

class-dump -h mach-o檔案路徑 -o 標頭檔案存放目錄

-h表示要生成標頭檔案

-o用於制定標頭檔案的存放目錄

hopper disassmbler

hopper disassmbler能夠將mach-o檔案的機器語言**反編譯成彙編**、oc偽**或者swift偽**。

正常情況下,oc**編譯後生成彙編**,彙編**編譯後再生成機器碼,而彙編**和機器碼是一一對應的,所以可以通過機器碼反編譯成彙編**,但是oc**和彙編**不是一一對應的,所以只能生成oc的偽**。

我們通常也想反彙編一下系統庫檔案,那麼系統庫的mach-o可執行檔案又在**呢?

系統動態庫快取

注意:由於系統動態庫快取檔案比較大,我們通常只需要分析其中的某個系統庫(例如uikit庫),我們可以將這個系統動態庫快取檔案拆分成乙個個的系統庫mach-o檔案。具體做法如下:

可找到dyld原始碼中的launch-cache/dsc_extractor.cpp

將#if 0前面的**刪除(包括#if 0),把最後一行的#endif也刪掉

編譯dsc_extractor.cpp

clang++ -o dsc_extractor dsc_extractor.cpp

使用dsc_extractor

./dsc_extractor 動態庫共享快取檔案的路徑 用於存放抽取結果的資料夾

什麼是mach-o

mach-o是mach object的縮寫,是mac\ios上用於儲存程式、庫的標準格式

中,檢視到mach-o格式的詳細定義。具體是在external_headers/mach-o/loader.**件中。

#define mh_object   0x1     /* relocatable object file */

#define mh_execute  0x2     /* demand paged executable file */

#define mh_fvmlib   0x3     /* fixed vm shared library file */

#define mh_core     0x4     /* core file */

#define mh_preload  0x5     /* preloaded executable file */

#define mh_dylib    0x6     /* dynamically bound shared library */

#define mh_dylinker 0x7     /* dynamic link editor */

#define mh_bundle   0x8     /* dynamically bound bundle file */

#define mh_dylib_stub   0x9     /* shared library stub for static */

/*  linking only, no section contents */

#define mh_dsym     0xa     /* companion file with only debug */

/*  sections */

#define mh_kext_bundle  0xb     /* x86_64 kexts */

常見的mach-o檔案

我們可以在xcode中檢視target的mach-o檔案型別。

build settings->linking->mach-o type

mach-o檔案的結構

mach-o基本結構.png

我們可以使用工具檢視mach-o檔案的結構。

命令列工具file

file:檢視mach-o的檔案型別

file 檔案路徑

命令列工具otool

檢視mach-o特定部分和段的內容

命令列工具lipo

常用於多架構mach-o檔案的處理

gui工具

machoview

universal binary(通用二進位制檔案)

dyld和mach-o

dyld用於載入以下型別的mach-o檔案

ipa檔案反編譯 iOS 逆向工程 反編譯ipa包

那麼1 拿到ipa我們可以幹點什麼?部分ipa包資源 其中對我們有用的是影象和開發者。資源可以直接拿去直接使用 info.plist檔案包含的這個專案的資訊 和專案名稱一致的這個exec檔案 我們要反編譯它 exec檔案 那麼2 怎麼反編譯呢?網上有很多的工具,這裡先介紹class dump,其他的...

Android 逆向 反編譯

將.apk檔案字尾名更改為.zip,並將其解壓 圖1.png 使用dex2jar工具來反編譯 c users administrator desktop dex2jar 2.0 dex2jar 2.0 d2j dex2jar c users admi nistrator desktop dex 1 ...

Android 逆向 反編譯

將.apk檔案字尾名更改為.zip,並將其解壓 圖1.png 使用dex2jar工具來反編譯 圖2.png 在dex2jar 2.0目錄下獲取到classes dex2jar.jar檔案,並使用jd gui開啟 圖3.png 使用apktool工具來反編譯資源檔案 apktool d 1.apk圖4...