感謝這篇文章提供思路咐熙。
Android逆向之無加固下的Java層和Native層模擬的調(diào)度解決方案
一、背景
現(xiàn)在好多android app的加密都放在了so杀赢,逆向so需要的時間成本很高烘跺,我一直在想有沒有一些通用的方案。參考網(wǎng)上的的方案脂崔,我實踐了如下三種方案滤淳。
Android上起http server
參考AndServer+Service 打造 Android 服務器實現(xiàn) so 文件調(diào)用Android上起http server + frp內(nèi)網(wǎng)穿透
但是現(xiàn)在一般是在云手機上操作,沒有直接暴露的公網(wǎng)IP和端口號砌左。我找到的方案是用frp做內(nèi)網(wǎng)穿透脖咐。但是不穩(wěn)定-
使用sekiro暴露 API
二、介紹
sekiro是一個基于長鏈接和代碼注入的Android private API暴露框架绊困。
我之前有類似的想法文搂,沒想到已經(jīng)有寫好的。
框架分為兩部分:
- server
暴露一個TCP端口和兩個HTTP端口
管理通過TCP連接的client和user發(fā)來的http 請求 - client
通過TCP和server連接秤朗,響應server發(fā)來的請求
工作流程是這樣的:
- client通過TCP和server建立長連接
- user發(fā)送http請求給server
- server根據(jù)用戶發(fā)來的http請求的參數(shù)煤蹭,通過TCP將請求轉(zhuǎn)發(fā)給client
- client收到請求并響應server
- server將從client收到的請求返回給user
三、實踐
1取视、更改端口
- server端在sekiro-server/src/main/resources/appliation.properties中可以配置三個服務端端口
- client在SekiroClient.start(String serverHost, int serverPort, final String clientID, String group)中配置
2硝皂、服務器端部署
修改settings.gradle的內(nèi)容為: include ':sekiro-server', ':sekiro-lib'
這一步是為了過掉Android app的編譯
當前目錄執(zhí)行代碼: ./gradlew sekiro-server:bootJar
即可在 sekiro-server/build/libs/sekiro-server-0.0.1-SNAPSHOT.jar找到all-in-one的jar包
通過命令 java -jar sekiro-server/build/libs/sekiro-server-0.0.1-SNAPSHOT.jar 即可啟動服務器
3、client編寫
1)build.gradle添加依賴 implementation 'com.virjar:sekiro-api:1.0.1'
2)在service中啟動client作谭,并添加handler
3)編寫handler邏輯代碼
4稽物、測試
測試連接:http://YOUR_IP:7008/asyncInvoke?group=sokiller&action=sjd&phone=17611597503)