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匯出標頭檔案。那麼我們得做三件事:
- 安裝class-dump。
- 獲得sing app的程式檔案。
- 執行命令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,這個就是編譯後的主程式了(如下圖),將它匯出到桌面吧。
激動人心時刻到啦!使用命令class-dump-z ktv,what?!這都是神馬東西……
12345678910111213141516171819202122232425262728293031 | /** * This header is generated by class-dump-z 0.2a.相關推薦iOS 使用Class-dump分析App內部實現前言 前幾天在網上無意間看到了class-dump這個詞語,出於好奇就查了下,沒想到挺有意思的:簡單來說,就是可以將objc編譯後程序中的宣告資訊匯出檢視,有點類似於源程式的.h標頭檔案。 這個有什麼用呢?國內搜尋class-dump能看到一些使用class-dump匯出Apple Fra class-dump分析app1.下載配置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 內部的推送開關按鈕就會這樣 |