本文仅提供思路,不提供任何成品软件等。
首先,定位到本软件下载的图书目录,在Android/data/包名/files/books 下面有几个文件夹,找一下就可以定位到你下载的那本书了。
然后,反编译apk,拖入jadx,搜索openbook,找到相关代码,最后经过定位,真正的openbook 在 libjdxxxxreadingengine.so 里面。对应的函数是Java_com_xx_read_engine_jni_DocView_OpenBookInternal
通过对此函数分析,发现最后是调用的xxdecompress::decrypt进行解密文件,解密之前先实例化了xxdecompress对象,传入key,这里的key可以通过hook获得,每本书的key都不一样,好像换了设备也会变,这里我没有尝试更换设备。
如果发现此so文件不好分析,可以下载一个旧版的该app,旧版的so是xxxdrm.so,然后函数名称是一样的。
这里分享一个github链接,该项目有部分开源的代码,是关于这个app的 ,这里面的xxxdrm.so可以直接拿来调用。
https://github.com/a-running-snail/read-android
最后使用androidemu,写一个python脚本调用so文件进行最终的解密操作
部分解密代码如下:
image.png (44.71 KB, 下载次数: 0)
下载附件
2021-7-27 09:08 上传
最终的解密效果如图:
image.png (700.74 KB, 下载次数: 0)
下载附件
2021-7-27 09:07 上传
至此,又解开了一个阅读软件的加密,好像这些软件都是一个套路,aes加密,然后找个地方放key,用的时候再解密回来。