一、前言
今天主要以餓了麼為例胡控,講解一下APP逆向的大致流程扳剿,以及遇到問題的處理辦法。
還沒關注的朋友昼激,關注我微信公眾號“燕幕自安”不迷路庇绽。
二锡搜、概述
APP逆向的目的是為了了解APP本身的運行邏輯,進行修改或進行還原瞧掺。涉及到的技術和工具耕餐,見下圖。
對于抓包我就不詳細講了辟狈,不清楚的看一下我之前的文章肠缔。
好了,下面我們干正事壹蔓,講餓了麼趟妥。
三、需求
通過還原APP接口庶溶,獲取附近商家煮纵。
但因為餓了么查看商家必須登錄,故需要先逆向登錄接口偏螺。
四行疏、抓餓了麼的包
打開PacketCapture,選擇餓了麼套像,打開餓了麼APP酿联。
這是為什么?斷網了夺巩?
這種情況主要是因為抓包引起的贞让,APP本身做了HTTPS證書校驗,簡單的可以通過插件解決柳譬,辦法參見以前的文章喳张。
好了解決了抓包問題,那就能找到登陸的接口了美澳。
通過抓包销部,得到登錄步驟為:
1.請求發(fā)送短信
2.需要圖形驗證碼,請求圖形驗證碼
3.帶驗證碼請求發(fā)送短信
4.帶短信驗證碼登錄(登陸完成拿到cookie)
5.獲取附近商家
每一步的接口如下:
1.URL:https://restapi.ele.me/eus/login/mobile_send_code
2.URL:?https://restapi.ele.me/eus/v4/captchas?captcha_str={手機號碼}
3.URL:https://restapi.ele.me/eus/login/mobile_send_code
4.URL:https://restapi.ele.me/eus/login/login_by_mobile
5.URL:https://restapi.ele.me/shopping/v3/restaurants?extras[]=identification&extras[]=coupon&latitude=32.29290046542883&longitude=110.04603732377291&city_id=3&rank_id=b1969c73a19b4dc68b31628ea85d8eaf&network_operator=&network=WIFI&order_by=5&extra_filters=home&os=Android%2F6.0.1&deivce=Nexus%206P&weather_code=PARTLY_CLOUDY_DAY&offset=0&limit=20
直接看參考答案的感覺怎么樣制跟?
五舅桩、參數分析
對于抓包的相關參數(自己看報文就能知道,我沒有寫header參數和url參數)雨膨,中間很多是我們一眼就能看出來的比如時間戳擂涛、機型、坐標聊记、固定值等撒妈,需要逆向的主要有以下幾個恢暖。
x-eleme-requestid、x-deviceinfo踩身、deadpool相關三個參數
六胀茵、逆向分析
參數x-eleme-requestid
在jadx中打開餓了麼APP,搜索關鍵字x-eleme-requestid
看到四個挟阻,不多。
按道理來說峭弟,應該先看第四個附鸽,但是后來并沒有找到a的生成位置。好我們看一下二瞒瘸、三坷备。(OS:“你為啥不看一”)
看到a是個static變量,那就得看一下誰調用他了情臭,右鍵find usage省撑。
會心一笑。手到擒來俯在。解釋一下竟秫。
點進去看一下。
我個憨憨u卫帧7拾堋!
好了愕提,不要在意這些細節(jié)馒稍。我們點進去這個a()看看。
清清楚楚浅侨,國際通用的算法UUID去掉短杠后加上豎杠再加時間戳纽谒。
參數x-deviceinfo
打眼一看,這是啥如输,base64肮那!對x-deviceinfo進行base64解密挨决,可得到
均是設備基本信息请祖,按照格式生成即可,注意要和外部其他設備基本信息保持一致。
deadpool相關三個參數
一共三個參數级及,分別為:
搜索deadpoolcontent掌实。
又是hashmap.put矢否,為什么我們要對他敏感慎陵,因為它和我們的目標關鍵字呆在一起的時候眼虱,很可能就是給header里構造參數的啊。我們點開第二個看一眼席纽。
繼續(xù)找這個sneer函數捏悬。(我總覺得他這個函數叫這個名字是故意鄙視我的。)
好了润梯,在libuiseris.so里面过牙,這就麻煩了,要還原這個算法有三種辦法纺铭。
硬剛寇钉。逆向so。我后來看了下舶赔,so有反調試扫倡,so里面又調了java層的函數,還原比較麻煩一些竟纳。
利用撵溃。hook這個sneer函數,找到他的方法地址缘挑,在你的代碼需要的時候,發(fā)請求到手機里揩悄,手機進行調用執(zhí)行卖哎,計算完以后返回給外部。
虛擬删性。虛擬環(huán)境執(zhí)行so中的sneer方法亏娜,可參見github上的Unicorn這個項目。
我用的是第二個辦法蹬挺,在手機里面起了HTTP服務维贺,接受請求計算后返回給外部。
但是巴帮!
FPX和G2的比賽要開了溯泣,今天不繼續(xù)寫了,下次再寫個續(xù)榕茧,講一下hook調用這個事兒吧垃沦。
FPX加油。
寫在最后
最近有人抄襲我的文章在知乎用押、吾愛上發(fā)肢簿,說是自己原創(chuàng)?就是這個垃圾人。
連個人簡介都是抄我的池充!模仿我的人還模仿我的面桩引??收夸?現(xiàn)在還有臉繼續(xù)關注我坑匠??卧惜?還想繼續(xù)抄厘灼??序苏?要點*臉吧手幢。
暖心的是忱详,吾愛上的盆友看出來了,謝謝各位了跺涤!
以上。歡迎閱讀轉發(fā)~
想要轉載的朋友請告知我之后轉載桶错,并注明原帖來源院刁。
如有問題任岸,請關注公眾號回復【作者】獲取我的聯(lián)系方式狡刘。
想了解更多技術分享享潜,請長按識別下方二維碼關注我吧剑按。