1. 程式人生 > >android黑科技系列——破解一款永久免費網絡訪問工具

android黑科技系列——破解一款永久免費網絡訪問工具

大神 oot 有效期 發布 前言 expired 日誌信息 轉折 expire

一、前言

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

二、應用分析

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

技術分享

提示會員還有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黑科技系列——破解一款永久免費網絡訪問工具