发表于 2023-8-1 14:45

申 请 I D:Kinvix【未报到,已注销】

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);    }});

然后找到了以下调用栈;
https://attach.52pojie.cn/forum/202112/11/160437b5ccewfidppm3pj1.png

打开jadx,逆向看了一下对应的类,看了一圈,混淆得太厉害,看不到什么看起来有用的代码;
但是看到了很多输出日志的地方,hook一下日志输入类,先看看在哪下hook点好
https://attach.52pojie.cn/forum/202112/11/161649cu6uvsp5ulcpb69z.png
跟进去,调的是info,继续往里
https://attach.52pojie.cn/forum/202112/11/161654mggakhfq5exjbnxz.png
然后printLog,可以看到,不管info、error、还是debug、最终都是走的printLog,那就hook这个试下
https://attach.52pojie.cn/forum/202112/11/161658bnk59znjpnta39h9.png
https://attach.52pojie.cn/forum/202112/11/161704kh29sggk9q15ckrk.png
代码如下,包名我就隐藏了,以免惹麻烦

复制代码 隐藏代码
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);}
看看有没有什么合适的代码;然后找到了下面的文字
https://attach.52pojie.cn/forum/202112/11/160826qstl10zjvqsy9fso.png
顺着 章节已被加密 这段文字 找到了下面代码
https://attach.52pojie.cn/forum/202112/11/160924uchpn33cpwflo99r.png
这块红色区域很可能是写文件的地方,继续往下,发现是把itemContent对象转换成了另一个对应
https://attach.52pojie.cn/forum/202112/11/161023bd1dk15k9z1nkyes.png
其中重要的点,itemContent.content赋值给了f55484h,这个f55484h真正的字段名也是content;
另一个是itemContent.keyVersion;content既然是加密的内容,那就看看content在哪些地方读取了,搜了一下发现下面这个点,明显就是解密的地方;
https://attach.52pojie.cn/forum/202112/11/161154san8z43j4nhi83s7.png
进入m44616a看看
https://attach.52pojie.cn/forum/202112/11/162615ucsnuwgey9lqcvea.png
好家伙,把content先base64解码,前16位作为参数,str2估计是密钥,16位以后则是真正的内容;往下
https://attach.52pojie.cn/forum/202112/11/162618txcwwrnovnrcd421.png
额,原来是aes加密,前16位作为向量,str果然是密钥,这下好办了,下一步看下密钥从哪取的;
https://attach.52pojie.cn/forum/202112/11/162622y840pm1g86v4126m.png
密钥是由a.m35841c() (进去看了下对应的是user_id)和f55483g(对应章节内容的key_version);继续往下
https://attach.52pojie.cn/forum/202112/11/162626a0xs7r077ataiat5.png
可以看到,获取服务端生成的设备id+用户id+keyversion,从函数中取,如果没有,则从服务器取
https://attach.52pojie.cn/forum/202112/11/162632ligwzp1esss1issq.png
https://attach.52pojie.cn/forum/202112/11/162653nz83hg7hhpgohfvm.png
https://attach.52pojie.cn/forum/202112/11/162703gh591lwvl5cpiupc.png
https://attach.52pojie.cn/forum/202112/11/162711azozkacaa4kkwwgc.png
搞半天,密钥存在mmkv下 prefix_public_crypt_key_kv_userid下了;打开re文件浏览器看看是个什么东西
https://attach.52pojie.cn/forum/202112/11/162722j7uq7yy48ay65757.png

拿来试用一下上面的解密算法,看能不能拿到正常的内容;
我们找来加密内容如下:
https://attach.52pojie.cn/forum/202112/11/162730wqefsx05oesok5lp.png
然后找到对应keyversion对应的密钥6BEE392E0946866E0AE3286053E1F194;得到以下结果
https://attach.52pojie.cn/forum/202112/11/162740pi01i77hfbfzilb1.png
果然可以解密,至此就暂时告一段落了,有时间再继续。

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
邮箱:



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

Hmily 发表于 2023-8-23 18:31

游客 163.125.202.x 发表于 2023-8-23 18:08
你好,之前一直以为通过了会发邮件,今天来论坛才看到已经通过并过期了,能否再给通过一下?非常感谢!

看清楚说明,自己通过邮箱重置密码。

Hmily 发表于 2023-9-7 15:54

未报到,已注销。
页: [1]
查看完整版本: 申 请 I D:Kinvix【未报到,已注销】