在进程的内存转储中查找视频文件

Posted

技术标签:

【中文标题】在进程的内存转储中查找视频文件【英文标题】:find a video file in memory dump of a process 【发布时间】:2019-11-15 15:10:06 【问题描述】:

我有一个播放加密视频文件的播放器,工作方式如下:

    我用它打开一个加密的视频文件 它解密视频文件并将其写入内存 然后播放内存中的文件

我想从内存中复制解密后的视频文件并使用 VLC 等常用视频播放器播放,因此我尝试使用任务管理器创建其内存转储,并希望在那里找到视频文件。可悲的是,我没有足够的知识从内存中找到一大块位中的视频文件。我试图在十六进制编辑器中找到 mp4 模式,并完成了我在网上找到的所有解决方案,但对我没有任何帮助,所以我希望这里有人可能有一个想法并愿意帮助我如何完成它。

我上传了它的内存转储here(在用它打开一个简短的加密视频后)

【问题讨论】:

I tried to find mp4 patterns in a hex editor 不能保证是.mp4 视频,可能是.avi 或其他视频格式。另外,您怎么知道这是加密的,而不仅仅是定制的视频格式?分享视频链接。也许它的数据更容易提取。有任何其他信息,如视频宽度、高度、持续时间? @VC.One 我猜它可能是 mp4,因为他们在购买前提供了未加密的示例文件,并且在内存转储中出现了许多 mp4。我没有关于视频的任何信息,我想解锁它的主要原因是他们的播放器没有提供我需要的功能(例如键盘快捷键和快进)。我在这里上传播放器:ufile.io/jucf2fpc 和他们的加密视频之一:ufile.io/8oqiyxei,非常感谢 :) @VC.One 他们使用一家名为 Copy Protection International LTD (copyprotection.net) 的公司的产品,他们用于加密视频的产品是 copyprotection.net/balas-soft-lock.aspx。我试图拆解播放器,但找不到方法,只能找到足够的信息来了解该公司。 我会尽快检查文件。我在十六进制编辑器中看到了 LAV Audio 和 Balas Codec 以及看起来像原始 RGB 像素数据的内容。可能是解码的视频帧,但为此您需要知道分辨率 (WxH) 才能读取正确的字节数。这就是为什么我想知道发生了什么...... @VC.One 非常感谢 :) 他们的软件没有提供有关视频的任何信息,但从他们未加密的示例文件来看,它可能是 1280x720 并且视频文件的持续时间在内存转储和我上面上传的原始文件,是13分26秒。 【参考方案1】:

很可能,该软件不会一次性解码整个视频文件,而是以流媒体方式解码。这使得无法在内存转储中捕捉到解码视频数据可用的时刻。

如果播放器软件是开源的,用调试符号编译它并在调试器下运行。否则,请诉诸逆向工程。

【讨论】:

加载视频后,进程的磁盘活动趋于零,我发现视频文件大小与播放器占用的内存量成正比。我不确定,但是当我用十六进制编辑器打开内存转储时,我可以看到一个连续的比特流,看起来像一个未加密的 mp4 文件,但我不知道如何分离它。不幸的是,它不是开源的,对于逆向工程部分,我没有技术技能。 播放器第一次启动时,它会使用序列号执行激活过程,并在完成表单后收到激活密钥,之后,它可以离线播放其加密视频。【参考方案2】:

我不认为 *** 的问题一般是 on-topic,包括但不限于专门反转用于数字版权管理的软件解决方案。但是我仍然会留下答案。

首先,正如 cmets 所暗示的,所讨论的主题是对商业提供商提供的特定解决方案的逆转。从内存转储中恢复媒体文件的能力在很大程度上取决于此解决方案的实施以及提供商用来使逆转复杂化的方法。只有最简单直接的解决方案很容易反转,而且开发人员投入的覆盖痕迹越多,反转就越困难(指数级)。

即使有一点机会在内存中找到完整的原始文件(通过内存转储分析),任何媒体播放应用程序都不太可能,即使不进行任何解密。媒体播放通常是流式传输:根据播放需要从磁盘、存储、网络等加载数据,而不是完整下载。需要对某些暂时需要的数据进行解密,然后一个体面的支持 DRM 的应用程序将在不再需要时立即删除临时清除数据。也就是说,内存转储 - 充其量 - 包含极少量的媒体数据。

要捕获/恢复原始媒体文件,通常必须将自己作为中间人置于某些媒体流相关流程中,并且能够在播放期间复制正在流式传输的数据。静态内存转储在这里没有什么帮助。

【讨论】:

感谢您花时间阅读并回答我的问题 :) 但正如我上面提到的,加载视频后,进程的磁盘活动趋于零(即使我寻求中间或结束),我发现加密的视频文件大小与播放器占用的内存量之间存在正比,这就是为什么我认为视频文件可能在内存转储中。就是不知道有没有加密,没有怎么找到提取,有怎么分析找出它的加密方式。

以上是关于在进程的内存转储中查找视频文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用转储文件来诊断内存泄漏?

sh 迭代每日动作播放列表的6页以提取指向各个视频页面的链接,并转储到文本文件

关闭 TSVNCache.exe 进程

查找 C# 应用程序的故障转储文件

微博缓存视频在哪个文件夹 怎么查找手机微博缓存的视频文件

存储映射IO