国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

安卓協(xié)議逆向 咸魚(yú) frida rpc 調(diào)用方案

這篇具有很好參考價(jià)值的文章主要介紹了安卓協(xié)議逆向 咸魚(yú) frida rpc 調(diào)用方案。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1 需求

通過(guò)frida rpc調(diào)用真機(jī)獲取指定關(guān)鍵字的搜索結(jié)果數(shù)據(jù)。
本文僅供大家學(xué)習(xí)及研究使用、切勿用于各種非法用途。

2 rpc 簡(jiǎn)介

frida 提供了一種跨平臺(tái)的 rpc (遠(yuǎn)程過(guò)程調(diào)用)機(jī)制,通過(guò) frida rpc 可以在主機(jī)和目標(biāo)設(shè)備之間進(jìn)行通信,并在目標(biāo)設(shè)備上執(zhí)行代碼,可實(shí)現(xiàn)功能如下:
1、動(dòng)態(tài)地修改函數(shù)和方法的參數(shù)和返回值。
2、監(jiān)視和攔截特定函數(shù)和方法的調(diào)用。
3、修改內(nèi)存中的數(shù)據(jù)和指令。
4、與目標(biāo)設(shè)備上的應(yīng)用程序進(jìn)行交互,發(fā)送和接收數(shù)據(jù)。
5、在運(yùn)行時(shí)加載自己的 JavaScript 腳本,從而實(shí)現(xiàn)自定義的行為修改。

3 軟硬件工具

app 版本:7.4.70
設(shè)備:K40 刷 piexl 11 rom
抓包工具:Charles
反匯編工具:JEB、JADX、IDA
inject:frida

4 抓包

POST /gw/mtop.taobao.idle.search.glue/8.0/ HTTP/1.1
x-sgext: JAfKISv0W5XonL3HUeX4UiH7EfgS%2BwL4F%2FIX8wL7F%2FoC%2BQ3%2FDfoN%2Bw37DfsN%2Bw37DfsN%2Bw35E%2BYQ5hL4DfkT5hHmEeYR5hHmEeYR5hHmEeYR5hHmEOYX%2Bg38EeYT%2Bg36DfoN%2BBnpEPwW%2BBH%2FF%2FoQ%2FQL6E6lA%2BhH6EPlH%2FRWoFvMT6RD%2FGekY6RL%2BAvoR%2BhbpEukQ6RDpEOkQ6RDpE%2BkQ6RP6AvkC%2FwKpAvoC%2BgL6AvoC%2BgLpROlHrwL6AqxEr0T6FukR%2BhH6EQ%3D%3D
umid: Y6mM0d1XDnwDAAZc4d8Tk60B
x-sign: azU7Bc002xAAJzB6M9wiB4WMskX6dzB3PW%2F64QfVy78rMahh4hODtL0DoF9kmgIWRqfEkGhlFlqjHfQDYE50A5EzkuewtzB3MLcwdz
x-nettype: WIFI
x-pv: 6.3
x-nq: WIFI
EagleEye-UserData: spm-cnt=a2170.8011571.0.0&spm-url=a2170.unknown.0.0
first_open: 1
x-features: 27
x-app-conf-v: 0
x-mini-wua: HHnB_QQx7EhGYzt0aRv0%2BjcjSfSTdMh9NXopIhtlxCcIGWkyEPONy4fMU296Q4NG4PEFmdynoG21RVXefkf%2Ff8G%2Fqlkl8cahX%2BEk3JT5GB2Uh4TNEqzzblgemWV%2Bitf42AKL%2FrWZLKkzalExnviNeICDt5A%3D%3D
content-type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 630
x-t: 1672056548
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
x-bx-version: 6.5.56
f-refer: mtop
x-extdata: openappkey%3DDEFAULT_AUTH
x-ttid: 231200%40fleamarket_android_7.4.70
x-app-ver: 7.4.70
x-c-traceid: Y6mM0d1XDnwDAAZc4d8Tk60B16720565484910160126869
x-location: 0%2C0
x-umt: 2QMB7AlLPMcI7wKFTpWcJNO9Tq3ykFES
a-orange-q: appKey=21407387&appVersion=7.4.70&clientAppIndexVersion=1120221225203700833&clientVersionIndexVersion=0
x-utdid: Y6mM0d1XDnwDAAZc4d8Tk60B
x-appkey: 21407387
x-devid: AnlVbDHuTb2u0LWMPSEZxO4CdI4PNLcEAjN85BBOipB9
user-agent: MTOPSDK%2F3.1.1.7+%28Android%3B11%3BXiaomi%3BM2012K11AC%29
Host: g-acs.m.goofish.com
Accept-Encoding: gzip
Connection: Keep-Alive
data=%7B%22activeSearch%22%3Afalse%2C%22bizFrom%22%3A%22home%22%2C%22disableHierarchicalSort%22%3A0%2C%22forceUseInputKeyword%22%3Afalse%2C%22forceUseTppRepair%22%3Afalse%2C%22fromFilter%22%3Afalse%2C%22fromKits%22%3Afalse%2C%22fromLeaf%22%3Afalse%2C%22fromShade%22%3Afalse%2C%22fromSuggest%22%3Afalse%2C%22keyword%22%3A%22%E4%B8%9D%E8%A2%9C%22%2C%22pageNumber%22%3A1%2C%22resultListLastIndex%22%3A0%2C%22rowsPerPage%22%3A10%2C%22searchReqFromActivatePagePart%22%3A%22historyItem%22%2C%22searchReqFromPage%22%3A%22xyHome%22%2C%22searchTabType%22%3A%22SEARCH_TAB_MAIN%22%2C%22shadeBucketNum%22%3A-1%2C%22suggestBucketNum%22%3A27%7D

多次抓包,發(fā)現(xiàn)變化的字段有:

x-sgext、x-sign、x-mini-wua、x-c-traceid、x-t、Content-Length

5 參數(shù)分析

先從 x-sign 值入手, apk 包拖入 jadx 搜索,得到以下結(jié)果:

frida rpc,逆向分析,rpc,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

?一個(gè)個(gè)點(diǎn)進(jìn)去查看,發(fā)現(xiàn)并沒(méi)有有價(jià)值的東西,僅僅只是構(gòu)建字段名等操作,并且我嘗試 hook 這些點(diǎn),并沒(méi)有得到有用的信息,換 JEB 看看,反復(fù)搜索觀察,最終定位到 getUnifiedSign 這個(gè)函數(shù):

frida rpc,逆向分析,rpc,網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)

?

跟進(jìn)查看它有三處調(diào)用點(diǎn):

1

2

3

4

5

Lmtopsdk/security/ISign;->getUnifiedSign(Ljava/util/HashMap;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/util/HashMap;,,

Lmtopsdk/security/AbstractSignImpl;->getUnifiedSign(Ljava/util/HashMap;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/util/HashMap;,,

Lmtopsdk/security/InnerSignImpl;->getUnifiedSign(Ljava/util/HashMap;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/util/HashMap;,,

解析:
第 1 處定義了 ISign 的接口,并寫了 getUnifiedSign 方法,代碼有刪減:

1

2

3

public interface ISign {

????HashMap getUnifiedSign(HashMap arg1, HashMap arg2, String arg3, String arg4, boolean arg5, String arg6);

}

第 2 處定義了一個(gè)抽象類 AbstractSignImpl 實(shí)現(xiàn)了 ISign 接口中的 getUnifiedSign 方法,當(dāng)類實(shí)現(xiàn)接口的時(shí)候,類要實(shí)現(xiàn)接口中所有的方法。否則,類必須聲明為抽象的類。該處聲明的為抽象類,并不需要實(shí)現(xiàn)接口,代碼有刪減:

1

2

3

4

5

6

public abstract?class?AbstractSignImpl implements ISign {

????@Override??//?mtopsdk.security.ISign

????public HashMap getUnifiedSign(HashMap arg2, HashMap arg3, String appKey, String authCode, boolean useWua, String requestId) {

????????return?null;

????}

}

第 3 處定義了 InnerSignImpl 類繼承 AbstractSignImpl,java中規(guī)定抽象類的子類必須給出抽象類中的抽象方法的具體實(shí)現(xiàn),除非該子類也是抽象類。InnerSignImpl 并不是抽象類,也可以看出它實(shí)現(xiàn)了 getUnifiedSign 方法,代碼有刪減:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

public?class?InnerSignImpl extends AbstractSignImpl {

????@Override??//?mtopsdk.security.AbstractSignImpl

????public HashMap getUnifiedSign(HashMap arg17, HashMap arg18, String appKey, String authCode, boolean useWua, String requestId) {

????????String instanceId?=?this.c();

????????if(appKey?==?null) {

????????????arg17.put("SG_ERROR_CODE",?"AppKey is null");

????????????TBSdkLog.e("mtopsdk.InnerSignImpl", instanceId?+?" [getUnifiedSign] AppKey is null.");

????????????return?null;

????????}

????????if(arg17?==?null) {

????????????TBSdkLog.e("mtopsdk.InnerSignImpl", instanceId?+?" [getUnifiedSign] params is null.appKey="?+?appKey);

????????????return?null;

????????}

????????if(this.f?==?null) {

????????????arg17.put("SG_ERROR_CODE",?"unified is null");

????????????TBSdkLog.e("mtopsdk.InnerSignImpl", instanceId?+?" [getUnifiedSign]sg unified sign is null, please call ISign init()");

????????????return?null;

????????}

????????try?{

????????????HashMap?input?=?new HashMap();

????????????String data?=?(String)this.a(arg17, appKey, true).get("INPUT");

????????????boolean v10?=?StringUtils.isBlank(data);

????????????if(v10) {

????????????????TBSdkLog.e("mtopsdk.InnerSignImpl", this.c()?+?" [getUnifiedSign]get sign failed with sign data empty ",?"appKeyIndex="?+?this.a.k?+?",authCode="?+?this.a.i);

????????????????return?null;

????????????}

????????????input.put("appkey", appKey);

????????????input.put("data", data);

????????????input.put("useWua", Boolean.valueOf(useWua));

????????????input.put("env", Integer.valueOf(this.d()));

????????????input.put("authCode", authCode);

????????????input.put("extendParas", arg18);

????????????input.put("requestId", requestId);

????????????input.put("api", arg17.get("api"));

????????????HashMap output?=?this.f.getSecurityFactors(input);

????????????if(output !=?null && !output.isEmpty()) {

????????????????return?output;

????????????}

????????????TBSdkLog.e("mtopsdk.InnerSignImpl", this.c()?+?" [getUnifiedSign]get sign failed with no output ",?"appKeyIndex="?+?this.a.k?+?",authCode="?+?this.a.i);

????????}

????????catch(SecException v0_1) {

????????????TBSdkLog.e("mtopsdk.InnerSignImpl", this.c()?+?" [getUnifiedSign]get sign failed and SecException errorCode "?+?v0_1.getErrorCode()?+?",appKeyIndex="?+?this.a.k?+?",authCode="?+?this.a.i, v0_1);

????????}

????????catch(Throwable v0) {

????????????TBSdkLog.e("mtopsdk.InnerSignImpl", this.c()?+?" [getUnifiedSign]get sign failed exception ,appKeyIndex="?+?this.a.k?+?",authCode="?+?this.a.i, v0);

????????}

????????return?null;

????}

}

從該函數(shù)中不難發(fā)現(xiàn)里面包含了許多抓包中的參數(shù)信息,有理由懷疑程序就是在此處進(jìn)行組包并請(qǐng)求信息的!

6 hook getUnifiedSign

分析到這了,先 hook 看看 getUnifiedSign 函數(shù)請(qǐng)求和返回都是些啥,hook 代碼:

1

2

3

4

5

6

7

8

9

10

11

12

function main() {

????Java.perform(function () {

????????var InnerSignImpl?=?Java.use("mtopsdk.security.InnerSignImpl");

????????InnerSignImpl["getUnifiedSign"].implementation?=?function (params, ext, appKey, authCode, useWua, requestId) {

???????????console.log('\ngetUnifiedSign is called'?+?', '?+?'\nparams: \n'?+?params?+?'\n'?+?'ext: \n'?+?ext?+?'\n'?+?'appKey: \n'?+?appKey?+?'\n'?+?'authCode: \n'?+?authCode?+?'\n'?+?'useWua: \n'?+?useWua?+?'\n'?+?'requestId: \n'?+?requestId);

????????????var ret?=?this.getUnifiedSign(params, ext, appKey, authCode, useWua, requestId);

????????????console.log('getUnifiedSign ret value is '?+?ret);

????????????return?ret;

????????};

????});

}

setImmediate(main)

搜索關(guān)鍵字:黑絲。
結(jié)果:

getUnifiedSign is called,
params:
{data={"activeSearch":false,"bizFrom":"home","disableHierarchicalSort":0,"forceUseInputKeyword":false,"forceUseTppRepair":false,"fromFilter":false,"fromKits":false,"fromLeaf":false,"fromShade":false,"fromSuggest":false,"keyword":"黑絲","pageNumber":1,"resultListLastIndex":0,"rowsPerPage":10,"searchReqFromActivatePagePart":"searchButton","searchReqFromPage":"xyHome","searchTabType":"SEARCH_TAB_MAIN","shadeBucketNum":-1,"suggestBucketNum":27}, deviceId=AnlVbDHuTb2u0LWMPSEZxO4CdI4PNLcEAjN85BBOipB9, sid=null, uid=null, x-features=27, appKey=21407387, api=mtop.taobao.idle.search.glue, lat=0, lng=0, utdid=Y6mM0d1XDnwDAAZc4d8Tk60B, extdata=openappkey=DEFAULT_AUTH, ttid=231200@fleamarket_android_7.4.70, t=1672065081, v=8.0}
ext:
{pageId=, pageName=}
appKey:
21407387
authCode:
null
useWua:
false
requestId:
r_342
getUnifiedSign ret value is
{x-sgext=JAc6QkgEOGWLbN43MhWbokILcghxC2EIdAJ0A2EJdghhCW4PbgpuC24LbgtuC24LbgtuC24MdRZzFnQNbgx1FnIWchZyFnIWchZyFnIWchZyFnIWcxZzDncWcw53FnEWchZyFnACYQt0DXAKdwxyC3UZcgghW3IKcgtxXHUOIA17CGEJdgphA2EJdhlyCnINYQlhC2ELYQthC2ELYQhhC2EOcRlxGXUZcw5hCmEKYQphCmEKYRknGSRfYQphXCdfJwInGXIKcgpy, x-umt=2QMB7AlLPMcI7wKFTpWcJNO9Tq3ykFES, x-mini-wua=HHnB_LsOm2MbDDQX8pocsAv844s/AJ3eeRpQBvQ0ruCym5E4E9z73i+wqyWX+kYoOCLjd0M+Af0hvQxs8NJyeS1/+qAd+g60eGM0Y7snvKtTeCvVhBnNESbEFrPu+orzouidZjoRxOAXN2Cpe1icpSFPKMA==, x-sign=azU7Bc002xAAJAe6xWI/sfnl+vxS1Be0CqzNIjAW/Hwc8p+i1dC0d4rAl5xTWTXVcWTzU1+mIZmU3sPAV41DwKbwpS1llAe0BZQHtA}

參數(shù)都在這了,這就好辦了,rpc 調(diào)用就能解決,注意這邊的 data 數(shù)據(jù)是進(jìn)行了 url 編碼的,需進(jìn)行進(jìn)一步轉(zhuǎn)化。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-729246.html

到了這里,關(guān)于安卓協(xié)議逆向 咸魚(yú) frida rpc 調(diào)用方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【粉絲福利社】Android應(yīng)用安全實(shí)戰(zhàn):Frida協(xié)議分析(文末送書(shū)-完結(jié))

    【粉絲福利社】Android應(yīng)用安全實(shí)戰(zhàn):Frida協(xié)議分析(文末送書(shū)-完結(jié))

    ?? 作者簡(jiǎn)介,愚公搬代碼 ??《頭銜》:華為云特約編輯,華為云云享專家,華為開(kāi)發(fā)者專家,華為產(chǎn)品云測(cè)專家,CSDN博客專家,CSDN商業(yè)化專家,阿里云專家博主,阿里云簽約作者,騰訊云優(yōu)秀博主,騰訊云內(nèi)容共創(chuàng)官,掘金優(yōu)秀博主,51CTO博客專家等。 ??《近期榮譽(yù)》:

    2024年04月09日
    瀏覽(34)
  • rpc、gRPC快速入門,python調(diào)用,protobuf協(xié)議

    rpc、gRPC快速入門,python調(diào)用,protobuf協(xié)議

    遠(yuǎn)程過(guò)程調(diào)用協(xié)議RPC (Remote Procedure Call Protocol) RPC是指遠(yuǎn)程過(guò)程調(diào)用,也就是說(shuō)兩臺(tái)服務(wù)器A,B,一個(gè)應(yīng)用部署在A服務(wù)器上,想要調(diào)用B服務(wù)器上應(yīng)用提供的函數(shù)/方法,由于不在一個(gè)內(nèi)存空間,不能直接調(diào)用,需要通過(guò)網(wǎng)絡(luò)來(lái)表達(dá)調(diào)用的語(yǔ)義和傳達(dá)調(diào)用的數(shù)據(jù) 舉例:在 a服務(wù)內(nèi)

    2024年02月13日
    瀏覽(23)
  • 常見(jiàn)的遠(yuǎn)程過(guò)程調(diào)用(RPC)分析

    常見(jiàn)的遠(yuǎn)程過(guò)程調(diào)用(RPC)框架包括了許多開(kāi)源和商業(yè)解決方案,它們旨在簡(jiǎn)化分布式系統(tǒng)中服務(wù)之間的通信和調(diào)用。以下是一些常見(jiàn)的 RPC 框架及其特點(diǎn): gRPC : 基于 HTTP/2 協(xié)議的高性能 RPC 框架,由 Google 開(kāi)發(fā)。 使用 Protocol Buffers 進(jìn)行數(shù)據(jù)序列化,提供了跨語(yǔ)言的支持。

    2024年02月02日
    瀏覽(20)
  • catface,使用Interface定義Controller,實(shí)現(xiàn)基于Http協(xié)議的RPC調(diào)用

    : Interface定義Controller;feign服務(wù)端;feign interface;Http RPC;cat-client;cat-server;catface; 概???要: catface ,使用類似 FeignClient 的Interface作為客戶端發(fā)起Http請(qǐng)求,然后在服務(wù)端使用實(shí)現(xiàn)了這些Interface的類作為 Controller 角色,將客戶端、服務(wù)端通過(guò)Interface耦合在一起,實(shí)

    2024年02月09日
    瀏覽(25)
  • Android逆向——過(guò)frida檢測(cè)+so層算法逆向

    Android逆向——過(guò)frida檢測(cè)+so層算法逆向

    frida可以說(shuō)是逆向里面很受歡迎的工具了,你可以在運(yùn)行的時(shí)候得到幾乎你想要的所有東西,函數(shù)地址、內(nèi)存數(shù)據(jù)、java實(shí)例,根據(jù)我們的需要去修改程序的運(yùn)行邏輯等等,但是太流行也不好,迎來(lái)了各種檢測(cè)。 ptrace占坑、進(jìn)程名檢測(cè)、端口檢測(cè)。(這繞過(guò)太簡(jiǎn)單了) D-Bus通信

    2024年01月17日
    瀏覽(27)
  • android frida 逆向 自吐加密算法

    android frida 逆向 自吐加密算法

    前言: ?? frida? hook?? android?? Android? 逆向神器 前幾天在學(xué)習(xí) Android 逆向的時(shí)候發(fā)現(xiàn)了一個(gè)神器:通過(guò)? frida hook? 我們可以 “劫持” ? 一些 函數(shù) 為我們所用, 今天就和大家上手一個(gè)? 加密函數(shù)的劫持 讓打印出: 加密秘鑰 密文 效果如下:可以很直觀的看出 加密算法以

    2024年02月11日
    瀏覽(37)
  • http post協(xié)議實(shí)現(xiàn)簡(jiǎn)單的rpc協(xié)議,WireShark抓包分析
  • 網(wǎng)易易盾——推理拼圖驗(yàn)證碼參數(shù)逆向分析和調(diào)用

    網(wǎng)易易盾——推理拼圖驗(yàn)證碼參數(shù)逆向分析和調(diào)用

    本篇文章主要是對(duì)驗(yàn)證的提交參數(shù)進(jìn)行逆向分析,成功演示結(jié)果在最底部 目標(biāo)網(wǎng)址 抓包 提交分析 拖動(dòng)提交參數(shù) 以下幾個(gè)參數(shù)是會(huì)變動(dòng)的,所以我們主要是對(duì)這幾個(gè)參數(shù)進(jìn)行分析 我們先直接拖動(dòng)驗(yàn)證一下,看下請(qǐng)求發(fā)送,會(huì)發(fā)送一個(gè)check請(qǐng)求,再查看一下請(qǐng)求堆棧調(diào)用,所

    2024年02月13日
    瀏覽(19)
  • Android Spider App逆向 Frida - 夜神模擬器安裝配置 基本使用

    Android Spider App逆向 Frida - 夜神模擬器安裝配置 基本使用

    Frida 是一款基于 Python + JavaScript 的 Hook 與調(diào)試框架,實(shí)現(xiàn)app逆向的強(qiáng)大工具; 模擬器下載安裝教程:https://blog.csdn.net/EXIxiaozhou/article/details/127767808 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 Frida是一款易用的跨平 Hook 工具, Java 層到 Native 層的 Hook 無(wú)所不能,是一種

    2024年01月24日
    瀏覽(30)
  • 安卓Frida hook脫殼環(huán)境配置過(guò)程

    安卓Frida hook脫殼環(huán)境配置過(guò)程

    本文記錄開(kāi)始于22/7/22/16:50 目的是記錄安卓Android脫殼過(guò)程 使用Frida對(duì)360加固的apk進(jìn)行脫殼 操作環(huán)境:win10+Android雷神模擬器 (1)Java JDK (2) Android SDK 平臺(tái)工具軟件包 下載:https://developer.android.com/studio/releases/platform-tools 配置:參考教程: http://t.csdn.cn/qXGXi (3)安卓模擬器

    2024年02月06日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包