0%

样本地址: aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzc0NjE5NDg=

ssl pinning 绕过

首先抓包直接打开是没有网络的,我用算法助手的升级版 trustMe 也不行,说明普通的 ssl pinning 是没用的,说明可能是在 so 层做的防护,hook 一下 dlopen,看一下哪些 so 在最前面进行加载的,也不说最前面吧,相对靠前

大名鼎鼎的六神,网上一搜就知道是 libsscronet.so 中对 so 进行的 ssl pinning 校验的,拖到 ida 中分析一下
问一下 ai,对于这种 so,我应该关注哪些函数

进去之后在导入函数中搜一下
SSL_CTX_set_custom_verify 这个函数就很像啊,跟刚才 gpt 跟我说的不能说有点类似,只能说一模一样了,进去看一下

样本地址: aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzYyMDIyMjIvaGlzdG9yeV92MTMxNDExMA==

抓包分析

我的 Charles 不知道怎么抽风了,抓包不对劲,又去换了个 burpsuite 来抓包

随便找一个包,发现请求参数又 sp 和 sig 两个加密参数,返回值是加密状态,同时通过多次抓包,发现 sig 中的 V3.0 是固定的,sp 中的 zwp 是固定的 接着看一下 app 有没有加固

没加固,继续往下面看

样本地址: aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzY2NDk1OTEvaGlzdG9yeV92NzgyMDA=

抓包分析

首先肯定是需要先抓一个包,他这个参数也挺多的,主要也就是逆向 anti-token 这个参数

定位的话就直接 hook newStringUTF 吧,这个可以直接得到定位

样本:找的一个低版本的 v5.0.01 首先,总所周知,这个 app 是加壳的,360 加固,整体型加固,直接用 frida 就可以将壳给脱下来
脚本的话可以用 yang 神写的:https://github.com/lasting-yang/frida_dump

众所周知,AES 算法是我们在安卓逆向中的一个比较重要的算法,掌握它的算法细节对于我们逆向无疑是有很大的帮助的
这一块呢,看的是龙哥的文章来学习的,为了记个笔记,就照搬了一下龙哥的图,致敬大佬

样本地址: aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzQ5MjY0My9oaXN0b3J5X3YxMTA4

抓包分析

首先来抓一下登录 login 接口,这接口最明显

首先来看一下请求参数, 经过测试发现: oauth_nonce, oauth_signature, zzzghostsigh 这三个参数是变化的,所以需要处理的也就是这三个参数

我的目标是致力于将常见的加密算法的细节都搞明白,CRC32 算法本身并不复杂,但是在我逆向的的过程中,出现的频率还是挺高的,这次就来学习一下 CRC32 算法
跟前面一样,以字符串 password 为例,演示一下加密的过程

1.准备

首先肯定是抓包啊,我抓的是这个 login 这个接口,它里面会携带一个 newSign 的参数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "cipherParam": "userName",
  "countryCode": 86,
  "loginToken": "",
  "newSign": "b119ee2cd2aa8e3a7bff1d18abf63027",
  "password": "ca8f119a27ec17f98b463807cd0b6b62",
  "platform": "android",
  "timestamp": "1766477585241",
  "type": "pwd",
  "userName": "df0751c510410bb57cd24c5e5dc90b86_1",
  "v": "5.75.5"
}

其他的好像除了 adi 不是固定的,其他都是固定的

这个 newSign 长度是 32 位,很有可能是 md5 或者 hmacMd5 之类的算法
hook 一下 newStringUTF 这个函数,如果是 so 层生成的算法,应该就会返回相应的结果,因为需要将 C 字符串转换成 java 字符串

样本地址: aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzMwNjY3Mw==

抓包分析

当抓到 login 这个包的时候,会发现在请求体中有一个 signature 的参数,今天我们的目标就是它

84c7dd50e8192db401cfbc4b2d6b0565f41fd2e0 这个格式的字符串,长度 40 位,感觉有很大可能是 sha1 算法,不知道魔改没 打开 jadx,搜索一下 signature 这个字段,但是发现搜索出来了很多关键词,那就拿其他相关的关键词进行搜索
fdsOtp 这个字段挺特殊的,直接在 jadx 中搜索,发现了 3 个地方 进去之后发现就找到了 signature 这个字段,它调用了 LoginRequest 这个类的 b 方法
跟进去,最后就直接跟到了是 WTWEctUfLf 这个方法返回的结果

简介

DES 算法是最早的对称加密算法,虽然已经被 AES 所取代了,但是在安卓逆向的过程中还是有可能会遇到这个算法,所以对它有一定了解还是必要的

基本参数:

  • 分组大小:64 位(8 字节)
  • 密钥长度:56 位有效密钥(实际 64 位,含 8 位奇偶校验)
  • 迭代轮数:16 轮
  • 工作模式:ECB,CBC,CFB,OFB 等 DES 分成两部分,一部分是明文的处理,另一部分是密钥的编排

第一部分:密钥的编排(子密钥生成)

密钥编排是指从 64 位的主密钥生成 16 个 48 位主密钥的过程,使用官方测试向量: