現在是:
廣告熱線:  |  設為首頁 | 加入收藏
登陸用戶名:
密碼:
您現在的位置北京足球指数 > 企業 > >正文內容

即时指数足球指数:主流app破解—你以為用C進行加密就可以高枕無憂了?

來源: 發布時間:2020-03-23 09:23:27 閱讀:-

北京足球指数 www.zwtnp.com.cn 作者:菜鳥說

有時候我們想抓取一些app的數據用作商業用途,或者是獲取到該app中某一個技術點的實現方式,或者是想獲得其中的重要邏輯,目的的話不同人不一樣。但是有些app就是不讓你獲取接口數據,搞了各種各樣的加密,這里其實也是攻守關系,魔高一尺道高一丈,雙方彼此在競爭中成長,推動著技術的進步。

今天給大家帶來一個百萬級日活的主流app-連尚讀書的接口數據破解,這可是獨家博客首更哈,網上不可能搜到的干貨??垂俅蟠竺嵌枷島冒踩?,扶好扶手,馬上開車。如果有連尚官方的兄弟希望也別生氣,我其實也不太想公開來著,但是后面想了想反編譯的大佬多了去了,如果像我這種小菜鳥都能破解,那說明早就有很多其他人已經破解過了。下面貼出連尚讀書的app截圖,界面中規中矩,顏值還是不錯的呢!

廢話少說,看完了就開干。破解接口數據,首當其沖當然是抓包,我這里貼個圖,抓到包了但是是加密后的字符串,完全看不出來這是什么東東啊,連尚的兄弟們也是夠狠的。

由于是破解接口,當然是從url入手啊,首先復制host到反編譯工具中進行搜索,結果如下圖:

你覺得這些搜索結果里你對哪個更感興趣?當然是最后兩個,因為最后2個使用了Retrofit這網絡框架明明白白地就擺在那里,坐等你上去點,你能不感興趣嘛?OK,那應該點哪個方法呢?問得好,當然是點a()方法啊,首先一看混淆了的就知道有鬼,其次前面部分肯定是Retrofit的基本使用,無外乎就是根據url來獲取數據,當然有空的話點進去學習一下也無所謂啦!這里我們直接點進去a()方法,結果如下圖:

看到沒,這段代碼已經很明顯了

String string = responseBody.string(); 

這百分百是從response里面獲取到前面那串亂碼啊,接下來將這串亂碼調用了一個decryptN方法以后,獲取到了一個值。這個值是什么呢,我們可以根據它的使用處來猜測一下。首先這個值是傳給str,那str是給a.a()作為參數,重點是str的默認值,看到沒,str默認值是一個json,那么既然string是賦值給str的,那string是不是應該也是個json呢?這是當然,所以string就是最終解碼以后獲得的json數據了。

現在形勢就很明朗了,從服務端獲取到了一個加密的responseBody,然后調用Rsa.decryptN方法進行了解密獲取到了最終可供客戶端使用的正常json數據。那么問題來了,這個解密算法是什么呢,我們迫不及待地點進去看:

點進去發現是調用了一個nativeDecryptAD方法獲取到Byte[],最后將這個byte[]轉換成的json,所以這里重點就是這個nativeDecryptAD方法了。點擊這個方法,定位到上面定義處,發現是個native標識的方法,也就是jni的方法。這也是正常的,既然要做加密,使用c那再正常不過了。

俗話說得好,神擋殺神,佛擋殺佛,怎么能輕易被jni給擋???碰到使用jni的地方,第一個想到的就應該是看下這個方法是放在哪個so下面。注意看上面的靜態方法

static { 
System.loadLibrary("ck");
}

這么直接地告訴你是在ck這個so下面,那我當然就得去拜訪一下咯。修改apk的后綴后,很容易就獲取到了這個so包,優哉游哉地打開,如下圖

剛剛那個加密方法是在Rsa類中,叫做nativeDecryptAD方法。我們掃一眼所有的方法,一眼就找到了,當然得點開來好好研究一把,畢竟連尚的碼農為了做加密肯定也是費了不少功夫的,不研究一把就對不住人家。程序員本身就已經很不容易了,要互相懂得尊重。廢話少說,直接打開這個方法,實現如下:

我們看該方法是由v9賦值而成,而v9是由v8轉成byte[],所以關鍵就是v8了。v8是調用了另一個c的方法,我們點進去看下

里面都是亂七八糟的代碼,看到v1 v2一直到v20就頭痛。不過這代碼就不是讓你看的,你有發現什么規律沒,基本所有的變量都包含xxtea開頭,這意味這個方法很可能就是第三方的一個叫xxtea的類庫,不然如果你自己寫代碼你會都用xxtea開頭不?

到這里我們去網上搜索一下xxtea,果然是一個加密框架,確認過眼神,你就是對的人。知道了加密框架以后你就可以去搜索解密方式了,這種百度操作網上一搜一大把,肯定難不倒大家吧。我這里就隨便貼個百度搜索到的鏈接吧,解密算法圖也貼一個:https://www.cnblogs.com/frogblog/p/8607392.html

OK,解密算法有了,我們可以看到這個算法是需要傳入2個參數,我們再回頭看看之前的c方法是不是有傳入這些參數。首先從Java那邊傳入的數組是input,這個input轉變成ret_len傳入了算法,其次傳入了一個pub_key_ad,看名字結合場景不用猜都知道這個肯定就是解密需要的Key了。

但是上面并沒有對這個pub_key_ad賦值,所以這個肯定是在之前就賦值了的變量。我們點進去

看到沒,果然一個復雜的key哇,可惜還是露出了它的真面目。這里打了個helloworld只是為了讓它不那么害羞,給穿個三點衣吧,讓它有點安全感。那么Key是不是就是這個,可以直接復制過去使用呢?答案是否定的,你需要注意的是在c的代碼中對這個key進行過修改哦,粗心的同學不小心就會拜倒在這里,這應該是連尚的小心機吧,哈哈。

看到沒,第6個數要改成48才可以,不然折騰了半天沒看到這里也是白搭。把key復制出來,然后修改key中下標為6的數,也就是第7個數為十進制的48(因為這里沒用0x所以不是16進制)。然后就可以收獲成果了,這么有名的app中關鍵數據毫無保留地出現在你面前,是不是滿滿的成就感?

總結:本次表演結束,我給大家總結一下破解接口的方法。我之前還破解過手淘的接口,后面有空也給大家分享一下。當然,根據我的經驗,破解接口數據的步驟總共分為以下幾點:

1.是否有網頁版或者網頁客戶端

如果某個軟件有網頁版,那么破解的難度的就降低很多,就算有js混淆,但是至少代碼都是可見的,不像客戶端各種混淆加密加固機制,動不動就是jni??梢哉餉此蛋?,如果有網頁版,就優先對網頁版進行破解。

2.使用抓包工具進行抓包

這一步沒什么好說的,破解接口當然是得抓包了。當然這里需要注意看下抓到的數據有什么加密參數,或者是獲得的數據是否是加密過的亂碼,后面好針對性的進行破解

3.找到app中的網絡框架

根據抓到的host搜索網絡框架代碼,里面無非就兩種,加密的sign參數,或者是解密前的responseBody,反正你關心的一切在里面肯定有。

4.順藤摸瓜,找到加密方法

找到加密數據的具體實現,其中有可能在Java中,也有可能在c中。不論在哪里,細心分析代碼,哪怕它被混淆得面目全非也要保持有耐心。

5.認真研究加密方法,不要放過一絲一線

最后

破解app就像走鋼絲,有時候前面走得都很順利,一個不細心將前功盡棄一無所獲,所以一定要細心,查了一個字母或者大小寫不一樣都不行。這肯定不是一件簡單的事情,不然你當人家的架構師都是白搭的么。另外需要具備一定的聯想能力,一般人家要加密,經?;岢魷執廈鞣幢淮廈魑蟮那榭?,關鍵代碼混淆一下,所以你就專找混淆后的代碼看。另外,需要對常用的加密方式了解,以便看到代碼就能聯想到解密的方法。

最后,希望連尚的兄弟們不要記恨我哈,互聯網就是這樣,有攻防才能促進技術的進步。就算我不去破解,我不寫博客,也會有其他人會去做,還不如早點讓你看到這帖子早點對自己加密方式進行優化,哈哈是不是很有道理!

你們有破解什么app,其中用到了什么樣的加密方式呢,歡迎小伙伴們一起來探討,共同進步哦!


感謝大家能耐著性子看完

在這里小編也分享一份自己收錄整理的Android學習PDF+架構視頻+面試文檔+源碼筆記,還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習

如果你有需要的話,可以點贊+評論+轉發,關注我,然后私信我【進階】我發給你

(正文已結束)

推薦閱讀:蘋果xr和x

免責聲明及提醒:此文內容為本網所轉載企業宣傳資訊,該相關信息僅為宣傳及傳遞更多信息之目的,不代表本網站觀點,文章真實性請瀏覽者慎重核實!任何投資加盟均有風險,提醒廣大民眾投資需謹慎!

網站簡介 - 聯系我們 - 營銷服務 - 老版地圖 - 版權聲明 - 北京足球指数
Copyright.2002-2019 北京足球指数 版權所有 本網拒絕一切非法行為 歡迎監督舉報 如有錯誤信息 歡迎糾正
{ganrao} 山东群英会 下载贵阳微乐捉鸡麻 福建十一选五88期开奖结果 幸运pk10笨人买法 河北十一选五今天 股票配资平台代理股票配资平台代理 今日广西快三开奖 吉林11选5官方 德国赛车官网是正规的吗 35选7辽宁福彩官网 qq欢乐麻将外挂 日本av女优色情短片 全天秒速快三计划软件 山西十一选五交流群 北京赛车10pk官方直播 内蒙古十一选五遗漏