介面分析
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...