破解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"
形同虚设
其实比较简单
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)