某广告SDK流量加解密-请求
今天刚好在看某甲广告sdk,发现他请求跟响应的数据都是加密的,于是跟了一下,做个记录。
样本的话,随便那个apk都行,现在基本99%应用都集成了穿山甲
请求
先找一个sdk中请求广告的函数开始跟(sdk文档更新日志 - 穿山甲广告平台)
可以看到反射调用com.bytedance.sdk.openadsdk.TTC5Proxy类的loadFeed函数,通过对该函数进行静态追踪,在com.bytedance.sdk.openadsdk.core.r类中看到几个打包函数,其中a函数较为可疑,如下:
hook该函数,得到其返回的数据
发现其数据很可能就是发包的参数,先抓包验证一下
果然,a函数的返回数据就是发包的参数,现在对a函数进行详细分析:
通过上面的代码能看到,发包参数中加密字段message的值就在str3中
str3 是由 2 拼接上 k2 再拼接上 a2 所得,现在先来解析k2,k2由函数k返回所得
从k函数可知,a.a函数返回若不为空则a.a函数的返回值就是k,若a.a函数返回空,则b.a的返回值为k,现在hook a.a函数
上过上图能看到,k确实是由a.a函数返回所得,对a继续追踪,发现其会产生一个8位的随机数然后将该随机数传进j.a处理
如下图,可知,通过for循环依次去除每一个随机数,然后将随机数进行切割,先取出随机数的低字节,然后以低字节的前4位为下标和后4位为下标 依次从{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}中取出两个数放进新的数组,这样8位随机数,就会取出16个数字组成一个新的数组,然后以字符串形式返回
现在开始跟踪a2的获取过程
通过上图能看到,a2由a.a函数返回,该函数接受2个参数,第一个是jSONObject2,第二个是以k2作为参数的 f 函数的返回值
通过下图的代码能看出,f 函数的返回值为将k2的前8位与后八位对换后的字符串
第一个参数 jSONObject2 的内容具体为如下
{"abtest":{"version":"3372976","external_ab_vid":"","param":"{\"settings\":{\"enable_go_endcard_detail_page\":true}}","tob_ab_sdk_version":""},"request_id":"60fcd629-057b-4405-b9ff-3f006c21e289","ad_sdk_version":"3.3.0.1","source_type":"app","app":{"appid":"5052795","name":"一键清理管家","package_name":"com.xiaoniu.master.cleanking","version_code":"41","version":"2.7.0","is_paid_app":false,"apk_sign":"B2:65:82:41:27:BC:27:92:F7:BC:53:5F:39:D8:E9:C8:59:2D:0B:76"},"device":{"android_id":"8d44a9d0a44d2c5a","uuid":"09309f69-4db0-449e-9c65-31276727f541","ssid":"<unknown ssid>","wifi_mac":"02:00:00:00:00:00","power_on_time":"595812973","rom_version":"miui_V11_V11.0.3.0.QFLCNXM","sys_compiling_time":"1605014317000","type":1,"os":1,"os_version":"10","vendor":"Xiaomi","model":"Redmi 7","language":"zh","conn_type":1,"mac":"BC:7F:A4:DF:75:D4","screen_width":720,"screen_height":1369,"oaid":"eafdf6a207b5b8b","free_space":9662951424,"applog_did":"2296200784252815","sec_did":"","orientation":2},"user":{},"ua":"Mozilla\/5.0 (Linux; Android 10; Redmi 7 Build\/QKQ1.191008.001; wv) AppleWebKit\/537.36 (KHTML, like Gecko) Version\/4.0 Chrome\/83.0.4103.101 Mobile Safari\/537.36","ip":"10.251.203.124","adslots":[{"id":"945974395","prime_rit":"","show_seq":0,"adtype":5,"render_method":1,"accepted_size":[{"width":640,"height":320}],"pos":3,"is_support_dpl":true,"is_origin_ad":true,"ad_count":1}],"ts":1636350263,"req_sign":"098fc4d6f21607923d46622664f7e35d"
}
在a 函数中 首先对参数二,进行AES加密得到密钥,然后用此密钥对参数一进行加密,加密规则为如下
通过以上加密得到的值即为 a2
某广告SDK流量加解密-请求相关推荐
- 某广告SDK流量加解密-响应
接着上次的写,这次跟一下响应数据的解密 响应 看过这么多广告sdk,他们的流量数据,基本都是放在 JSONObject 中,所以直接从 JSONObject 中下手hook就稳稳的 其调用栈为如下: ...
- 自动加解密请求包响应包插件(autoDecoder)
之前所立的一个flag:明文传,明文响应:密文传,密文响应 0x01 背景 当数据包里都是密文,我们无从下手:就算是获得了加解密的一些关键信息,能解密出来,但是每个数据包我们都需要慢慢解密,请求包需要 ...
- 移动安全-Burpy自动化加解密APP报文
文章目录 前言 Burpy实战 演示环境 插件简介 RPC脚本 Burpy效果 手动加解密 自动加解密 总结 前言 我在前面一篇博文 移动安全-Brida加解密数据 中介绍了如何使用 Brida 插件 ...
- 微信加解密流程,证书作用讲解,官方SDK使用教程
微信支付接口常用参数及证书区分 1. 私钥和证书 1.1 商户API证书 1.1.1 功能介绍 API证书,是指由商户申请的,用来证实商户身份的证书.API证书由证书授权机构Certificate A ...
- 软件安全加解密,程序授权管理控件CrypKey SDK
CrypKey SDK 为软件开发者提供极为灵活的执行副本保护和自定义许可策略.通过 CrypKey SDK,函数调用被开发者嵌入到被保护程序的源码中. 具体功能: 创建自定义对话框 保护程序的特定方 ...
- android 中动态加载广告sdk
关于动态加载sdk的话题,网上介绍比较多:今天通过第三方工具来取个巧,虽然方法也有点不太靠谱,但终归是一个思路. 项目里面接入了穿山甲sdk和广点通sdk广告,结果放到应用市场时说被拒了,因为有广告, ...
- Popular MVC框架请求响应数据加解密@Decrypt和@Encrypt的使用示例
简介 此项目用于演示popularmvc如何提供统一全自动化的API隐私数据保护,并且可以做到业务无感和灵活指定数据加解密算法. 请求数据加密使用@Decrypt注解,响应信息加密使用@Encrypt ...
- Jmeter接口请求Base64加解密
jmeter 对报文进行Base64加解密心得. 业务需求是,对接口进行测试,但需要对报文进行加密,对返回的密文进行解密. 遇到的问题:接口传的报文字段,因为没有加密,所以 ...
- Postman-APP登入模拟请求-数据加解密
Postman-APP登入模拟请求-数据加解密 简单说明一下 对于Postman的使用,一般情况下只要发发确定的请求与参数就可以的了.这个大家都会的 ,灰常的简单. 然而,在使用的时候,尤其是接口测试 ...
最新文章
- Linux supervisor守护进程的安装和使用
- Switch入门第一讲
- (011) java后台开发之泛型类
- spark2.4.5源码编译成hadoop-2.6.0-cdh5.15.1
- 近期资料分享汇总,还不快来看看你漏了哪份没拿?
- 银行营业网点管理系统——implt包(BranchesDaoImpl )
- Tomcat配置阿里云免费的SLL证书
- 判定是否在词典中 java_检查字典中是否已存在给定键
- LA 4287 有相图的强连通分量
- C#窗体excel与dbf的导入导出
- VFIO PassThrough
- 《游牧者的抉择》读书笔记
- 在OPENSTACK中 WIN7和WIN2008 R2实例启动时蓝屏报 STOP:0X0000005DT
- 华为鸿蒙福田办公室,华为鸿蒙第一批名单
- OCP认证体系大揭秘
- 工厂厂里的SIS系统
- 游戏蓝牙耳机哪款好?2021商城最佳人气五款蓝牙耳机推荐
- linux 下 .o 文件, .a文件,.so文件的区别
- dropzonejs vue 使用_可能是史上最全面的学习资源 — VUE 开源库篇(一)
- 定位尺寸的严重错误在哪里?
热门文章
- Vue、JS——定时器倒计时封装
- 闲鱼商品详情抓取系统开发/测试完毕,可自动采集闲鱼商品详情信息
- Warpaffine
- WAV文件格式解析及处理
- git diff提示filemode发生改变(old mode xxxx、new mode xxxx)
- 1088: 手机短号 (多实例) ZZULIOJ
- 4k 显示器放大 150% 和 23寸显示器组双屏抓图问题解决
- MyBatisPlus 学习笔记_MP的AR模式
- oracle中文问号乱码,Oracle 中文记录 及 乱码 判断 说明 .(转)
- 助力绵阳市商业银行,打造高效项目生命周期管理平台