破解app 在so层的密钥key

一、抓包分析

首先下载app半次元,打开并抓取视频链接

二、无需脱壳,用jadx-gui打开

分析加密参数
搜索关键字
一步一步往上推,就知道密钥在System.loadLibrary("random");

三、hook方法

上frida,hook md5
frida脚本如下
hook.js

Java.perform(function () {
    console.log('HOOK Start!!!');
    var Des3Encrypt = Java.use("com.banciyuan.bcywebview.utils.encrypt.Encrypt");//
    console.log(Des3Encrypt);
    /加密
    Des3Encrypt.a.overload('java.lang.String').implementation = function (args1) {
        console.log("encryptByPublicKey args1:",args1);
        // console.log("encryptByPublicKey args2:",args2);
        // console.log("encryptByPublicKey args3:",args3);
        //console.log("Encrypt args4:",args4);
        var result1 = this.a(args1);
        console.log("encryptByPublicKey result1==",result1);
        return result1;
    };
});

python 脚本

import logging
import frida
import sys

logging.basicConfig(level=logging.DEBUG)


def on_message(message, data):
    print(message)


with open('ban_ci_yuan.js', 'r', encoding='utf-8') as f:
    sta = ''.join(f.readlines())

rdev = frida.get_remote_device()
processes = rdev.enumerate_processes()  # 安卓手机中的所有进程
print(processes)
# android.content.Intent android.content.Context android.view.ViewGroup  java.lang.String, java.util.List  [Ljava.lang.String;(String[]), javax.net.ssl.SSLSession  SSLSession
session = rdev.attach("com.banciyuan.bcywebview")
print(session)
script = session.create_script(sta)

script.on("message", on_message)
script.load()
sys.stdin.read()

四、查找so层的密钥


用IDA 打开 librandom.so
点击以下方法
Java_com_banciyuan_bcywebview_utils_encrypt_Encrypt_getRandomString
打开之后就发现了密钥,aCom_banciyuan_ ; "com_banciyuan_AI"
形同虚设
其实比较简单

秋秋:165554127

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值