申 请 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
果然可以解密,至此就暂时告一段落了,有时间再继续。 I D:Kinvix
邮箱:4765078@qq.com
申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。 Hmily 发表于 2023-8-2 10:37
I D:Kinvix
邮箱:
你好,之前一直以为通过了会发邮件,今天来论坛才看到已经通过并过期了,能否再给通过一下?非常感谢! 游客 163.125.202.x 发表于 2023-8-23 18:08
你好,之前一直以为通过了会发邮件,今天来论坛才看到已经通过并过期了,能否再给通过一下?非常感谢!
看清楚说明,自己通过邮箱重置密码。 未报到,已注销。
页:
[1]