iOS逆向筆記彙總
一.砸殼dumpdecrypted
1, ssh root@[裝置ip] (iP地址為裝置的iP地址)
2, ps -e(檢視需要砸殼的程序)
3, cycript -p(附加程序)
4, [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask][0](檢視app在documents的地址)
5.scp ~/dumpdecrypted.dylib root@[裝置ip]:/var/mobile/Containers/Data/Application/2B4C6281-C015-4FF3-A8EC-5E5C7554D447/Documents (將砸殼的動態庫檔案存入到documets目錄下)
6.DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib/var/mobile/Containers/Bundle/Application/3F00BB3C-F56E-46B1-A785-562E0C130002/WeChat.app/WeChat(砸殼)
7.documents下的WeChat.decrypted為砸殼後的檔案
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:656315826,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!希望幫助開發者少走彎路。
二.匯出標頭檔案class-dump
class-dump-s -S -H <砸殼後的檔案> -o <檔案存放的目錄>
三.THEOS越獄開發工具包
1.sudo git clone --recursiveofollow,noindex">https://github.com/theos/theos.git /opt/theos(下載直接安裝到/opt/theos目錄下)
2.安裝dkkg ldid(安裝前需要下載homebrew套件管理工具)
homebrew:/usr/bin/ruby -e "THEOS/bin/nic.pl
4.根據不同的需求建立不同的包,然後make package install 執行3個步驟 編譯,打包,安裝(Makefile編譯的檔案後面會有文件)
5.將生成的deb安裝包放入/var/root/Media/Cydia/AutoInstall目錄下面。
四.常用Tweak.xm預處理指令.(可以去http://iphonedevwiki.net/index.php/Logos 檢視)
%hook classname需要hook的類名字 %hook a %end %orig 列印原始函式,可以修改原始引數 %orig(@“fix the param”,param); %log該指令在%hook內部使用將函式的類名,引數等資訊寫入到syslog %log((NSString *)@“iosre”,(NSString *)@“debug”) %group hook分組需要%init來初始化這個分組, %group a %hook -(void)a{ NSLog(@“aaaaa”); } %end %end %group b %hook -(void)b{ NSLog(@“bbbb”); } %end %end %hook springboard -(void)method{ if(true){ %init(a); }else{ %init(b); } } %ctor完成初始化init方法的作用(不需要以%end結尾) %ctor{ %init(); } %new %hook c 動態建立一個c的class(相當於重新建立一個c的class) %new -(void)namespacenewmethod{ NSLog(@“We’ve added a new method to c”); } %end %c 該指令的等同於objc_getclass或NSClassFromString,即動態獲取一個類的定義,在%hook或%ctor內使用
五.cycript指令碼語言
可以通過獲取這個物件的記憶體地址來操作它的函式或者屬性.
uialertview:0x166b4fb0比如說這個uialertview在記憶體中的地址是0x166b4fb0,可以直接呼叫它的api [#0x166b4fb0 show] #檢視當前佈局 UIApp.keyWindow.recursiveDescription().toString() #檢視當前控制元件的父級元素 #控制元件在記憶體中的16進位制數地址.nextResponder() control+d退出cycript cycript -p [程序id]編輯這個程序中的指令碼
六.openssh
ssh root@[ios裝置ip](連線越獄手機的裝置)
openssh預設密碼:alpine
scp命令:
將本地檔案拷貝到遠端:
scp <本地檔案> root@<遠端ip地址>:<遠端目錄>
將遠端檔案拷貝到本地:
scp root@<遠端ip>:<遠端檔案目錄> <本地目錄>
七.iFiles,iFunBox檔案管理工具
iFiles ios裝置檢視檔案系統
iFunBoxmac裝置檢視ios裝置的檔案系統
八.syslogd日誌清空
cydia下載syslogd外掛
cat /dev/null > /var/log/syslog
九.二進位制檔案提取dyld_decache
因為ios 很多二進位制庫檔案被隱藏許多framwork庫檔案放進了cache裡面
chmod 777 /path/to/dyld_decache9 (新增許可權)
匯出framework隱藏的二進位制檔案
./dyld_decache[v0.1c] -o <輸出目錄> dyld_shared_cache_armx
十.reveal逆向分析
cydia中的外掛
Reveal Loader 1.0.0
安裝後,請重啟手機
連線除錯的程序就可以看到當前的ui
十一.debugserver (動態除錯,附加子程序)
debugserver
- scp root@[iosip]:/Developer/user/bin/debugserver ~/debugserver
- lipo -thin armv7s ~/debugserver -output ~/debugserver(幫它減肥)
-
/opt/theos/bin/ldid -Sent.xml debugserver (http://iosre.com/ent.xml
)(新增task_fore_pid許可權)
4.scp ~/debugserver root@iosip:/user/bin/debugserver(將處理好的debugserver放回去)
5.debugserver ip:port -a "mobilesms" (附加mobilesms程序)
debugserver -x background ip:port /application/mobilesms.app/mobilesms(啟動mobilesms程序)
十二.lldb
/Applications/Xcode.app/Contents/Developer/usr/bin/lldb
使用usbmuxd能提升ssh的速度,lldb連線debugserver時間縮短至15秒內
usbmuxd
1./Users/beyond/Code/USBSSH(將python-client目錄下的tcprelay.py和usbmuxd.py兩檔案,複製到工作目錄)
2./Users/beyond/Code/USBSSH/tcprelay.py -t iOS的埠:mac上的埠 (即可將mac上的埠轉發到iOS上的埠)
3.debugserver附加springboard
ssh root@localhost -p mac埠
debugserver *:1234 -a "springboard"
4.將本地mac埠轉發到ios
5.lldb除錯
/Applications/Xcode.app/Contents/Developer/usr/bin/lldb
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:656315826,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!希望幫助開發者少走彎路。