1. 程式人生 > >iOS逆向筆記彙總

iOS逆向筆記彙總

####一.砸殼dumpdecrypted
1, ssh [email protected][裝置ip] (iP地址為裝置的iP地址)
2, ps -e (檢視需要砸殼的程序)
3, cycript -p (附加程序)
4, [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask][0] (檢視app在documents的地址)
5.scp ~/dumpdecrypted.dylib [email protected][裝置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 --recursive https://github.com/theos/theos.git /opt/theos (下載直接安裝到/opt/theos目錄下)
2.安裝dkkg ldid(安裝前需要下載homebrew套件管理工具)
homebrew:/usr/bin/ruby -e “$(curl -fsSL

https://raw.githubusercontent.com/Homebrew/install/master/install)”
brew install dpkg
brew install ldid
3.建立nic.pl工程。
export THEOS=/opt/theos
$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 [email protected][ios裝置ip] (連線越獄手機的裝置)
openssh預設密碼:alpine
scp命令:
將本地檔案拷貝到遠端:
scp <本地檔案> [email protected]<遠端ip地址>:<遠端目錄>
將遠端檔案拷貝到本地:
scp [email protected]<遠端ip>:<遠端檔案目錄> <本地目錄>

####七.iFiles,iFunBox檔案管理工具
iFiles ios裝置檢視檔案系統
iFunBox mac裝置檢視ios裝置的檔案系統

####八.syslogd日誌清空
cydia下載syslogd外掛
cat /dev/null > /var/log/syslog

####九.二進位制檔案提取dyld_decache
因為ios 很多二進位制庫檔案被隱藏許多framwork庫檔案放進了cache裡面
chmod 777 /path/to/dyld_decache 9 (新增許可權)
匯出framework隱藏的二進位制檔案
./dyld_decache[v0.1c] -o <輸出目錄> dyld_shared_cache_armx

####十.reveal逆向分析
cydia中的外掛
Reveal Loader 1.0.0
安裝後,請重啟手機
連線除錯的程序就可以看到當前的ui

####十一.debugserver (動態除錯,附加子程序)
debugserver

  1. scp [email protected][iosip]:/Developer/user/bin/debugserver ~/debugserver
  2. lipo -thin armv7s ~/debugserver -output ~/debugserver (幫它減肥)
  3. /opt/theos/bin/ldid -Sent.xml debugserver (http://iosre.com/ent.xml) (新增task_fore_pid許可權)
    4.scp ~/debugserver [email protected]:/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 [email protected] -p mac埠
debugserver *:1234 -a “springboard”
4.將本地mac埠轉發到ios

5.lldb除錯
/Applications/Xcode.app/Contents/Developer/usr/bin/lldb

作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:656315826,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!希望幫助開發者少走彎路。

文章轉自:https://bbs.pediy.com/thread-223442.htm