开源通讯软件viewonce图片的调用逻辑分析

admin 2026-05-27 04:43:39 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细分析了开源通讯软件中viewonce图片的调用逻辑,通过Fridahook技术追踪MTProto协议传输、消息解密及图片处理全流程。关键发现包括:viewonce图片以加密形式存储在cache目录,使用AES-CTR模式解密,密钥文件结构为32字节key+16字节iv。可操作建议包括hookEncryptedFileInputStream.read方法获取明文数据,以及通过拼接解密后的字节流重建图片文件。 综合评分: 75 文章分类: 逆向分析,移动安全,安全工具,加密技术,漏洞分析


2. .enc文件调用链

为了找到是谁打开了这个.enc,在native层我hook了:

open
open64
openat
openat64
read
close

在java层hook了:

org.telegram.messenger.secretmedia.EncryptedFileInputStream

中的

read(byte[], int, int)
skip(long)
decryptBytesWithKeyFile(byte[], int, int, java.io.File)
decryptBytesWithKeyFile(byte[], int, int, org.telegram.messenger.SecureDocumentKey)

还有

org.telegram.messenger.secretmedia.EncryptedFileDataSource

中的

open(com.google.android.exoplayer2.upstream.DataSpec)
read(byte[], int, int)

最终确定了调用链:

/data/user/0/org.telegram.messenger.web/cache/-6070991742858629543_121.jpg.enc.key
  -> 读取 32 bytes key
  -> 读取 16 bytes iv

/storage/emulated/0/Android/data/org.telegram.messenger.web/cache/-6070991742858629543_121.jpg.enc
  -> EncryptedFileInputStream.read(...)
  -> Utilities.aesCtrDecryptionByteArray(...)

总结就是: .enc图片的实际路径是:cache/-6070991742858629543_121.jpg.enc 对应的key是:

/data/user/0/org.telegram.messenger.web/cache/-6070991742858629543_121.jpg.enc.key

其中.key文件的结构是前32字节的aes key, 后16字节的iv。

调用的解密函数是:

org.telegram.messenger.Utilities.aesCtrDecryptionByteArray([B, [B, [B, int, long, int)

caller是:

org.telegram.messenger.secretmedia.EncryptedFileInputStream.read([B, int, int)

使用的模式是mode=0, 对应的是ctr模式。

完整的链路如下:

ImageLoader / CacheOutTask
  -> EncryptedFileInputStream
  -> 读取 .jpg.enc.key: key(32) + iv(16)
  -> read .jpg.enc chunk
  -> Utilities.aesCtrDecryptionByteArray(buffer, key, iv, offset, length, fileOffset)
  -> 得到解密后的图片字节流

三、图片重建

第二点里已经讲到了加密文件的存储路径以及对应的解密函数了,这里简单讲一下解密之后怎么去重建一个图片。

1. Hook aes解密的函数

hook这个可以打印一些信息,但是hook这个最主要的方法是,确定app真的调用了这个函数解密。

2. hook EncryptedFileInputStream.read(byte[], int, int)

这个是核心,同时这个也是解密函数的caller。hook这个可以直接拿到明文。

3. 重建图片

接下来就比较简单,把拿到的明文拼接一下,判断一下数据的开头和结尾,命中了之后直接保存就完事,扩展名是.jpg,然后直接保存完事。

4. 关于ai

以上的分析深度的结合了ai,现在的ai能够干大量人不好干的工作,比如看汇编, smali代码, frida脚本跑出来的大量的未经处理的日志等等这种对人来说晦涩难懂的东西。ai看这些东西看的又快又准,还能帮着写hook脚本,又快又好。但是整体过程中还是有很多地方需要人去把控,纯让ai做容易跑偏。

还有就是一个ai的正义感问题,涉及到隐私功能的分析ai直接不干了,还得让人去拆解成一个个的小目标然后一点点的摸索。

总的来说ai在数据分析方面优势很明显,可以信任但是不能100%信任,每个流程还需要自己把控一下。

如果还需要学习技术,一定要在ai做完了之后多复盘,把技术细节和有疑问的地方搞清楚。

#

看雪ID:mb_hfjfruhl

https://bbs.kanxue.com/user-home-964485.htm

*本文为看雪论坛优秀文章,由 mb_hfjfruhl 原创,转载请注明来自看雪社区

第十届安全开发者峰会【议题征集】-欢迎投稿

# 往期推荐

安卓逆向基础知识之frida Hook

2025 强网杯和强网拟态部分题解

在逆向分析方面-unidbg真的适合 MCP 吗?

AI静态分析,内核模块隐藏 Frida 特征,绕过linker私有结构遍历崩溃链

某安全so库深度解析

球分享

球点赞

球在看

戳“阅读原文”一起来充电吧!


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:看雪学苑 《开源通讯软件view once图片的调用逻辑分析》

评论:0   参与:  0