秒拍app分析

本文详细介绍了对秒拍APP短视频的逆向分析过程,包括对用户主页请求头的变化参数分析,如何脱壳以及查找加密方法。文章强调了在Android应用中遇到的native同步锁加密,并探讨了使用Frida、IDA、010Editor等工具进行动态和静态分析,以及解决加密SO文件的方法,如内存dump和插件修复。同时,分享了一段使用Xposed主动调用解密SO文件的代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

秒拍APP短视频逆向分析:最新版version ===7.2.98 :
在这里插入图片描述

在这里插入图片描述

抓一个用户主页包看下:
在这里插入图片描述
这个是我抓的科普中国用户的主页,经过分析发现请求头有变化参数。
在这里插入图片描述
rt : 暂时分析微时间戳 pk:固定 ov : 固定
变化:si ,ti, sk, p

开始正式逆向路程========
jadx 查看下入口:在这里插入图片描述
这不啥也找不到,加壳了,不说了 直接脱壳:
网上各种脱壳工具或者脱壳机,自动回填修复dex:
定位加密地方:当前包名: package e.f.a.l.v;
在这里插入图片描述
valueOf: 当前时间 String valueOf = String.valueOf(System.currentTimeMillis());
str2: str2 = deviceBean; 设备数据
str, strArr 传进来的

静态分析后:

        linkedList.add(new h("si", g.getKey()));
        linkedList.add(new h("ti", g.getTrace()));
        linkedList.add(new h("sk", g.getSignature()));

是通过走了一个g方法后:将所有参数回写。
在这里插入图片描述
这是一个 native 同步锁的操作,将参数传进so加密结果返回到 bean 对象里。
在这里插入图片描述
frida hook下查看传入传出:

# -*- coding: utf-8 -*-
# @Author  : Codeooo
# @Time    : 2022/04/29


import sys
import frida

code = """
Java.perform(function(){
    var lk = Java.use("com.dubmic.basic.e");
    lk.g.implementation = function(a,b,c,d,e){

        //var b1 = String((new Date()).valueOf());

        //console.log(typeof b)  
        //console.log(typeof b1)  
        //console.log('参数b1 ' + b1)  


        console.log('参数str ' + a)  
        console.log('参数str1 '+ b)  
        console.log('参数str2 ' + c)  
        
        //var c1 = '{"dpi":420,"did":"b81b219fcafc7d50e652e0d80ff12985","dname":"QW5kcm9pZA\u003d\u003d","sl":"zh","sv":"7.1.2","os":"android","av":"7.2.87","bv":"6790000","dm":"AOSP on msm8996","dmid":"AB:44:48:4P:3R:19","daid":"89d9abcd39014bfd","network":1,"dw":1440,"dh":2434,"lon":0.0,"lag":0.0,"channel":"xiaomi_market","rt":1639052393988,"carrier":0}'
        console.log('参数str3 ' + d)  
        console.log('参数str4 ', JSON.stringify(e)) 

        var e2 = [["userId","78143099"],["type","1"],["page","1"],["limit","20"]]

        console.log('==== ' + this.g(a,b,c,d,e2))  
        return this.g(a,b,c,d,e2)
    }

    var EncryptUtils = Java.use("com.dubmic.basic.bean.HttpEncryptionBean");

    var EncryptUtils = Java.use("com.dubmic.basic.bean.HttpEncryptionBean");
    EncryptUtils.getKey.implementation = function(){
        //console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()));
        console.log("Codeoooo " + this.getCode())
        console.log("si " + this.getKey())
        console.log("ti " + this.getTrace())
        console.log("sk " + this.getSignature())
        console.log("p " + this.getP())
        return this.getKey()
    }




});
"""


process = frida.get_remote_device().attach('com.yixia.videoeditor')
script = process.create_script(code)
script.load()
sys.stdin.read()

在这里插入图片描述
再搭建个frida_RPC + flask 一个动态刷用户服务即可调用。
接下来咱们分析下so文件:

在这里插入图片描述
在这里插入图片描述
在 IDA 打开的时候发现报错,该so文件为加密so,需要在内存中dump修复elf文件,这个需要了解elf文件结构。

我们可以用 010Editor 或者 其他medit 去看下so文件到底是什么文件。
参考:https://blog.csdn.net/weixin_38927522/article/details/120164359

在这里插入图片描述
以后面试再问到这么基础的题,可不要不会了啊,多了解下NDK开发及so文件elf结构。

解决思路:
1.可以用IDA中的plugins下修改so插件 内存dump脚本
2.frida dump内存
3.SoFixer_Rel
4.xAnSo
5.大佬手动修复

当然修复的so可能并不一定成功,需要自己去回填指定等。

由于frida 不稳定的因素,这里我编写了一个xposed 主动调用去调用so文件进行解密:
部分代码公开:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codeooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值