经验教程
未读# 静态 & 实例方法 Hook
静态和实例方法的 hook 代码一致。
1234567891011var className = "com.xxxx.xx";var funcName = "func";var classObject = Java.use(className);// 静态和实例方法的hook代码一致classObject[funcName].implementation = function (x) { console.log(`${className} -> call ${funcName} - param: `, x); x = "param"; // 修改参数 除基础类型外其他类型需要自行构造。 let result = this[funcName](x); // result = "param"; // 修改返回值 return result;};
# 构造方法的 hook ($init)
123 ...
# 安装 charles
官网下载:https://www.charlesproxy.com/download/
# 电脑抓包
安装好证书,打开 charles 这开启端口抓包,可设置 PC 系统代理来抓包数据,但通常不推荐这么做,推荐使用 Proxy SwitchyOmega (Edge 插件 | chrome 也有此插件)来进行浏览器抓包。
# 代理设置
操作:Proxy -> Proxy Settings 1. 勾选 Enable tranaparent HTTP proxying 2. 勾选 Enable SOCKS proxy
# 抓取端口设置
操作:Proxy -> SSL Proxying Settings 1. 勾选 Enable SSL Proxying 2. 点击 Add,添加抓取端口
# 安装证书
操作:Help -> SSL Proxying -> Install Charles Root Certificate -> 安装证书 -> 本地计算机 -> 将所有的证书都放入下列存储 -> 点击浏览,选择” 受信任 ...
# 准备工作
APK:哔哩哔哩 6.13.0
首先通过 charles 抓包(charles 抓包配置)发现加密参数是 sign(32 位)。
使用 ajdx 打开 apk 后搜索 "sign" 并没有想要的数据,接着试着搜索 "sign=" 经过分析发现是 com.bilibili.nativelibrary.LibBili.s 生成。
# 验证加密
使用 frida 来 hook 验证以下
1234567891011121314function hookSign() { Java.perform(function () { let LibBili = Java.use("com.bilibili.nativelibrary.LibBili"); LibBili["s"].implementation = function (sortedMap) { console.log( `LibBili.s is called: sorte ...
# 声明
本逆向文章仅为学术交流和学习探讨之用,不代表任何官方立场或观点。文章内容仅供参考,读者应自行判断其真实性和可靠性。因使用本逆向文章而产生的任何直接或间接后果,本网站及作者不承担任何法律责任。请在使用本逆向文章前仔细阅读相关法律法规和条款,并确保您理解并接受本免责声明的全部内容。如有侵权行为或不当使用,请及时联系我们,我们将尽快处理。
# 逻辑分析
1.index.html 请求中有如下图两个 cookies。
2. 使用 charles 或其他抓包工具进行抓包,看到 index.html 进过三次加载,前两次是 521 状态。
3. 第一次请求的 <script> 标签中进行了 cookie 设置,cookie 值如图是被混淆的。
放到浏览器控制台中执行得到如下结果,发现 cookie 的 name 和成功响应带的 cookie 一致。
4. 第二次请求带上来第一次请求的 cookies-**jsl_clearance_s, 返回结果应该经过 ob 混淆的代码。
5. 第三次成功响应,对比 cookies 发现,**jsl_clearance_s ...
# 官方解释
JA4 + 是一套易于使用和共享的网络指纹识别方法。这些方法既是人类可读的,也是机器可读的,以促进更有效的威胁搜寻和分析。这些指纹的用例包括扫描威胁参与者、恶意软件检测、会话劫持预防、合规性自动化、位置跟踪、DDoS 检测、威胁参与者分组、反向外壳检测等等。
JA4 系列 :JA4/S/H/L/X/SSH,简称 JA4+
官方介绍 | JA4 指纹
初始指纹:
JA4 — TLS 客户端 JA4S — TLS 服务器响应
JA4H — HTTP 客户端
JA4L — 光距离 / 位置
JA4X — X509 TLS 证书
JA4SSH — SSH 流量
更多指纹正在开发中,并将在发布时添加到 JA4+ 系列中。
例子
#
# 官方解释
TLS 及其前身 SSL 用于为常见应用程序和恶意软件加密通信,以确保数据安全,因此可以隐藏在噪音中。要启动 TLS 会话,客户端将在 TCP 3 次握手之后发送 TLS 客户端 Hello 数据包。此数据包及其生成方式取决于构建客户端应用程序时使用的包和方法。服务器如果接受 TLS 连接,将使用基于服务器端库和配置以及 Client Hello 中的详细信息制定的 TLS Server Hello 数据包进行响应。由于 TLS 协商以明文形式传输,因此可以使用 TLS Client Hello 数据包中的详细信息来指纹和识别客户端应用程序。
官方介绍 | JA3 指纹
# JA3 原理
JA3 收集以下字段的字节的十进制值;SSL 版本、接受的密码、扩展列表、椭圆曲线和椭圆曲线格式。然后,它按顺序将这些值连接在一起,使用 “,” 分隔每个字段,使用 “-” 分隔每个字段中的每个值。
字段顺序如下:
SSLVersion,密码,扩展,椭圆曲线,椭圆曲线点格式
例:
1769,47–53–5–10–49161–49162–49171–49172–50–56–19–4,0 ...
# 基本概念
workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。
job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
step(步骤):每个 job 由多个 step 构成,一步步完成。
action (动作):每个 step 可以依次执行一个或多个命令(action)。
# workflow 文件
GitHub Actions 的配置文件叫做 workflow 文件,存放在代码仓库的.github/workflows 目录。
workflow 文件采用 YAML 格式,文件名可以任意取,但是后缀名统一为.yml,比如 foo.yml。
一个库可以有多个 workflow 文件。
GitHub 只要发现.github/workflows 目录里面有.yml 文件,就会自动运行该文件。
workflow 文件的配置字段非常多,详见官方文档。下面是一些基本字段。
# name
工作流的名称。GitHub 在存储库的 “Actions” 显示工作流的名称。如果省略 ,GitHub 将显示相 ...
# 前言
一键发布语雀文章至 github (hexo 博客) 和 gitee 并实现 gitee pages 自动更新。
hexo 博客示例:https://alanhays.gitee.io | https://alanhays.github.io
语雀编写文章
同步语雀文章至 hexo
hexo 发布语雀文章更新博客
github actions 自动同步仓库至 gitee 并更新 pages
# 部署 hexo 博客
# 安装 git 和 node (推荐 LTS 版)
git 官网 -> https://git-scm.com/
node 官网 -> https://nodejs.org/en
# 检查安装
# 安装 hexo 博客
找到一个位置,打开 Git Bash Here 分别执行下面命令,其中 blog 可替换为你喜欢的名字(会在当前目录新建一个文件夹)
1234npm install hexo-cli -ghexo init blogcd bloghexo s
# 验证博客
浏览器打开 -> http://localhost:4000/
...
经验教程
未读存在复用性的插件与函数,不定期补充。
# 字面量解混淆
12345678910111213const simplifyLiteral = { NumericLiteral({ node }) { if (node.extra && /^0[obx]/i.test(node.extra.raw)) { //特征匹配 node.extra = undefined; } }, StringLiteral({ node }) { if (node.extra && /\\[ux]/gi.test(node.extra.raw)) { node.extra = undefined; } },};
# 规范块语句
示例
123456789101112131415161718192021222324252627282930let i = 0;if (i) console ...