實習(xí)之競品分析

2017-09-05 博客遷移 實習(xí)之競品分析

在實習(xí)的時候,項目里是要做一個類似競品的習(xí)題集需求,但是組里沒有習(xí)題資源环壤,按照競品的題目一個個拼也不現(xiàn)實,所以便有了扒取競品Apk數(shù)據(jù)的想法钞诡。

競品效果見下圖
image
image

逆向一開始還是老套路郑现,ApkTool湃崩、JD-GUI走起,先大致瀏覽一遍逆出來的AndroidManifest接箫,對Activity界面的名稱有個大致的了解攒读。然后再用JD-GUI大致瀏覽一遍各個文件包名。

因為要扒的是棋盤數(shù)據(jù)辛友,在確定數(shù)據(jù)是存在本地的情況下薄扁,本能的看看databases有啥,結(jié)果發(fā)現(xiàn)有個叫book.db的東西瞎领。
image

用sqlite命令打開看看都有什么表
image

其中horse泌辫、kill、polgar九默、tactical是我們想要的習(xí)題集數(shù)據(jù)震放。

看看polgar存的數(shù)據(jù)好了,結(jié)果發(fā)現(xiàn)數(shù)據(jù)一堆亂碼
image

發(fā)現(xiàn)其中兩個字段_fen和_pgn都是BLOB(fen和pgn分別是國際象棋里棋譜和答案的專業(yè)名稱)
image

一開始以為是編碼問題驼修,所以把book.db放到另外一個apk殿遂,試著用UTF-16,UTF-8, ASCII等各種編碼試了下,發(fā)現(xiàn)沒什么用乙各,導(dǎo)出的依舊是亂碼墨礁,所以猜測數(shù)據(jù)里應(yīng)該是做了加密。

隨后開始看代碼耳峦,先通過JD-GUI找到對應(yīng)讀取DB的代碼地方恩静,具體定位方法最快的方法是直接搜字符串“_fen”或“_pgn”。

image

以獲取fen為例蹲坷,在拿到fen的BLOB數(shù)據(jù)后驶乾,傳到了localj對象的b方法,b方法最終會調(diào)用如下a方法循签,a方法會轉(zhuǎn)化成一個v對象级乐。

image

代碼各種位運算實在讓人頭疼,一開始是打算在smali代碼注入日志县匠,然后重新打包风科,但是

1.這個v對象有很多參數(shù),到底哪個參數(shù)有用以及怎么用還不確定 乞旦,雖然看代碼能看出個大概贼穆,但不好把握。

2.競品對重新打包做了處理杆查,一直都打包失敗扮惦。

3.通過閱讀代碼可以看出棋盤界面是刷出來的時候才讀db對應(yīng)的數(shù)據(jù),1w多道題如果通過日志刷出的話亲桦,還要把每一頁都滑動一下才能走到讀對應(yīng)db的邏輯崖蜜,不太現(xiàn)實浊仆。

隨后想試試調(diào)試看看有沒有什么新發(fā)現(xiàn)。

關(guān)于調(diào)試豫领,我用的是AndroidStudio調(diào)試smali代碼的方法抡柿。

具體環(huán)境搭建可參照Smalidea+IntelliJ IDEA/Android Studio動態(tài)調(diào)試安卓app教程

手機打開到6個棋盤展示的界面,然后通過 adb shell dumpsys activity | grep "mFocusedActivity" 獲取當前界面對應(yīng)的Activity名等恐,然后找到對應(yīng)代碼洲劣,跟蹤相應(yīng)的邏輯(此處略)在棋盤初始化的時候加個斷點,然后調(diào)試课蔬,意外的發(fā)現(xiàn)了一個fen字符串囱稽。

image

仿佛看到了曙光,對比了下二跋,這個j就是對應(yīng)的之前說的v類的對象战惊,打開j發(fā)現(xiàn)有個長度64的數(shù)組。

image

很容易想到棋盤就是64個扎即,很有可能跟這有關(guān)系吞获,經(jīng)過逐一比對,發(fā)現(xiàn)數(shù)據(jù)是以棋盤左下角為原點建立的數(shù)組谚鄙,0代表無棋各拷,1代表白王,2代表白后闷营。烤黍。然后7代表黑王,8代表黑后傻盟,因為國象一共就6種棋型蚊荣,所以這種就是x白、x+6黑的編碼方式莫杈,以此內(nèi)推可以推出馬、象奢入、車筝闹、兵的id。

之后把BLOB數(shù)據(jù)轉(zhuǎn)換成16進制排布腥光,發(fā)現(xiàn)數(shù)據(jù)其實就是利用棋子id和奇偶對調(diào)的方式處理的关顷,比如如果有數(shù)據(jù)0201,其實它的在棋盤的排布是2010武福,也就是第1個格子是白后议双,第3個格子是白王∽狡考慮到版權(quán)問題平痰,這部分細節(jié)就不公開了汞舱。

上述說的是獲取棋盤信息fen的過程,還有一個就是獲取答案pgn的過程宗雇。pgn在代碼里的使用是通過坐標轉(zhuǎn)換的昂芜,BLOB的數(shù)據(jù)轉(zhuǎn)化規(guī)律定位到了如下函數(shù):

image

l的構(gòu)造函數(shù)有三個形參a,b,c(從左至右),分別代表原坐標赔蒲、目標坐標泌神、兵升變參數(shù)。

整體逆向的感受還是挺麻煩的舞虱,這個過程會遇到很多坑欢际,比如長期看混淆的代碼會被一些函數(shù)調(diào)用繞的暈頭轉(zhuǎn)向,不過之后也懂得放棄這種死磕代碼的做法矾兜,換一種角度看問題损趋,嘗試調(diào)試看看能看出什么東西來,不然可能這個項目的習(xí)題獲取就一直做不成了焕刮。還有學(xué)過的東西肯定會有用的舶沿,雖然工作用的都是unity和c#,跟原生Android已經(jīng)相去甚遠配并,但學(xué)過的以后肯定會有用武之地括荡,所以學(xué)東西不能一味的太功利化,提升自己能力才是關(guān)鍵溉旋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末畸冲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子观腊,更是在濱河造成了極大的恐慌邑闲,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梧油,死亡現(xiàn)場離奇詭異苫耸,居然都是意外死亡,警方通過查閱死者的電腦和手機儡陨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門褪子,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骗村,你說我怎么就攤上這事嫌褪。” “怎么了胚股?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵笼痛,是天一觀的道長。 經(jīng)常有香客問我,道長缨伊,這世上最難降的妖魔是什么摘刑? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮倘核,結(jié)果婚禮上泣侮,老公的妹妹穿的比我還像新娘。我一直安慰自己紧唱,他們只是感情好活尊,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漏益,像睡著了一般蛹锰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绰疤,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天铜犬,我揣著相機與錄音,去河邊找鬼轻庆。 笑死癣猾,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的余爆。 我是一名探鬼主播纷宇,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛾方!你這毒婦竟也來了像捶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤桩砰,失蹤者是張志新(化名)和其女友劉穎拓春,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亚隅,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡硼莽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了煮纵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沉删。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖醉途,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砖茸,我是刑警寧澤隘擎,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站凉夯,受9級特大地震影響货葬,放射性物質(zhì)發(fā)生泄漏采幌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一震桶、第九天 我趴在偏房一處隱蔽的房頂上張望休傍。 院中可真熱鬧,春花似錦蹲姐、人聲如沸磨取。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忙厌。三九已至,卻和暖如春江咳,著一層夾襖步出監(jiān)牢的瞬間逢净,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工歼指, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爹土,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓踩身,卻偏偏與公主長得像胀茵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惰赋,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容