我们可以试想一下,同样的视频编码格式,码流大,它包含的信息也就越多,那么对应的图像也就越清晰,反之亦然。目前常用的两种码流控制方式是VBR和CBR,VBR是动态比特率,CBR是固定比特率。那么他们是怎么来实现的呢?
我们首先看视频编码的目的,它是为了在有限的带宽中传输尽可能清晰的视频,我们以每秒25/帧的图像举例,25帧图像中定义了GOP组,目前主要是有I,B,P帧三种帧格式,I帧是关键帧,你可以想象它就是一幅JPEG压缩图像,而B,P帧是依靠I帧存在的,如果丢失了I帧,B,P帧是看不到图像的,B,P帧描述的不是实际的图像像素内容,而是每个相关像素的变化量,他们相对于I帧信息量会很小。GOP组是指一个关键帧I帧所在的组的长度,每个GOP组只有1个I帧。
我们再来看,一组画面的码流大小跟什么有关?当视频编码的压缩方式都一样,清晰度要求都一样的时候,GOP组的长度格式决定了码流的大小,例如:每秒25帧画面,GOP组长度为5,那么帧格式为IBPBP,那么1秒钟有5个I帧,10个B帧,10个P帧,如果GOP组长度为15,帧格式就是IBBPBBPBBPBBPBB,那么1秒钟内会有2个I帧和16个B帧和7个P帧,那么5个I帧比2个I帧占用的数据信息量大,所以GOP组的长度格式也决定了码流的大小。
最后,我们再来看VBR和CBR,对于VBR来说,它可以通过特殊的算法来控制一个GOP组的长度,也就是I帧的数量,当图像中运动图像多时,我可以把I帧数量加大,那么图像会很清晰,如果图像内元素基本静止时,它甚至可以把GOP组调到25的长度。那么根据前面的描述,可以想象这是一种为了确保图像质量的控制手段,它非常灵活,不死板,但是要求控制算法非常的精确,不精确会导致很多问题,例如码流突增后不降低,即使带宽足够,会导致图像出现问题。
CBR相反,它的带宽不变,码流不改变,一直都是一样的大小(会有少许的变化),图像运动量超过码流承受能力时,图像会出现边缘模糊的现象,它的目的是为了稳定带宽,它的实现方式就相对简单,码流不变就需要均衡IBP之间的关系,动态视频大时I帧小,BP大,运动视频小时I帧大,BP小。总之都是通过编解格式的算法来实现的。
总结一下,VBR码流控制方式可以降低图像动态画面少时候的带宽占用,CBR控制方式码流稳定,图像状态较稳定。他们为了解决的是不同需求下的不同应用。
没有参考资料,我自己写的,希望能对你有帮助。其中有两个部分有“外放文件”,一个是“不小于512”,一个是“不小于256”,但在“不小于256”处后面有“pdf”、“mpg”等明显代表文件格式的字符串,所以选择这处点击跳转到调试窗口中,大致浏览一下这个函数我们可以发现很多有用的函数,比如CreateFile,CopyFile,ReadFile等,可以确定这就是我们要找的函数。找到函数头部分下一个软件断点,重新运行,按F5,在软件中选择示例视频mp4,点击外发控制,一直下一步,然后会断在我们所下断点处,这部分 *** 作我就不上图了,只说一下具体 *** 作流程,毕竟我们的主要任务是分析它的加密算法。
单步运行并分析上文所下断点的函数,我们可以发现,在ReadFile读取处,程序读取了源文件,程序中共有7个WriteFile,在数据窗口中跟随ReadFile的第二个参数即读入源文件数据的部分,继续单步执行,发现第1个WriteFile不会被执行,在执行到第2个WriteFile处时,程序写入随机字节: 0x200000,而数据窗口中跟随的数据段已经发生改变,在010editor中打开加密后的文件:示例视频mp4pbb,发现其数据与在OD中数据窗口中的数据一致,所以可以确定这段数据就是加密后的数据,而在ReadFile与WriteFile之间只有一个函数:call PycFileO00E45190(将函数PycFileO00E45190重命名为核心加密函数,下文用到的部分也以核心加密函数指代),所以可以确定这个函数即使我们所要找的加密函数。先不管加密函数的具体内容,继续执行其所处函数,当我们执行到第3个WriteFile处时,程序写入了随机n个字节(n=0~16),在第4个WriteFile处,发现程序把上文中数据窗口中跟随的密文写入了文件,在第5个WriteFile处,程序将其上面一个随机产生的0x20大小的内容进行了写入,第6个WriteFile处,程序将了0x2A8内容进行了简单填充,第7个WriteFile处,写入了固定大小 0x10C的内容,经分析与密钥有关。
经过分析,发现加密只与核心加密函数有关,所以我们的重点放到核心加密函数上来,其它的部分在这里不做讨论。为了节省时间,我用了IDA的F5功能查看整个核心加密函数的具体结构,看你这款软件是什么种类的加密软件来决定了
像一般专业的视频加密软件,比如金钻视频加密专家,加密的视频达到的效果都是一机一码,所以,可想而知,破解起来也是非常困难的。加密软件的话,一般都大同小异。
所以,像你现在的这种情况,破解可能性是非常小的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)