今天刚好在看某甲广告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流量加解密-请求相关推荐

  1. 某广告SDK流量加解密-响应

    接着上次的写,这次跟一下响应数据的解密 响应 看过这么多广告sdk,他们的流量数据,基本都是放在 JSONObject 中,所以直接从  JSONObject 中下手hook就稳稳的 其调用栈为如下: ...

  2. 自动加解密请求包响应包插件(autoDecoder)

    之前所立的一个flag:明文传,明文响应:密文传,密文响应 0x01 背景 当数据包里都是密文,我们无从下手:就算是获得了加解密的一些关键信息,能解密出来,但是每个数据包我们都需要慢慢解密,请求包需要 ...

  3. 移动安全-Burpy自动化加解密APP报文

    文章目录 前言 Burpy实战 演示环境 插件简介 RPC脚本 Burpy效果 手动加解密 自动加解密 总结 前言 我在前面一篇博文 移动安全-Brida加解密数据 中介绍了如何使用 Brida 插件 ...

  4. 微信加解密流程,证书作用讲解,官方SDK使用教程

    微信支付接口常用参数及证书区分 1. 私钥和证书 1.1 商户API证书 1.1.1 功能介绍 API证书,是指由商户申请的,用来证实商户身份的证书.API证书由证书授权机构Certificate A ...

  5. 软件安全加解密,程序授权管理控件CrypKey SDK

    CrypKey SDK 为软件开发者提供极为灵活的执行副本保护和自定义许可策略.通过 CrypKey SDK,函数调用被开发者嵌入到被保护程序的源码中. 具体功能: 创建自定义对话框 保护程序的特定方 ...

  6. android 中动态加载广告sdk

    关于动态加载sdk的话题,网上介绍比较多:今天通过第三方工具来取个巧,虽然方法也有点不太靠谱,但终归是一个思路. 项目里面接入了穿山甲sdk和广点通sdk广告,结果放到应用市场时说被拒了,因为有广告, ...

  7. Popular MVC框架请求响应数据加解密@Decrypt和@Encrypt的使用示例

    简介 此项目用于演示popularmvc如何提供统一全自动化的API隐私数据保护,并且可以做到业务无感和灵活指定数据加解密算法. 请求数据加密使用@Decrypt注解,响应信息加密使用@Encrypt ...

  8. Jmeter接口请求Base64加解密

    jmeter 对报文进行Base64加解密心得.        业务需求是,对接口进行测试,但需要对报文进行加密,对返回的密文进行解密.        遇到的问题:接口传的报文字段,因为没有加密,所以 ...

  9. Postman-APP登入模拟请求-数据加解密

    Postman-APP登入模拟请求-数据加解密 简单说明一下 对于Postman的使用,一般情况下只要发发确定的请求与参数就可以的了.这个大家都会的 ,灰常的简单. 然而,在使用的时候,尤其是接口测试 ...

最新文章

  1. Linux supervisor守护进程的安装和使用
  2. Switch入门第一讲
  3. (011) java后台开发之泛型类
  4. spark2.4.5源码编译成hadoop-2.6.0-cdh5.15.1
  5. 近期资料分享汇总,还不快来看看你漏了哪份没拿?
  6. 银行营业网点管理系统——implt包(BranchesDaoImpl )
  7. Tomcat配置阿里云免费的SLL证书
  8. 判定是否在词典中 java_检查字典中是否已存在给定键
  9. LA 4287 有相图的强连通分量
  10. C#窗体excel与dbf的导入导出
  11. VFIO PassThrough
  12. 《游牧者的抉择》读书笔记
  13. 在OPENSTACK中 WIN7和WIN2008 R2实例启动时蓝屏报 STOP:0X0000005DT
  14. 华为鸿蒙福田办公室,华为鸿蒙第一批名单
  15. OCP认证体系大揭秘
  16. 工厂厂里的SIS系统
  17. 游戏蓝牙耳机哪款好?2021商城最佳人气五款蓝牙耳机推荐
  18. linux 下 .o 文件, .a文件,.so文件的区别
  19. dropzonejs vue 使用_可能是史上最全面的学习资源 — VUE 开源库篇(一)
  20. 定位尺寸的严重错误在哪里?

热门文章

  1. Vue、JS——定时器倒计时封装
  2. 闲鱼商品详情抓取系统开发/测试完毕,可自动采集闲鱼商品详情信息
  3. Warpaffine
  4. WAV文件格式解析及处理
  5. git diff提示filemode发生改变(old mode xxxx、new mode xxxx)
  6. 1088: 手机短号 (多实例) ZZULIOJ
  7. 4k 显示器放大 150% 和 23寸显示器组双屏抓图问题解决
  8. MyBatisPlus 学习笔记_MP的AR模式
  9. oracle中文问号乱码,Oracle 中文记录 及 乱码 判断 说明 .(转)
  10. 助力绵阳市商业银行,打造高效项目生命周期管理平台