1. 程式人生 > >iOS 使用Class-dump分析App內部實現

iOS 使用Class-dump分析App內部實現

前言

前幾天在網上無意間看到了class-dump這個詞語,出於好奇就查了下,沒想到挺有意思的:簡單來說,就是可以將objc編譯後程序中的宣告資訊匯出檢視,有點類似於源程式的.h標頭檔案。

這個有什麼用呢?國內搜尋class-dump能看到一些使用class-dump匯出Apple Framework私有API的教程。我對這個沒什麼興趣。既然class-dump是根據objc語言特性來實現的,那麼在理論上應該也可以對ios的app使用吧。之前對Appstore的一款App實現方式感興趣,這次可以試試看個究竟了。

那麼,我們的目標分析是一款唱歌軟體,具體名字就不公佈了,這裡就以sing代替吧。

下面我們需要一臺iOS系統的已越獄真機一臺(例如itouch、iphone),mac系統主機一臺。軟體若干(稍後會介紹)

一、Frist try

我的思路很簡單:嘗試直接呼叫class-dump程式對sing app匯出標頭檔案。那麼我們得做三件事:

  1. 安裝class-dump。
  2. 獲得sing app的程式檔案。
  3. 執行命令class-dump singapp,匯出標頭檔案。

先安裝class-dump吧。class-dump大概有三個版本(它們之間的區別和詳細介紹在此),我們直接下載class-dump-z 0.2a,解壓後將mac_x86目錄中的class-dump-z程式檔案拷貝至/usr/local/bin目錄。這樣就算安裝完成啦。

然後找到Sing app的主程式檔案。確保我們的真機已經安裝了Sing app後。直接使用iExploer(或iFunbox)開啟真機的應用程式目錄,開啟ktv.app子目錄,按照Size(檔案大小)排序,你會看到一個與父目錄同名的程式檔案ktv,這個就是編譯後的主程式了(如下圖),將它匯出到桌面吧。

iexplorer

激動人心時刻到啦!使用命令class-dump-z ktv,what?!這都是神馬東西……

12345678910111213141516171819202122232425262728293031/** * This header is generated by class-dump-z 0.2a.
* class-dump-z is Copyright (C) 2009 by KennyTM~, licensed under GPLv3. * * Source: (null) */@protocolXXEncryptedProtocol_6cb0f0-(?)XXEncryptedMethod_56bb35;-(?)XXEncryptedMethod_56bb29;-(?)XXEncryptedMethod_56bb1d;-(?)XXEncryptedMethod_56bb15;-(?)XXEncryptedMethod_56bb0e;-(?)XXEncryptedMethod_56bafa;-(?)XXEncryptedMethod_56bae6;-(?)XXEncryptedMethod_56bad5;-(?)XXEncryptedMethod_569e54;-(?)XXEncryptedMethod_56bacd;-(?)XXEncryptedMethod_56baa6;-(?)XXEncryptedMethod_56ba8a;-(?)XXEncryptedMethod_56ba79;-(?)XXEncryptedMethod_56ba74;-(?)

相關推薦

iOS 使用Class-dump分析App內部實現

前言 前幾天在網上無意間看到了class-dump這個詞語,出於好奇就查了下,沒想到挺有意思的:簡單來說,就是可以將objc編譯後程序中的宣告資訊匯出檢視,有點類似於源程式的.h標頭檔案。 這個有什麼用呢?國內搜尋class-dump能看到一些使用class-dump匯出Apple Fra

class-dump分析app

1.下載配置class_dump class dump是一個命令列工具,用來監測儲存在Mach-O二進位制檔案理的Objective-C執行時資訊。它為類(class),分類(category)和協議

Android Bundle App內部實現原理

core中的程式碼 首先我們在程式碼中呼叫了 manager = SplitInstallManagerFactory.create(this) 1.SplitInstallManagerFactory.class public class SplitIn

iOS class-dump反編譯和程式碼混淆

參考連結 一、class-dump反編譯 1、由於/usr/bin/在OS X 10.11上沒有許可權了,將解壓後的class-dump,拖入到 /usr/local/bin/class-dump中 2、開啟終端,cd /usr/local/bin/c

iOS Class結構分析

類在objective-C中是objc_class 結構體指標 typedef struct objc_class *Class; 在objc/runtime.h中objc_class結構體的定義如下: struct objc_class { Class i

class-dump分析可執行/app檔案的函式定義

下面是我對自己寫的一個demo程式,GKDemo.app用class-dump解析後得到的結果: note: /Users/tonys/Library/Developer/Xcode/DerivedData/GKDemo-bgpwxsribkdlyphduyucdubnq

JQeury添加和刪除class內部實現代碼(簡化版)

就是 while bsp span indexof val 元素 move 添加 下面是JQuery對元素class操作的簡單實現,請看代碼: 添加class: //增加class function addClass(elem,value)

iOS效能分析-Xcode Instruments Allocations 分析APP記憶體使用情況

All Heap & Anonymous VM 堆記憶體+虛擬記憶體 All Heap Allocations 堆記憶體 All Anonymous VM 虛擬記憶體 # Persisten

JAVA中的集合原始碼分析一:ArrayList的內部實現原理

作為以java為語言開發的android開發者,集合幾乎天天都要打交道,無論是使用頻率最高的ArrayList還是HashSet,都頻繁的出現在平時的工作中。但是其中的原理之前卻一直沒深入探究,接下來記錄一下這次自己學習ArrayList原始碼的過程。 一.構造方法:

HTTP Live Streaming直播(iOS直播)技術分析實現

   不經意間發現,大半年沒寫部落格了,自覺汗顏。實則2012後半年(2018年注:這是我以前寫的文章,不要奇怪時間了),家中的事一樣接著一樣發生,實在是沒有時間。快過年了,總算忙裡偷閒,把最近的一些技術成果,總結成了文章,與大家分享。   前些日子,也是專案需要,花了一

iOS逆向開發- class-dump使用中出現的一些問題

​最近正在嘗試逆向App的學習和研究,其中不乏出現一些問題,在此主要是分享一些學習中遇到的問題和解決方法以及部分原理 1.class-dump無法拖入/usr/bin目錄(這個問題是大多數人都邁不過去的坎) ​原因:Mac當前系統為Mac OS X 10.1

iOS開發之APP內部切換語言

前言 iOS開發中,隨著APP越來越完善,很多APP都做了國際化,也實現了APP內部切換語言。 原理 國際化都會走到NSBundle的- (NSString *)localizedStringForKey:(NSString *)key value:(nullable NSString *)value

swift3.0-iOS app內部語言國際化(本地化)

1. 首先要配置localizable.strings,如下圖: 詳細的配置過程這裡就不說了,可以另行百度。今天主要說的是怎樣在內部切換語言環境。 2.  新建類:LanguageHelper.s

iOS攻防:class-dump 與 Dumpdecrypted 使用

1 class dump class dump 是一個用於檢查儲存在 Mach-O 檔案中的 objective-c 執行時資訊的工具,攻防中最常用、實用的命令列工具。 1.1 class dump 好玩在哪? class dump 絕對可以滿足你的好奇心。你可以通過 clas

iOS逆向之分析微信導航欄實現

最近需要實現微信的毛玻璃導航欄效果,嘗試了各種方式後還是有點差別,這在追求完美的設計師眼裡是絕不能忍的,於是只好“看看”原作是怎麼實現的。在逆向分析了微信的實現後,發現微信的實現十分特殊,文末會告訴大家答案:) 環境準備 一臺越獄裝置 OpenSSH 外掛 Cycript 外

iOS App 內部跳轉(設定、Wifi、藍芽...)關鍵詞

1、iOS 10 以前: 蜂窩網路:prefs:root=MOBILE_DATA_SETTINGS_ID Wi-Fi:prefs:root=WIFI 定位服務:prefs:root=LOCATION_SERVICES 個人熱點:prefs:root=INTERNET_TETHERING 關於本機:prefs

iOS Class結構體分析~詳解

//聯絡人:石虎  QQ: 1224614774暱稱:嗡嘛呢叭咪哄 objc_class結構體 一、類在OC中是objc_class的結構體指標   typedef struct ob

IOS SDWebImage內部實現原理

想必大家都很熟悉SDWebImage了,專案中也經常用。可大家知道它的實現原理嗎?今天就跟大家分享一下。 先看一下下面這幅圖: 圖片解釋:記憶體層面的相當是個快取器,以Key-Value的形式儲存圖片。當記憶體不夠的時候會清除所有快取圖片。用搜索檔案系統

android 實現app內部檢測最新版本 自動升級到最新版本

app現在基本都有版本更新這個功能,實現起來也很簡單 截圖效果: 1. 獲取當前app的版本號 /** * 獲取版本號 * * @throws PackageManager.NameNotFoundException */

教你一招:ios app內部直接呼叫系統設定頁面

   相信所有開發ios app 的開發者們都有過這樣的經歷,那就是當app 內有推送,訪問相簿,等等功能時,如果我們第一次選擇了拒絕 或者是不接受推送訊息,那麼我們app 內部的推送開關按鈕就會這樣