帶你玩一波騷操作,如何破解抓包工具Charles!
一、前言
我們在進行應用開發過程中有時候可以需要進行抓包測試資料,比如模擬服務端的下發資料和我們客戶端的請求引數資料,特別是測試人員在進行測試的過程中都會進行抓包,當然我們在破解逆向的過程中也是需要用到抓包工具,因為我們抓到資料包可能就是我們破解的突破口,那麼我們可能常用的都是Fiddler工具,但是這個工具有一個弊端就是隻能在Windows系統中使用,但是還有一個厲害的工具就是跨平臺工具Charles,之所以他是跨平臺的就是因為他使用Java語言開發的,而且也非常好用。但是這個工具有一個不好的地方就是有一個購買功能,如果不購買的話當然可以使用,但是有時間限制和各種提示,看著也挺煩的,網上也有相應的破解教程,但是並沒有破解的步驟,所以這個就由我來做吧。
二、逆向分析
首先我們去官網下載一個Charles工具,這裡下載了Mac中的工具:https://www.charlesproxy.com/download;下載之後直接安裝就可以了,然後我們開啟使用:
這時候我們看到上面有一個提示就是30天的試用期,然後每次開啟都有這樣的提示,而且進入使用的時候當需要檢視一條請求資訊的時候也會需要等待很久,感覺特別不舒服,所以我們需要破解他,破解他是因為他是跨平臺的,的確在Mac系統中這個工具還是非常重要的,其次是他是Java編寫的,破解難度低,要是Windows中的工具讓我去破解,那就很困難不去這折騰了。所以從這一點看我們Android中把重要資訊放到so中去做是多麼重要。好了我們看到這個提示我們操作也比較簡單,因為是Java編寫的,所以Mac中安裝之後直接取應用程式中右鍵顯示程式包內容:
顯示包內容之後,我們就可以去Java資料夾中查詢一個charles.jar檔案了,然後直接jd-gui直接開啟即可:
用jd-gui開啟charles.jar之後,直接全域性搜尋字串:This is a 30 day trial version...
然後點選進入檢視:
看到這裡就發現一個方法了,然後在點選進入檢視:
看到這裡接下來我們就開始修改這個方法的返回值來看看效果,不過這裡我們修改返回值可以有兩種方式,當然第一種方式是最開始我能想到的,因為在幾年前我弄過這個東西,就是修改第三方的SDK中的功能,比如開啟日誌等,這時候就需要去修改他們的jar包內容了,那時候的操作非常簡單思路也很清晰,因為我們知道jar中的是class檔案,我們可能沒有或者很難去修改class檔案,但是我們可以修改smali檔案,所以思路就是把jar轉化成dex檔案,這個直接用dx命令即可,然後在把dex弄成smali檔案直接修改即可,然後在打包回去。當然我們也可以直接編寫一個對應的Java檔案,然後編譯成class檔案替換jar中的位置,但是這麼操作有版本問題,很難控制。當然這裡我們都沒有采用這種方式,因為這種方式的實現成本太大,因為這個jar的結構:
這麼看到這個結構很複雜,所以這麼操作直接把jar轉化成dex會出現一些問題,所以這裡我們用一個新的辦法,以後大家都可以用這種方式直接操作jar檔案,其實準確說直接操作class檔案,我們知道編譯之後的class檔案很難改變,就可以用這種方式進行改變,這個就是javassist,其實之前我們用過asm這個庫也修改過class檔案的。這個原理都差不多,接下來我們就在AndroidStudio中直接操作吧。
三、破解修改
首先我們匯入這個庫,然後開始編寫程式碼直接操作,關於這個庫的具體用法可以自行搜尋查閱:
AndroidStudio中可以新建Java工程然後進行操作,具體如何新建Java工程可以自行搜尋,這裡不做太多的介紹了,因為最近RxJava這個框架很火,所以這裡就利用這個框架進行了簡單的使用,也讓大家體會到這個框架的作用:
看到RxJava框架會把程式碼變得更有順序化,程式碼簡潔明瞭,以後再Android中會用到更多,大家可以去我的小密圈看看我總結的這個框架的用法,然後我們直接執行即可,然後在目錄下就生成了一個新class檔案,然後直接找到我們修改後的jar檔案:
看到這裡我們就把之前分析的那兩個方法修改了,然後我們在把這個破解之後的jar檔案替換成原有的charles.jar執行即可:
啟動軟體之後看到沒有任何過期提示,使用過程中也沒有任何提示了,然後我們可以愉快的抓到抖音的請求資料了,關於更多抖音的破解知識可以去我的小密圈檢視:
好了到這裡,我們就成功的破解了charles工具了,為了安全考慮本文涉及資源可以去編碼美麗小密圈自取。
本文的目的只有一個就是學習逆向分析技巧,如果有人利用本文技術進行非法操作帶來的後果都是操作者自己承擔,和本文以及本文作者沒有任何關係,本文涉及到的程式碼專案可以去編碼美麗小密圈自取,歡迎加入小密圈一起學習探討技術
四、總結
大家可以看到這一次破解其實是非常簡單,就是因為Charles用了Java語言開發,當然這個是多平臺的前提,那麼有人好奇為啥Charles不直接進行授權key作為處理,這樣就需要強制購買才可以使用了,但是還是那句話,一個工具類app首先他的功能肯定是在本地的,只是一個開關控制一項功能是否開啟,那麼如果他用了Java這種比較弱的簡單逆向語言開發,他怎麼防護都沒有用,開關只是0和1問題。本文我們學習到了一種新的操作class檔案的方法,這個方法對於以後操作都會用到,比如Android中很常用的熱修復框架Robust,他的內部需要在編譯階段修改class檔案插入程式碼,就用了這個庫檔案。當然還有其他案例,在本文中我們也看到了RxJava這個框架的好處,他能夠把程式碼變得非常簡潔,同時要說的是現在很多應用都用了這個框架以及Retrofit網路框架,這兩個框架對於開發過程中的確很好,但是當我們反編譯應用檢視程式碼就很蛋疼了,因為這兩個框架把程式碼簡潔化,很難讀懂的。
《Android應用安全防護和逆向分析》
點選立即購買:京東 天貓
更多內容:點選這裡
關注微信公眾號,最新技術乾貨實時推送