目錄:
一、多頭項目的特點:
二坝冕、逆向思路
1徒探、能否判斷是否注冊
2、逆向過程
三喂窟、逆向工具
1测暗、抓包工具
2央串、測試工具
3、hook 工具
4碗啄、反編譯工具
四质和、 難點解決方案
1、無法抓包的問題
2稚字、加殼問題
五饲宿、java層逆向通用方案
1、原理
2胆描、各種加密方法簡單介紹
3瘫想、案例介紹
六、TODO
一袄友、多頭項目的特點:
- 1殿托、以量取勝
- 2、十個中有一個能做
- 3剧蚣、逆向難度符合二八原則
APP類型
- web抓包型 30%
- java加密型 50%
- 加殼型 10%
- so加密型 10%
需求:
當前提需求3000+支竹,在線300+,爬蟲抓取新需求1萬+鸠按,估計可以提新需求3000+礼搁。
二、逆向思路
木桶原理
1目尖、能否判斷是否注冊
- 登錄
- 注冊
- 找回密碼
- 前置請求
- 圖形驗證碼不校驗
- 短信驗證碼不校驗
前置請求樣本:小荷金寶
2馒吴、逆向過程
- 抓包分析
- 做減法找出需要解密的參數
- 實際逆向過程
Jadx-gui 逆向代碼
三、逆向工具
1瑟曲、抓包工具
- chrome開發(fā)者工具 F12
- charles
- HttpCanary
- 抓包精靈
2饮戳、測試工具
- curl
curl 'http://hebao.qimmjie.cn/Api/System/CheckUserByTel?format=json' -H 'Connection: keep-alive' -H 'Accept: */*' -H 'Origin: http://hebao.qimmjie.cn' -H 'X-Requested-With: XMLHttpRequest' -H 'User-Agent: Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Referer: http://hebao.qimmjie.cn/mobile/regist?code=xhe312' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7,zh-TW;q=0.6' -H 'Cookie: ss-pid=Zgl1gxCyxw8y1O2TEEZy; ss-id=edcBOzPQELlzzKdRaH8n; UM_distinctid=16e86db9e0a53b-0bbac29757f2a6-3961720f-13c680-16e86db9e0bc6; CNZZDATA1277818958=190964457-1574220570-%7C1574220570; ASP.NET_SessionId=tnps4rfmeb2le5buy05gzjg1; CNZZDATA1274999399=1120458144-1574219808-%7C1574227764' --data 'Tel=17611597503' --compressed --insecure
- FEHelper
- 在線加密測試網站
MD5、SHA256洞拨、HMAC等
AES扯罐、DES、3DES - java代碼
各類Hash算法-Java版
各類加密算法(AES烦衣、DES歹河、RSA、BASE64)-Java版
3花吟、hook 工具
- Xposed
- Frida
4秸歧、反編譯工具
- Jadx-gui
能直接反編譯dex文件,方便好用 - JD-GUI
需要將dex文件轉到jar文件衅澈,可以跳轉函數 - JEB
用的較少
四键菱、 難點解決方案
1、無法抓包的問題
- ssl pinning
- JustTrustMe
- JustTrustMe升級版
- [A Frida script to bypass SSL Pinning on Android.]
(https://gist.github.com/cubehouse/56797147b5cb22768b500f25d3888a22) - SSLkiller.apk 沒測過
- sslunpinning.apk 沒測試過
ssk pinning 樣本:快魚分期
- proxy檢查
使用frida hook關鍵代碼
Android 判斷設備 是否使用代理上網
Android判斷當前設備是否設置了代理
輕貸 禁止代理訪問
2矾麻、加殼問題
解決方案:
1纱耻、手動脫殼
2芭梯、自動化脫殼方案
-
https://github.com/OakChen/ApkShelling
測試95%的都可以脫掉险耀,少部分脫殼不徹底弄喘。 -
https://github.com/hanbinglengyue/FART
這個還沒測試,網上說是一種更先進的脫殼方案
3甩牺、so加密
樣本: 松緊貸 360加固蘑志、so加密
- 人工逆向
-
java直接調用so文件
太慢 需要5s左右 -
AndServer+Service 打造 Android 服務器實現 so 文件調用
因為云手機沒有提供公網IP和端口的權限,使用反向代理做內網穿透frp -
python直接調用so文件
還未測試
五贬派、java層逆向通用方案
1急但、原理
市場上大部分app的加密都是在java層,而且使用的是java標準的加密庫搞乏。通過 hook java的標準加密庫波桩,實現無需反編譯和脫殼的逆向。
2请敦、各種加密方法簡單介紹
參考:淺談常見的七種加密算法及實現
加密方法:
- 1镐躲、散列算法 MD5 SHA-1 SHA-256 HMAC
- 2、對稱加密 AES DES 3DES
-
3侍筛、非對稱加密 RSA
3萤皂、案例介紹
1)MD5生成sign類型
案例:大黃花 https://kf.dahuanghua.cn/userReg/download
2)SHA1生成sign類型
3)AES生成sign
4)RSA加密手機號
米族金融 https://sj.qq.com/myapp/detail.htm?apkName=com.chainfin.meter
無法抓包需要先 hook ssl pinning
5)HMAC
這個沒法下載了
5)DESede
有錢管家 https://www.wandoujia.com/apps/7878515
六、TODO
- 1匣椰、手動so逆向
- 2裆熙、手動脫殼
- 3、IOS逆向
- 4禽笑、工具的原理