手把手教你搭個Frida + Sekiro Rpc框架
一、目標
聯手機簽名是個比較取巧的方案,之前我們介紹過
android連真機簽名公網ip更新方案
http://91fans.com.cn/post/androidipsend/
Sekiro + Xposed 簽名解決方案
http://91fans.com.cn/post/sekiroone/
現在frida用的比較多,並且Sekiro也升級了新版本,我們今天就來手把手教你搭個 Frida + Sekiro Rpc框架。
二、步驟
我們以這個手機號加密演算法為例
http://91fans.com.cn/post/smallvideosignthr/
先執行伺服器端
官網在這裡 http://github.com/virjar/sekiro
git clone下來;
在Linux或者mac上,執行指令碼 build_demo_server.sh,之後得到釋出壓縮包:sekiro-service-demo/target/sekiro-release-demo.zip
如果是windows,或者不想自己構建,可以在這裡直接下載
http://oss.virjar.com/sekiro/sekiro-demo
把zip包傳到伺服器上去解壓
window下執行 sekiro.bat
Linux/mac下執行 sekiro.sh
這樣伺服器端就跑起來。
firda開發sekiro客戶端
sekiro是個相當牛X的庫,基本上就是開箱即用了。
// 在普通Android應用中使用sekiro
new SekiroClient("test-android", UUID.randomUUID().toString())
.setupSekiroRequestInitializer(new SekiroRequestInitializer() {
@Override
public void onSekiroRequest(SekiroRequest sekiroRequest, HandlerRegistry handlerRegistry) {
handlerRegistry.registerSekiroHandler(new ClientTimeHandler());
}
}).start();
在Android程式碼裡面這樣一條api就可以了,然後在ClientTimeHandler類裡面寫邏輯
frida使用就稍稍有點複雜,複雜的點就在於要建立一個java類 ClientTimeHandler 來處理呼叫邏輯。
``` function initSekiro() { const SekiroClient = Java.use('com.virjar.sekiro.business.api.SekiroClient'); const ActionHandler = Java.use('com.virjar.sekiro.business.api.interfaze.ActionHandler'); const SekiroRequestInitializer = Java.use('com.virjar.sekiro.business.api.interfaze.SekiroRequestInitializer');
// 註冊一個ClientTimeHandler類,繼承 ActionHandler
const ClientTimeHandler = Java.registerClass({
name: 'ClientTimeHandler',
implements: [ActionHandler],
methods: {
action: function () {
return 'mobile';
},
handleRequest: function (sekiroRequest, sekiroResponse) {
const requestJsonData = sekiroRequest.getJsonModel();
const requestData = JSON.parse(requestJsonData)['requestData'];
if(!requestData){
sekiroResponse.failed(JavaString.$new('requestData 不能為空'));
}else{
try{
sekiroResponse.success(callMobile(requestData));
}catch(error){
sekiroResponse.failed(JavaString.$new(error.stack));
throw error;
}
}
}
}
})
// 註冊一個 SekiroRequestDefault類, 繼承SekiroRequestInitializer const SekiroRequestDefault = Java.registerClass({ name: "SekiroRequestDefault", implements: [SekiroRequestInitializer], methods: { onSekiroRequest: function (sekiroRequest, handlerRegistry) { handlerRegistry.registerSekiroHandler(ClientTimeHandler.$new()); } } });
const clientID = guid();
const group = 'fridaHook_atlasEncrypt';
const ip = '110.42.246.110';
// 服務端埠號 預設是 conf/config.properties 裡面配置5620, 這裡改成了 8989
const sekiro = SekiroClient.$new(group, clientID, ip, 8989);
sekiro.setupSekiroRequestInitializer(SekiroRequestDefault.$new());
sekiro.start();
} ```
這就可以了,掛上frida跑起來
sekiro狀態檢視和訪問服務
http://110.42.246.110:8989/business-demo/groupList 展示當前系統中註冊過的所有 group
{"data":["fridaHook_atlasEncrypt"],"ok":true,"status":0}
http://110.42.246.110:8989/business-demo/clientQueue?group=fridaHook_atlasEncrypt 展示特定 group 下,註冊過那些客戶端/手機。
{"data":["65c8e8b5-1a67-2036-5b38-769cb670aeb3"],"ok":true,"status":0}
執行一下看看結果
```
-- coding: utf-8 --
import requests
url = 'http://110.42.246.110:8989/business-demo/invoke'
mobileid = '18913872618'
data = { 'group': 'fridaHook_atlasEncrypt', 'action': 'mobile', 'requestData': mobileid }
res = requests.post(url,json=data).json() print(res['data']) ```
結果很完美
3sCt3iAAMzIwOTAxMjA4AM8HAO7Jtk8ia8xTExAAAACFS7z70nRA3Ppgtdz9Kefb
收工上鮮啤
三、總結
基本上java的庫,frida都可以無縫利用。比Xposed玩起來方便多了。
有個小小的問題是 frida hook的app有崩潰的機率, 這個就需要搞個看門狗來實現了。
sekiro 官方文件
http://sekiro.virjar.com/sekiro-doc/index.html
frida 載入 sekiro dex 檔案 實現與服務端互動
這才知道我全部的努力,不過是完成了普通的生活。
TIP: 本文的目的只有一個就是學習更多的逆向技巧和思路,如果有人利用本文技術去進行非法商業獲取利益帶來的法律責任都是操作者自己承擔,和本文以及作者沒關係,本文涉及到的程式碼專案可以去 奮飛的朋友們 知識星球自取,歡迎加入知識星球一起學習探討技術。有問題可以加我wx: fenfei331 討論下。
關注微信公眾號: 奮飛安全,最新技術乾貨實時推送
- 某問答社群App x-zse-96簽名分析
- 手把手教你搭個Frida Sekiro Rpc框架
- 某小影片App v10.x 手機號加密演算法分析
- Trace大盤點
- 某神奇App data加密演算法解析(一)
- 某電商App 返回資料加密解密分析(四)
- 某汽車社群App 簽名和加解密分析
- 如何保護你的程式碼 - Ollvm(一)
- 另一個生鮮App 抓包和mfsig簽名分析(一)
- 某音樂App 抓包和signature簽名分析
- Unidbg Web = Unidbg-server 手把手教你搭個簽名伺服器
- IDA F5 增強外掛: I Have a Dream (二)
- IDA F5 增強外掛,還我原始碼(一)
- 借你一雙慧眼, Frida Native Trace
- frida除錯不了怎麼辦?著急,線上等!
- IOS Theos Tweak 之 HelloWorld
- Frida-syscall-interceptor
- 成熟的App會Hook自己
- Frida在windows上的玩法
- IOS 某電商App簽名演算法解析(二) Frida RPC呼叫