最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

揭開iOS逆向解密的神秘面紗

 更新時(shí)間:2018年06月07日 08:40:46   作者:騷客  
這篇文章主要給大家介紹了關(guān)于iOS逆向解密的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

學(xué)習(xí)和了解逆向工程,可以幫助我們分析競(jìng)品和自己喜歡的APP的開發(fā)架構(gòu)和某些功能的大體實(shí)現(xiàn)思路,也可以自己手動(dòng)對(duì)其它APP大刀闊斧進(jìn)行二次加工,滿足自己的需求。 學(xué)習(xí)iOS逆向一段時(shí)間了,這里簡(jiǎn)單做個(gè)總結(jié),揭開iOS逆向的神秘面紗。

Mac遠(yuǎn)程登錄iPhone

iOS和Mac OS X都是基于Darwin(蘋果的一個(gè)基于Unix的開源系統(tǒng)內(nèi)核),所以iOS中同樣支持終端的命令行操作。

在逆向工程中,我們經(jīng)常會(huì)通過命令行來操縱iPhone。為了能夠讓Mac終端中的命令行能作用在iPhone上,我們得讓Mac和iPhone建立連接。連接有兩種方式:wifi連接和usb連接。

先在越獄軟件上安裝ssh插件OpenSSH ,命令行下和應(yīng)用交互的插件Cycript
讓越獄手機(jī)和mac電腦在同一個(gè)局域網(wǎng)下(為了能夠通過ssh服務(wù)從mac電腦訪問手機(jī))
在mac的命令行終端 通過ssh服務(wù)登錄手機(jī) 輸入ssh root@手機(jī)ip。默認(rèn)情況下的root密碼是alpine。root密碼可以自己修改。
然后在手機(jī)上運(yùn)行程序,在mac終端上利用ps -A 查看手機(jī)當(dāng)前運(yùn)行的進(jìn)程,找到進(jìn)程id后便可以利用cycript進(jìn)行一些列操作。例如:進(jìn)入當(dāng)前運(yùn)行著的微信進(jìn)程的cycript狀態(tài)cycript -p WeChat

采用wifi連接有時(shí)候會(huì)出現(xiàn)卡頓延遲的現(xiàn)象,所以我通常采用usb連接。

Mac上有個(gè)服務(wù)程序usbmuxd(它會(huì)開機(jī)自動(dòng)啟動(dòng)),可以將Mac的數(shù)據(jù)通過USB傳輸?shù)絠Phone
我使用了兩個(gè)腳本進(jìn)行登錄:

  • python ~/iOS/tcprelay.py -t 22:10010進(jìn)行端口的映射
  • ssh -p 10010 root@localhost usb的登錄

Cycript的使用

Cycript是Objective-C++、ES6(JavaScript)、Java等語(yǔ)法的混合物,可以用來探索、修改、調(diào)試正在運(yùn)行的Mac\iOS APP。官網(wǎng):http://www.cycript.org

比如一些簡(jiǎn)單的使用:

// 微信進(jìn)程
cycript -p WeChat
// 獲得沙盒路徑
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0]
// 打印當(dāng)前頁(yè)面view的層級(jí)
UIApp.keyWindow.recursiveDescription().toString()

主要搭配Reveal使用,從Reveal中獲得某個(gè)界面或者view所屬的類或控制器,然后拿到該類或控制器利用cycript進(jìn)行調(diào)試。比如,知道了一個(gè)view對(duì)應(yīng)的類為testView,想把該view從當(dāng)前界面移除,達(dá)到不顯示的效果:

[testView removeFromSuperview];

代碼Hook分析

如果要逆向App的某個(gè)功能少不了代碼的分析。

1.通過上面的分析,找到某個(gè)view對(duì)應(yīng)的類后,就需要導(dǎo)出該類對(duì)應(yīng)的頭文件進(jìn)行具體的分析了。

2.首先找到App的二進(jìn)制文件(Mach-O類型),(使用iFunBox把該文件導(dǎo)出到Mac上)然后使用class-dump工具導(dǎo)出其中的所有頭文件,這些頭文件中可以看到其中的屬性和方法。class-dump -H Mach-O文件路徑 -o 頭文件存放目錄

3.如果要查看Mach-O文件完整信息,建議用MachOView。otool -l打印所有的 Load Commands,建議搭配grep進(jìn)行正則過濾。otool -L 可以查看使用的庫(kù)文件。

4.頭文件分析完畢后,就可以利用theos進(jìn)行越越代碼的開發(fā)了,編譯生成Tweak插件(deb格式)。

利用nic.pl指令,選擇iphone/tweak,創(chuàng)建一個(gè)tweak工程。
在這個(gè)tweak工程中編輯Tweak.xm文件,編寫自己的越獄代碼。
開發(fā)完成后利用make package打包和make install安裝到手機(jī)。重啟應(yīng)用,你會(huì)發(fā)現(xiàn)對(duì)應(yīng)的功能已經(jīng)根據(jù)hook的代碼改變了。
原理:iOS在越獄后,會(huì)默認(rèn)安裝一個(gè)名叫mobilesubstrate的動(dòng)態(tài)庫(kù),它的作用是提供一個(gè)系統(tǒng)級(jí)的入侵管道,所有的tweak都可以依賴它來進(jìn)行開發(fā)。在目標(biāo)程序啟動(dòng)時(shí)根據(jù)規(guī)則把指定目錄的第三方的動(dòng)態(tài)庫(kù)加載進(jìn)去,第三方的動(dòng)態(tài)庫(kù)也就是我們寫的破解程序,從而達(dá)到修改內(nèi)存中代碼邏輯的目的。

5.有時(shí)候想看某個(gè)類中的某個(gè)方法的實(shí)現(xiàn)以及調(diào)用邏輯,就需要用到Hopper Disassembler工具。

theos的常用語(yǔ)法

  • %hook ,%end : hook一個(gè)類的開始和結(jié)束
  • %log:打印方法調(diào)用詳情
  • HBDebugLog:跟NSLog類似
  • %new:添加一個(gè)新的方法的時(shí)候使用
  • %orig:函數(shù)原來的代碼邏輯
  • %ctor:在加載動(dòng)態(tài)庫(kù)時(shí)調(diào)用
  • logify.pl:可以將一個(gè)頭文件快速轉(zhuǎn)換成已經(jīng)包含打印信息的xm文件
  • 如果有額外的資源文件(比如圖片),放到項(xiàng)目的layout文件夾中,對(duì)應(yīng)著手機(jī)的根路徑/

砸殼(脫殼)

如果使用越獄手機(jī)直接從pp助手下載下來的部分應(yīng)用免去了我們自己脫殼的過程。但是如果是從App Store下載下來的應(yīng)用,App Store已經(jīng)為該應(yīng)用進(jìn)行了加密,再使用class-dump是無法導(dǎo)出頭文件的,這是時(shí)候就需要對(duì)APP進(jìn)行脫殼操作了。

脫殼工具有兩種,Clutch 和 dumpdecrypted

Clutch :

在Mac終端登陸到iPhone后,利用Clutch脫殼
Clutch -i 列舉手機(jī)中已安裝的應(yīng)用中加密的應(yīng)用。
Clutch -d 應(yīng)用bundleid 對(duì)加密的應(yīng)用脫殼,脫殼成功后會(huì)生產(chǎn)新的Match-O文件。對(duì)這個(gè)新的文件進(jìn)行class-dump操作即可。

有時(shí)候使用Clutch脫殼,會(huì)出現(xiàn)失敗的情況,比如脫殼微信的時(shí)候就會(huì)出現(xiàn)錯(cuò)誤。這個(gè)時(shí)候就需要使用dumpdecrypted:

終端進(jìn)入dumpdecrypted.dylib所在的目錄 var/root
使用環(huán)境變量 DYLD_INSERT_LIBRARIES 將 dylib 注入到需要脫殼的可執(zhí)行文件(可執(zhí)行文件路徑可以通過ps -A查看獲?。?br /> 執(zhí)行命令 DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可執(zhí)行文件路徑 即可完成脫殼操作。

結(jié)語(yǔ)

了解以上逆向的流程后,你可以實(shí)現(xiàn)一些有趣的功能,比如:視頻客戶端去廣告,修改微信運(yùn)動(dòng)步數(shù),防止微信消息測(cè)回,微信自動(dòng)搶紅包等功能。同時(shí),也會(huì)在自己客戶端的開發(fā)過程中更注重信息的安全保護(hù)。研究逆向,一定要善于利用各種工具,并且做好不斷失敗的準(zhǔn)備,愈挫愈勇,終會(huì)成功。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • IOS 中CATextLayer繪制文本字符串

    IOS 中CATextLayer繪制文本字符串

    這篇文章主要介紹了IOS 中CATextLayer繪制文本字符串的相關(guān)資料,希望通過本能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • IOS NSUserDefault 記住用戶名及密碼功能的實(shí)例代碼

    IOS NSUserDefault 記住用戶名及密碼功能的實(shí)例代碼

    這篇文章主要介紹了IOS NSUserDefault 記住用戶名及密碼功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2017-09-09
  • iOS實(shí)現(xiàn)底部彈出PopupWindow效果 iOS改變背景透明效果

    iOS實(shí)現(xiàn)底部彈出PopupWindow效果 iOS改變背景透明效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)底部彈出PopupWindow效果,iOS改變背景透明效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • iOS中使用UIDatePicker制作時(shí)間選擇器的實(shí)例教程

    iOS中使用UIDatePicker制作時(shí)間選擇器的實(shí)例教程

    這篇文章主要介紹了iOS中使用UIDatePicker制作時(shí)間選擇器的實(shí)例教程,實(shí)例中未選中的時(shí)間項(xiàng)目會(huì)講解一個(gè)將其變透明的方法,非常給力,需要的朋友可以參考下
    2016-05-05
  • IOS中微信小程序播放緩存的音頻文件的方法

    IOS中微信小程序播放緩存的音頻文件的方法

    本文給大家分享的是如何在微信小程序中播放緩存到本地的音頻文件的方法,區(qū)分了IOS和安卓的不同策略,非常不錯(cuò),推薦給大家
    2017-12-12
  • ios開發(fā)中的容錯(cuò)處理示例詳解

    ios開發(fā)中的容錯(cuò)處理示例詳解

    最近發(fā)現(xiàn)還是有很多朋友在問類似解析時(shí)容錯(cuò)問題怎么解決,所以下面這篇文章主要給大家介紹了關(guān)于ios開發(fā)中的容錯(cuò)處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們一起來看看吧
    2018-05-05
  • iOS實(shí)現(xiàn)動(dòng)態(tài)自適應(yīng)標(biāo)簽

    iOS實(shí)現(xiàn)動(dòng)態(tài)自適應(yīng)標(biāo)簽

    這篇文章主要為大家詳細(xì)介紹了iOS動(dòng)態(tài)自適應(yīng)標(biāo)簽的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • IOS開發(fā)過程中的消息通知--小紅點(diǎn)

    IOS開發(fā)過程中的消息通知--小紅點(diǎn)

    本文主要介紹了IOS開發(fā)過程中的消息通知--小紅點(diǎn)的相關(guān)知識(shí)。大致分為兩種方法:系統(tǒng)方法和自定義方法。下面跟著小編一起來看下吧
    2017-04-04
  • Swift Self詳解及簡(jiǎn)單實(shí)例代碼

    Swift Self詳解及簡(jiǎn)單實(shí)例代碼

    這篇文章主要介紹了Swift Self詳解及簡(jiǎn)單實(shí)例代碼的相關(guān)資料,這里對(duì)self 進(jìn)行了詳細(xì)介紹并附實(shí)例代碼,需要的朋友可以參考下
    2016-12-12
  • iOS二維碼的生成和掃描

    iOS二維碼的生成和掃描

    這篇文章主要為大家詳細(xì)介紹了iOS二維碼生成和掃描的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評(píng)論

海伦市| 建宁县| 永春县| 大足县| 苗栗县| 女性| 贵德县| 宝坻区| 阿克陶县| 东阳市| 兰溪市| 阿鲁科尔沁旗| 霸州市| 盐源县| 通许县| 盐山县| 长沙县| 志丹县| 福安市| 汤原县| 成安县| 会昌县| 苏尼特右旗| 大安市| 浏阳市| 商洛市| 三河市| 马鞍山市| 莱西市| 新河县| 鹤岗市| 永善县| 高邮市| 岗巴县| 杭锦后旗| 韶关市| 通海县| 彰化市| 左权县| 北安市| 宁安市|