Lazy loaded image
RC4算法Native层分析
字数 2283阅读时长 6 分钟
2024-7-2
2024-7-2
type
status
date
slug
summary
tags
category
icon
password

一、Java层分析

notion image

二、Native层分析

1、Java_cn_pojie52_cm01_MainActivity_check

首先分析入参出参和大体流程。
notion image
notion image

2、sub_B90

接下来看下sub_B90。
notion image
其中主要部分进行了两次循环,第一个大循环到256次,第二个里面有异或运算,这两个特征一出我们大概率可以确定是RC4。
notion image
使用frida hook一下,看下出入参。

3、sub_D90

接下来分析sub_D90,函数逻辑比较复杂就不先细分析,先上Hook,返回值v9会和v19做比较,既然这个部分在RC4异或处理后,那我们大胆猜测是base64(当然只是进行了某种假想并没有进行验证,有可能猜错,但是不影响分析)。
暂时不看sub_D90里面的逻辑,先根据猜测的来,那么整体逻辑大概如下。
notion image
在之前我们了解到,RC4是对称加密算法,就是说在进行流式加密/解密时,用的是相同的秘钥进行的异或运算,那么我们是否可以根据运算后的flag,去跟秘钥做一次异或运算,获得我们应该输入的字符串那?答案是:okkk!

4、获取v19

首先我们要找到v19的值,v19在比较的时候已经组装完毕了,所以我们要在此处hook,拿出v19的值。 看下汇编指令,v19的值在X9临时寄存器里面,只有hook 0xB30的位置就能取出X9的值。
notion image
notion image
 

5、获取结果

直接进行RC4解密逻辑。
总结:虽然RC4的特征看起来不是很明显,密钥流的产生过程及异或运算的特征来确定是否是RC4,当然,因为RC4属于流加密,所以也可以把明文的长度和加密后的长度是否相等作为入手点。apk样例来自52破解春节安卓题
上一篇
常见的反爬虫风控
下一篇
对称加密算法RC4

评论
Loading...