吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2383|回复: 4
收起左侧

[会员申请] 申 请 I D:Kinvix【未报到,已注销】

[复制链接]
吾爱游客  发表于 2023-8-1 14:45
1、申 请 I D:Kinvix2、个人邮箱:4765078@qq.com3、原创技术文章:某阅读app内容解密分析
某阅读app内容解密分析

工具准备
1、frIDA 15.1.4
2、jadx1.3.0
3、idea(编译最终代码)
4、写字板或其他16进制查看工具(由于常用mac,家里的win环境不齐全,随便用个写字板了,哈哈)
5、一台root手机


开始先吐槽以下win11下python安装frida的坑,我本来wsl2上装有frida,奈何wsl2上的adb连不上设备,使用相同版本(win和wsl2都装了版本号完全相同的)也不不行;然后只能在win11的python中安装frida,安装后还是报错,最后查看frida官网的issue里,有个用户说他的3.10python也和我一样的错误,最后只能卸载3.10,装了3.9,环境才总算正常。


下面开始整体。


首先既然是要解密文件,那我先想到的点是文件读取,遂hook在file上

复制代码 隐藏代码
function printTrace(){    var Exception = Java.use("java.lang.Exception");        var ins = Exception.$new("Exception");        var straces = ins.getStackTrace();        if (straces != undefined && straces != null) {            var strace = straces.toString();            var a = strace.replaceAll(",","\r\n");            console.log("========stacktrace start============")            console.log("straces:"+a);            console.log("========stacktrace end============")        }}Java.perform(function () {    var file = Java.use("java.io.File")    file.$init.overload("java.io.File","java.lang.String").implementation = function(v1,v2){        if(v1.getAbsolutePath().indexOf("prefix")>0){            console.log("file-init:"+v1.getAbsolutePath() + "/" + v2);            printTrace();        }        return this.$init(v1,v2);    }});

然后找到了以下调用栈;


打开jadx,逆向看了一下对应的类,看了一圈,混淆得太厉害,看不到什么看起来有用的代码;
但是看到了很多输出日志的地方,hook一下日志输入类,先看看在哪下hook点好

跟进去,调的是info,继续往里

然后printLog,可以看到,不管info、error、还是debug、最终都是走的printLog,那就hook这个试下


代码如下,包名我就隐藏了,以免惹麻烦

复制代码 隐藏代码
var logwrap = Java.use("com.xxx.xxx.base.util.LogWrapper");logwrap.printLog.implementation = function(v1,v2,v3){    console.log("log:"+ v1 +":"+v2+":"+v3);    return this.printLog(v1,v2,v3);}
看看有没有什么合适的代码;然后找到了下面的文字

顺着 章节已被加密 这段文字 找到了下面代码

这块红色区域很可能是写文件的地方,继续往下,发现是把itemContent对象转换成了另一个对应

其中重要的点,itemContent.content赋值给了f55484h,这个f55484h真正的字段名也是content;
另一个是itemContent.keyVersion;content既然是加密的内容,那就看看content在哪些地方读取了,搜了一下发现下面这个点,明显就是解密的地方;

进入m44616a看看

好家伙,把content先base64解码,前16位作为参数,str2估计是密钥,16位以后则是真正的内容;往下

额,原来是aes加密,前16位作为向量,str果然是密钥,这下好办了,下一步看下密钥从哪取的;

密钥是由a.m35841c() (进去看了下对应的是user_id)和f55483g(对应章节内容的key_version);继续往下

可以看到,获取服务端生成的设备id+用户id+keyversion,从函数中取,如果没有,则从服务器取




搞半天,密钥存在mmkv下 prefix_public_crypt_key_kv_userid下了;打开re文件浏览器看看是个什么东西


拿来试用一下上面的解密算法,看能不能拿到正常的内容;
我们找来加密内容如下:

然后找到对应keyversion对应的密钥6BEE392E0946866E0AE3286053E1F194;得到以下结果

果然可以解密,至此就暂时告一段落了,有时间再继续。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2023-8-2 10:37
I D:Kinvix
邮箱:4765078@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。
吾爱游客  发表于 2023-8-23 18:08
Hmily 发表于 2023-8-2 10:37
I D:Kinvix
邮箱:

你好,之前一直以为通过了会发邮件,今天来论坛才看到已经通过并过期了,能否再给通过一下?非常感谢!

点评

看清楚说明,自己通过邮箱重置密码。  详情 回复 发表于 2023-8-23 18:31
Hmily 发表于 2023-8-23 18:31
游客 163.125.202.x 发表于 2023-8-23 18:08
你好,之前一直以为通过了会发邮件,今天来论坛才看到已经通过并过期了,能否再给通过一下?非常感谢!

看清楚说明,自己通过邮箱重置密码。
Hmily 发表于 2023-9-7 15:54
未报到,已注销。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 06:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表