初衷:
有時候看見喜歡的 app 肯定會想要對他的實現(xiàn)一探究竟峡钓。我給大家分享下我是如何簡單分析的槐雾。希望大家一起進(jìn)步夭委。
準(zhǔn)備的工具
- Hopper
- Charles
- Reveal
- MonkeyDev
- pp助手
- class-dump
目標(biāo)
酷漫漫畫 App(如果涉及到侵權(quán),請及時聯(lián)系作者刪除)募强。
接下來的步驟就是默認(rèn)你上面的工具都是已經(jīng)安裝好的株灸。
第一步 導(dǎo)出頭文件
-
pp助手里面越獄應(yīng)用里面搜索 酷漫漫畫 然后下載
找到 ipa,復(fù)制一份擎值,后綴改為.zip慌烧。解壓出來一個文件夾。
終端執(zhí)行以下命令得出頭文件
class-dump -H 目標(biāo)執(zhí)行程序 -o 導(dǎo)出的頭文件存放文件夾
第二步 結(jié)合 Hopper 來分析應(yīng)用引用了哪些第三方庫以及分析代碼邏輯
-
打開 Hopper 扔進(jìn)去 包里面的執(zhí)行文件進(jìn)行分析鸠儿。
通過左上角搜索關(guān)鍵詞可以知道應(yīng)用到底使用了哪些第三方庫屹蚊。我查找到這個目標(biāo) app 使用了以下第三方。
- 百度云推送
- ShareSDK
- SRWebSocket
- IQKeyboardManager
- YYWebImage
- YYCache
- JSONModel
- SDPhotoBrowser
- MWPhotoBrowser
- SDWebImage
- MBProgressHUD
- Masonry
- WCAlertView
- SIAlertView
- CustomIOS7AlertView
假如你對某個頭文件中的方法實現(xiàn)邏輯感興趣进每,可以這樣做汹粤。
比如對圖中圈住的方法感興趣
可以在 Hopper 中這樣分析
想了解 Hopper 點擊這里
第三步 使用 MonkeyDev 和 Reveal 對UI界面進(jìn)行查看,還可以用代碼進(jìn)行 hook 調(diào)試田晚。
-
運行起來程序后(注入 動態(tài)庫 dylib 進(jìn)行調(diào)試)嘱兼,點擊 Reveal 就可以看到界面的層級關(guān)系了。
通過左邊的名字 不難分析出贤徒,這個界面是用 UIScrollView 實現(xiàn)的芹壕,UIScrollView 里面就是 幾個view 展示的。
分析首頁的時候 發(fā)現(xiàn)最上面的左右 兩個 Button 距離左/右的距離為0 然后 Button 寬30 高33接奈。點擊響應(yīng)的時候不太方便踢涌。 人手指最舒服的點擊大小是 寬和高都是 44。
-
想 hook 某些方法或者加寫頁面 可以在里面寫代碼
第四步 使用Charles 進(jìn)行 API 分析鲫趁。
- 抓到的時候發(fā)現(xiàn)這個 app 還使用的是 http 請求斯嚎。
- 沒看之前有個想法就是說,想通過偽造包請求來查看收費的漫畫章節(jié)(比如它的實現(xiàn)可能是通過 某個參數(shù) 為1或者0來判斷是否允許用戶觀看)。
這是正常免費漫畫章節(jié)的請求堡僻。
然后是點擊收費章節(jié)的請求糠惫。
通過發(fā)送的參數(shù)可以分析出,是在服務(wù)器端來判斷你的賬戶里面金額夠不夠觀看收費章節(jié)钉疫。說明咱們之前的想法是錯誤的硼讽。
- 但是到這里的時候 我還有 2 個想法。
1牲阁、正常免費章節(jié)的 api 返回的數(shù)據(jù)是這樣的(部分 JSON 數(shù)據(jù))固阁。
"imageList": [{
"image_id": 1,
"comic_id": 36427,
"image_server_id": 99,
"chapter_id": 3267,
"image_url": "http:\/\/s2.static.kuman.com\/\/001\/00\/39\/46\/10461\/81015a81073611fc2.jpeg!km2",
"sync_status": 0
}, {
"image_id": 2,
"comic_id": 36427,
"image_server_id": 99,
"chapter_id": 3267,
"image_url": "http:\/\/s2.static.kuman.com\/\/001\/00\/39\/46\/10461\/89445a8107373294c.jpeg!km2",
"sync_status": 0
},
對比兩個 image_url 數(shù)據(jù) 會發(fā)現(xiàn)
http://s2.static.kuman.com//001/00/39/46/10461/XXXXXX.jpeg!km2
在 標(biāo)注 XXXXX 的地方就是他們不一樣的地方,如果逆向找出生成的規(guī)則城菊,你就能免費看所有的漫畫了备燃。需要時間不停的去驗算規(guī)則。
2凌唬、就是通過偽造假的下單成功請求來使你的賬戶余額變多并齐。
這個 app 使用的支付方式分別是 支付寶、微信客税、Apple Pay况褪。
支付的 api 是 http://api.kuman.com/pay/recharge。
思路是先花錢通過下單成功來查看一套完整的流程更耻,記錄每個步驟的參數(shù)和返回數(shù)據(jù)测垛,通過 Paw 之類的請求工具改變部分參數(shù)來不停的嘗試。
主要就是看服務(wù)端那邊對支付成功后是否進(jìn)行了二次校驗秧均。如果沒有的話就是可以通過一次支付成功來不停的告訴服務(wù)器支付成功食侮,然后服務(wù)器端就會不停的給你賬戶加余額,這樣你就可以放心的觀看免費章節(jié)了目胡。