记录金盾加密视频提取工具被逆向分析过程一

金盾2018SS加密视频机器码替换工具的分析过程三

上篇讲替换机器码工具的分析,本次继续分析同一个包里带的视频提取工具。
看图:
 
工具使用过程:
这里的WIN7.DLL是主要文件,我们结合前面分析的,替换机器码后,在把该DLL注入到播放器内,输入密码后,视频就开始播放了,并在D盘根目录下生成了一个AVI的视频文件,调整播放速度可以加快提取。提取后的AVI不能播放,需要使用它里面带的修复工具修复后就能播放了。
因能力有限,花费了很长时间来分析。win7.dll注入后做了3个动作:
1.HOOK播放器,把解密后的内存数据保存到磁盘里。
2.保存后的文件,在HOOK播放器的三方库(FFMpeg)中的一个功能,并把保存的数据再读取进行解密。
3.在HOOK播放器调整播放速度的位置,把速度调整为20倍,达到快速播放写出数据。
本篇我们分析它提取数据的过程。
该DLL被加了SE强壳,需要一个能过SE的OD(加强版OD过强壳SE&VMP)来调试它。首先运行替换机器码的播放器后,把该DLL注入到播放器内。使用OD附加到播放器里

那么如何支找到提取的关键地方?我这是想到2个思路:
1、既然要把文件写出来,肯定要使用文件操作的API,如CreateFile之类的函数。对其下断回朔。
2、使用内存监视工具对注入的DLL看它都修改了些什么,找到地址下断。
本次我使用第二种方法,监视该DLL对内存修改的哪些地址进行下断。
 
图上可以看到,这里直接JMP到DLL内了。在JMP上一句下断,添加视频后,输入密码进行播放,开始断在了此处,我们F7跟进DLL内

0C0A12B0    60              pushad
0C0A12B1    36:8B4424 20    mov eax,dword ptr ss:[esp+0x20]
0C0A12B6    A3 BCAE0A0C     mov dword ptr ds:[0xC0AAEBC],eax
0C0A12BB    36:8B4424 24    mov eax,dword ptr ss:[esp+0x24]
0C0A12C0    A3 B8AE0A0C     mov dword ptr ds:[0xC0AAEB8],eax
0C0A12C5    36:8B4424 28    mov eax,dword ptr ss:[esp+0x28]
0C0A12CA    A3 B0AE0A0C     mov dword ptr ds:[0xC0AAEB0],eax
0C0A12CF    36:8B4424 2C    mov eax,dword ptr ss:[esp+0x2C]
0C0A12D4    A3 ACAE0A0C     mov dword ptr ds:[0xC0AAEAC],eax
0C0A12D9    A1 B0AE0A0C     mov eax,dword ptr ds:[0xC0AAEB0]
0C0A12DE    8B0D C0AE0A0C   mov ecx,dword ptr ds:[0xC0AAEC0]
0C0A12E4    6A 00           push 0x0
0C0A12E6    68 ACAE0A0C     push win7.0C0AAEAC
0C0A12EB    50              push eax
0C0A12EC    51              push ecx
0C0A12ED    E8 E4120C00     call win7.0C1625D6
0C0A12F2  ^ 75 8B           jnz Xwin7.0C0A127F
0C0A12F4    15 B8AE0A0C     adc eax,win7.0C0AAEB8
0C0A12F9    A1 BCAE0A0C     mov eax,dword ptr ds:[0xC0AAEBC]
0C0A12FE    8B0D C0AE0A0C   mov ecx,dword ptr ds:[0xC0AAEC0]
0C0A1304    6A 00           push 0x0
0C0A1306    68 A8AE0A0C     push win7.0C0AAEA8
0C0A130B    52              push edx
0C0A130C    50              push eax
0C0A130D    51              push ecx
0C0A130E    E8 27170C00     call win7.0C162A3A
0C0A1313    A5              movs dword ptr es:[edi],dword ptr ds:[es>
0C0A1314    61              popad
0C0A1315    8BC7            mov eax,edi
0C0A1317    99              cdq
0C0A1318    36:034424 08    add eax,dword ptr ss:[esp+0x8]
0C0A131D    68 C51B8B00     push 0x8B1BC5
0C0A1322    C3              retn

  从汇编代码来看,是获取堆栈内值,并把获取的内容保存在常量里

0BFE12ED    E8 E4120C00     call win7.0C0A25D6

  这个CALL里没看出什么,因为它做了VM,能力有限。但从上面的传参来看,它会不会是设置偏移?

DWORD SetFilePointer(
HANDLE hFile, // 文件句柄
LONG lDistanceToMove, // 偏移量(低位)
PLONG lpDistanceToMoveHigh, // 偏移量(高位)
DWORD dwMoveMethod // 基准位置FILE_BEGIN:文件开始位置 FILE_CURRENT:文件当前位置 FILE_END:文件结束位置
说明:移动一个打开文件的指针

  下面这行代码该句柄是获取一个文件的句柄,正是前面生成的AVI文件句柄

0BFE12DE    8B0D C0AEFE0B   mov ecx,dword ptr ds:[0xBFEAEC0]

  先猜测它就是一个调用SetFilePointer的过程,直接在

0BFE12F9    A1 BCAEFE0B     mov eax,dword ptr ds:[0xBFEAEBC]

  下断,F9运行。CALL里被VM反正也看不懂,继续往下走。断下后,把常量的内容给了EAX,保存句柄的常量给了ECX。

0BFE1304    6A 00           push 0x0
0BFE1306    68 A8AEFE0B     push win7.0BFEAEA8
0BFE130B    52              push edx
0BFE130C    50              push eax
0BFE130D    51              push ecx
0BFE130E    E8 27170C00     call win7.0C0A2A3A

  又是一个被V的CALL,看的我头晕、恶心。从上面的传参来看,前面做了偏移,这里会不会就是写数据了?

BOOL WriteFile(
HANDLE  hFile,//文件句柄
LPCVOID lpBuffer,//数据缓存区指针
DWORD   nNumberOfBytesToWrite,//你要写的字节数
LPDWORD lpNumberOfBytesWritten,//用于保存实际写入字节数的存储区域的指针
LPOVERLAPPED lpOverlapped//OVERLAPPED结构体指针
);

  结全API来看,在从堆栈中看到内容,传入了句柄,解密的数据内容,大小,0,0正符合WriteFile这函数的参数啊。
执行完该CALL后,就返回到了播放器的代码中继续执行。当在执行到HOOK位置后,又开始把数据写出。
(为了验证是不是正确的,我们复制偏移量,还有保存些要写出的内存数据,在写入文件后,打开生成的文件用WINHEX定位去看下是不是把内存里的数据写出去了。实际说明它确实把内存里的数据写到文件里了。)
总结:
1、DLL注入后,会先HOOK SetFilePointer。随后当播放器调用该函数时,会有个判断是读取加密视频时就执行HOOK代码:
008B1BBE  - E9 EDF6720B     jmp win7.0BFE12B0
同时获取加密文件的大小,创建一个同大小的空数据文件。
2、视频播放时,播放器执行到HOOK位置进入到DLL后,把解密的数据及大小写出到磁盘里。
3、循环执行2,直到视频播放完。提取也就完工。
4、该DLL内很多东西被V掉了,需要自己结合实际情况去猜。
5、还有些细节的东西,根据这思路大家可以去细跟下。
6、以上分析的代码,如果要写程序可以直接抠汇编稍改下就能做成工具使用了。

生成的视频文件,并不能看,前面说过还有第二次解密。下篇我们在分析第二次解密的功能!
PS:生成的是AVI文件,使用WINHEX看数据它实际是一个MKV的格式视频。

记录金盾加密视频提取工具被逆向分析过程一
http://www.it0365.com/thread-26-1-1.html
(出处: IT资源社区)

原文地址:https://www.cnblogs.com/simont/p/9986297.html

时间: 2024-12-13 20:13:00

记录金盾加密视频提取工具被逆向分析过程一的相关文章

手机上也可以用的快手和火山小视频提取工具

之前分享过一个火山无水印视频提取软件,但是需要安装到电脑上,很多人觉得很麻烦. 今天分享个网页版,无需安装,并且电脑和手机都可以用的视频提取工具,支持提取快手和火山小视频里的任何视频,就连火山小视频里那种<作者不允许他人下载>的视频都可以解析,并且解析出来的视频都是没有水印的.(是不是觉得这工具特别赞,觉得赞的话,给我的文章点个赞吧??) 工具地址: 快手视频解析下载:http://kuaishou.iiilab.com/ 火山小视频解析下载:http://huoshan.iiilab.com

UWP 手绘视频创作工具技术分享系列

开篇先来说一下写这篇文章的初衷. 初到来画,通读了来画 UWP App 的代码,发现里面确实有很多比较高深的技术点,同时也是有很多问题的,扩展性,耦合,性能,功能等等.于是我们决定从头重构这个产品,做一个全新的 “来画Pro” 出来,历经三个月的世间,这个产品终于正式上架. (做个小广告,在 Windows 应用商店搜索 “来画Pro” 就可以找到,目前公司定位为收费应用,但是有一个月试用期,如果大家感兴趣,可以跟我要免费代码.这里是 IT之家的报道:https://www.ithome.com

lucene索引查看工具luke和文本提取工具Tika

luke可以方便的查看lucene的索引信息,当然也可以查看solr和es中的索引信息(基于lucene实现). 查看索引前,要注意lucene版本的问题,高版本的lucene用低版本的luke工具就可能无法打开. 记得以前用luke还可以实现索引修复的功能,会把有错误的段segment删掉,使用前备份. 关于luke的使用后面补上. Tika是一个文本提取工具,可以从word,pdf,excel等文件中提取内容,为es等提供数据源.图片信息可以只分析标题大小,没必要记录RGB颜色信息. Tik

LosslessCut for Mac(无损视频剪切工具)

想要一款简单免费高效的视频剪辑工具?LosslessCut for Mac软件推荐给大家!LosslessCut Mac版帮助您轻松地修剪和剪切录制中不需要的视频内容.有需要的朋友,千万不要错过! https://www.macdown.com LosslessCut for mac软件简介 LosslessCut是一个跨平台的视频剪切工具,正如它的名字,它剪切出来的视频是“原汁原味”的无损版本,因为它不进行任何编解码操作,所以剪切速度超快,用来处理大段视频和无人机拍摄视频再合适不过了,它可以让

IOS逆向分析——GL脚本的提取

总结:要逆一个程序必须清楚地知道程序的结构和常用的API函数,不清楚一个程序而去逆出结果是不可能滴 首先是glsl脚本运行的全过程,第一步是为shader的运行创建一个容器GLuint glCreateProgram(void),第二步是把编译好的shader附加到程序void glAttachShader(GLuint program, GLuint shader),编译好的shader可以是多个所以第二步可以重复多步把每一个编译好的一一附加到程序,顶点shader和像素shader一一成对,

记录Linux启动流程的工具bootchart

/*********************************************************************  * Author  : Samson  * Date    : 04/28/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

Android动态逆向分析工具ZjDroid--脱壳神器

项目地址:https://github.com/BaiduSecurityLabs/ZjDroid 前提条件: 1.Root手机一部 2.须要通过Xposed installer( http://dl.xposed.info/latest.apk)安装Xposed Framework; 一.ZjDroid工具介绍 ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者能够通过ZjDroid完毕下面工作:1.DEX文件的内存dump2.基于Dalvik关键指针的内存Ba

Oracle 存储过程加密之wrap工具

<Oracle 存储过程加密之wrap工具> 定场诗 道德三皇五帝,功名夏侯商周,五霸七雄闹春秋,顷刻兴亡过手, 青石几行名姓,北邙无数荒丘,前人播种后人收,说甚龙争虎斗. 引言:平时大家在做项目的时候,经常会遇到把Oracle存储过程带到项目现场来测试系统.这时如果想对自己的存储过程进行保密,不使别人看到源代码,就可以对已有的存储过程进行加密保护.顾名思义,就是对Oracle存储过程源码的加密.当然不是什么时候都需要的,当有的项目对安全性要求比较高的时候可以采用,下面我就用案例来介绍这种加密

Apache Tika-内容解析提取工具集合(a content analysis toolkit)

简介 Apache Tika toolkit可以自动检测各种文档(如word,ppt,xml,csv,ppt等)的类型并抽取文档的元数据和文本内容.Tika集成了现有的文档解析库,并提供统一的接口,使针对不同类型的文档进行解析变得更简单.Tika针对搜索引擎索引.内容分析.转化等非常有用. 支持的文档格式 详见参见http://tika.apache.org/1.5/formats.html HyperText Markup Language XML and derived formats Mi