栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android apk通过 brida与frida工具进行流量加解密

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android apk通过 brida与frida工具进行流量加解密

准备环境:

android测试机一台(MI8SE 已root)

brida jar包(后期导入burp进行使用)

frida 客户端(导入手机或者模拟器)

安装apk文件到android手机中(此处仅为学习,不提供apk文件,感兴趣的朋友可以网上自行下载)

第一步:

手机设置代理:

点击应用,使用burp进行任意数据包获取。

查看到参数deviceId,使用android调试工具jadx打开apk文件(此处为非加壳apk,仅为方便学习)

,对参数进行搜索,进行代码追踪。

双击代码即可进行跳转。

查看到形似参数中将deviceId进行传入。

 查看到deviceId传入到Map集合中。

最后para集合被传入到postResponseWithParamsInMapAsync方法中。

按住ctrl进行代码跳转,进行再次追踪,查看到传入到方法postResponse中。 

 再次点击进行代码跳转,查看到构建body的方法。并成功追踪到密钥。

 按照ctrl点击加密方法跳转。

 查看到加密为AES加密。

 至此,代码层分析完毕。接下来就是通过工具利用上述收集信息进行流量加解密。

安装frida

1.通过python安装frida和frida-tools

python -m pip install frida

python -m pip install frida-tools

2.查看安装PC端frida版本,安装对应的客户端frida-sever端到/data/local/tmp(模拟器x86/真机x64)

使用adb push命令将frida文件传入到手机 /data/local/tmp路径中

adb push +frida文件存放路径+ /data/local/tmp

frida下载地址

3.进入tmp目录更改frida-sever端权限为777,然后./frida运行

4.adb forward tcp:27043 tcp:27043和adb forward tcp:27042 tcp:27042(使用此命令打开客户端2个端口)

 打开burp导入brida jar包进行安装。(此处对于burp安装jar包不在讲解)

接下来对brida进行环境配置,以及文件导入。

 

brida js文件如下:

'use strict';

// 1 - FRIDA EXPORTS
rpc.exports = {
    exportedFunction: function() {
    },
    
    //AesEncryptionBase64 encrypt
    contextcustom1: function (message) {
        console.log("Brida start :0--->" + message);
        var data = hexToString(message)
        console.log("Brida start :1--->" + data);
        var enc;
        Java.perform(function () {
            try {
                var key = "9876543210123456";
                var text = data;
                //hook class
                var AesEncryptionBase64 = Java.use('com.ese.http.encrypt.AesEncryptionBase64');
                console.log("Brida start : AesEncryptionBase64 ---> success");
                console.log("Brida start : encrypt before--->"+text);
                //hook method
                enc = AesEncryptionBase64.encrypt(key,text);
                console.log("Brida start : encrypt after--->"+enc);

            } catch (error) {
                console.log("[!]Exception:" + error.message);
            }
        });
        return stringToHex(enc);
    },

    //AesEncryptionBase64 decrypt
    contextcustom2: function (message) {
        console.log("Brida start :0--->" + message);
        var data = hexToString(message)
        console.log("Brida start :1--->" + data);
        var text;
        Java.perform(function () {
            try {
                var key = "9876543210123456";
                var enc = data;
                //hook class
                var AesEncryptionBase64 = Java.use('com.ese.http.encrypt.AesEncryptionBase64');
                console.log("Brida start : AesEncryptionBase64 ---> success");
                console.log("Brida start : decrypt before--->"+enc);
                //hook method
                text = AesEncryptionBase64.decrypt(key,enc);
                console.log("Brida start : decrypt after--->"+text);
            } catch (error) {
                console.log("[!]Exception:" + error.message);
            }
        });
        console.log("Brida start : decrypt after--->"+stringToHex(text));
        return stringToHex(text);
    },
    
    //AesEncryptionBase64 encrypt
    contextcustom3: function (message) {
        console.log("Brida start :0--->" + message);
        var data = hexToString(message)
        console.log("Brida start :1--->" + data);
        var enc;
        Java.perform(function () {
            try {
                var key = "9876543210123456";
                var text = data;
                //hook class
                var AesEncryptionBase64 = Java.use('com.ese.http.encrypt.AesEncryptionBase64');
                console.log("Brida start : AesEncryptionBase64 ---> success");
                console.log("Brida start : encrypt before--->"+text);
                //hook method
                enc = AesEncryptionBase64.encrypt(key,text);
                console.log("Brida start : encrypt after--->"+enc);

            } catch (error) {
                console.log("[!]Exception:" + error.message);
            }
        });
        return stringToHex(enc);
    },

    //AesEncryptionBase64 decrypt
    contextcustom4: function (message) {
        console.log("Brida start :0--->" + message);
        var data = hexToString(message)
        console.log("Brida start :1--->" + data);
        var text;
        Java.perform(function () {
            try {
                var key = "9876543210123456";
                var enc = data;
                //hook class
                var AesEncryptionBase64 = Java.use('com.ese.http.encrypt.AesEncryptionBase64');
                console.log("Brida start : AesEncryptionBase64 ---> success");
                console.log("Brida start : decrypt before--->"+enc);
                //hook method
                text = AesEncryptionBase64.decrypt(key,enc);
                console.log("Brida start : decrypt after--->"+text);
            } catch (error) {
                console.log("[!]Exception:" + error.message);
            }
        });
        console.log("Brida start : decrypt after--->"+stringToHex(text));
        return stringToHex(text);
    },

    getplatform: function () {
        if (Java.available) {
            return 0;
        } else if (ObjC.available) {
            return 1;
        } else {
            return 2;
        }

    }

}

// Convert a ASCII string to a hex string
function stringToHex(str) {
    return str.split("").map(function(c) {
        return ("0" + c.charCodeAt(0).toString(16)).slice(-2);
    }).join("");
}

// Convert a hex string to a ASCII string
function hexToString(hexStr) {
    var hex = hexStr.toString();//force conversion
    var str = '';
    for (var i = 0; i < hex.length; i += 2)
        str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
    return str;
}

 都为绿色为运行正常。

 使用burp即可进行流量加解密。

 

至此流量加解密已完成。 

本文仅为学习练习,方便自己记忆,文章项目中涉及的任何脚本工具,仅用于测试和学习研究,禁止用于商业用途。

禁止模仿,产生的一切问题,均由用户本人负责,作者不承担任何直接责任。

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号