1. 程式人生 > >Android逆向之旅---破解一款永久免費網路訪問工具

Android逆向之旅---破解一款永久免費網路訪問工具

一、前言

因為最近個人需要,想在手機上使用"高階搜尋",但是找了一圈發現都是需要收費的網路工具,奈何我沒錢,所以只能通過專業技能弄一個破解版的。

二、應用分析

下面就直接奔入主題。首先我們看到到期介面如下:


提示會員還有0天,所以這個就是我們的突破口,直接反編譯這個app,然後找到這個字串資訊:


然後用Jadx開啟apk檔案,全域性搜尋這個name值:


直接點進入進行檢視即可:


最終會跟蹤到這個方法中,我們在這裡發現兩個關鍵點:一個是程式會把使用者的有效期儲存到本地xml中,一個是這個程式漏洞,沒有關閉日誌資訊,所以我們直接利用這個漏洞檢視日誌資訊即可,不過這裡先不進行檢視,繼續全域性搜尋儲存xml的key值:service_expired_time,看看哪裡進行儲存的,這裡猜想肯定是伺服器下發的配置資訊:


這裡看到有很多地方都有儲存,我們一次進行檢視,最後發現是這個地方:


為什麼說是這個地方呢?因為我們發現這裡的tag和上面的日誌tag是一樣,都是MainActivity。而我們直接檢視日誌資訊:


的確如此,看到這裡首先去獲取配置資訊,然後進行本地解密,將json轉化成map結構。這裡我們為了介紹更多。看看他的解密演算法實現:


一個很簡單的AES演算法。key也是本地寫死的。我們為了後面驗證解密演算法有效。我們在單獨寫一個Android程式,把這部分解密函式拷貝出去,然後用來解密資料:


然後我們用剛剛列印的日誌中的獲取配置url,放到瀏覽器中訪問檢視:


把這段密文拷貝到Android解密程式中,然後執行Android程式,檢視日誌:


解密之後是一個json資料,我們用工具進行格式化檢視資訊:


看到這裡三個欄位,一個是可使用的天數,一個是有效期時間,一個是當前時間。

三、技術延伸

好了到這裡,我們就大致清楚了,這個工具的流程:先去伺服器獲取配置資訊,然後解密成json格式轉化成map結構,然後解析其中的一些欄位,比如有效期和天數資訊儲存到本地。如果發現到期了就不能直接使用工具了。而我們這裡會發現突破口是他的日誌漏洞,所以在開發過程中一定要記得程式釋出前清掉關鍵日誌,其實有開關控制也不靠譜,之前分析過一款app,他的日誌雖然有開關,但是我們可以手動把開關開啟即可。所以為了最安全,最好刪除關鍵資訊日誌。

第一、分析手機tcp包資訊

那麼既然這款app沒有日誌資訊,我們該怎麼突破呢?我們可以抓包,而我們可以看到這個獲取配置資訊是https協議。所以用Fidder等抓包工具獲取可能會失敗。所以這裡可以用tcpdump+Wireshark來直接分析tcp包資訊:


看到TLS協議了。如果有人分析過這個安全協議,知道這個流程,網上大神總結的一張圖:


然後我們可以看到他的Application Data資料:


限於篇幅原因,不在詳細介紹如何進行解密這個協議資料,內容後面會單獨寫一篇文章如何解密TLS資料。

第二、免root管理裝置網路

現在Android中VPN功能,都採用的VPNService進行開發的,這個我在之前介紹一個攔截視訊廣告app的時候也提到過,他的原理就是藉助VPNService進行免root攔截廣告請求從而做到過濾廣告功能,這個功能需要授權:


關於這個VPNService如何開發使用,網上有一些資料,感興趣的同學可以自行搜尋即可。

四、破解方案

上面轉折了一下延伸了一些內容,現在我們在回到正題,上面已經分析完了app的使用有效期流程,那麼破解就非常簡單了,方法有很多。這裡我們直接採用插入程式碼方式修改伺服器下發的資料即可。我們這裡為了簡單,直接修改map結構中的那幾個重要欄位值,有效期和使用天數。反編譯獲取到smali程式碼之後,我們這裡沒必要去手動寫smali程式碼,而是可以利用demo寫好插入map的資料結構資訊:


然後反編譯demo程式,獲取到對應的smali程式碼:


然後插入到反編譯app的smali程式碼中即可:


然後在回編譯,簽名之後用Jadx工具檢視,是否插入成功:


已經完成插入功能,我們安裝看看是否有效:


這裡看到,破解成功,可以正常使用了,到這裡我們就介紹完了,如何破解一款VPN工具永久免費。

五、技術總結

我們在破解過程中發現,這個工具存在很多安全隱患,關於工具安全提議:

第一:釋出前還是請刪除關鍵核心資訊。特別是日誌,不要用開關控制。直接刪除。

第二:關鍵資訊最好做一層核心加密。比如上面的AES解密功能可以放到so中安全性會高。

第三:對整個app做一次安全防護,防止被破解。

關於破解工具類app,其實很簡單,因為工具app的話一般我們想要而要收費的功能肯定是放在本地只是有一個開關控制起來了。而對於這類app破解的話,只要找到這個開關,直接篡改即可。而對於一些伺服器控制的功能比如視訊的會員資訊破解就有點麻煩了,因為你的資訊在伺服器,伺服器會根據你是否為會員下發指定的視訊資訊。所以以後如果要想破解工具類app的話,相信一點。一定能成功的。而且思路也很簡單明瞭。

在本文閱讀完成之後,我們可以瞭解到的一些技術:

  • 第一:Android中免root攔截網路請求或者VPN開發可以藉助系統類VPNService功能。這個功能需要進行授權。
  • 第二:瞭解到tcpdump+Wireshark工具進行分析手機的tcp包資訊。這個後面文章會詳細介紹分析流程。
  • 第三:app在上線釋出之前一定要記得刪除關鍵資訊的日誌。避免造成安全隱患。

嚴重宣告

本文介紹的內容只是為了逆向技術探討,絕對不允許不法分子進行惡意用途。而涉及到安全隱患,本文提到的樣本,可以加入編碼美麗技術圈,留言我的真實姓名,發放僅供參考分析而已。

《Android應用安全防護和逆向分析》

點選立即購買:京東  天貓

更多內容:點選這裡

關注微信公眾號,最新技術乾貨實時推送

編碼美麗技術圈微信掃一掃進入我的"技術圈"世界
掃一掃加小編微信
新增時請註明:“編碼美麗”非常感謝!