视频html提取,记录XX加密视频提取工具被逆向分析过程一

本帖最后由 zjh16529 于 2019-6-6 18:24 编辑

上篇讲替换机器码工具的分析,本次继续分析同一个包里带的视频提取工具。

看图:

thread-825461-1-1.html

工具使用过程:

这里的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附加到播放器里

thread-825461-1-1.html

那么如何支找到提取的关键地方?我这是想到2个思路:

1、既然要把文件写出来,肯定要使用文件操作的API,如CreateFile之类的函数。对其下断回朔。

2、使用内存监视工具对注入的DLL看它都修改了些什么,找到地址下断。

本次我使用第二种方法,监视该DLL对内存修改的哪些地址进行下断。

thread-825461-1-1.html

图上可以看到,这里直接JMP到DLL内了。在JMP上一句下断,添加视频后,输入密码进行播放,开始断在了此处,我们F7跟进DLL内

[Asm] 纯文本查看 复制代码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

从汇编代码来看,是获取堆栈内值,并把获取的内容保存在常量里。文章来源:IT资源社区

[Asm] 纯文本查看 复制代码0BFE12ED E8 E4120C00 call win7.0C0A25D6

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

[Asm] 纯文本查看 复制代码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的过程,直接在

[Asm] 纯文本查看 复制代码0BFE12F9 A1 BCAEFE0B mov eax,dword ptr ds:[0xBFEAEBC]

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

[Asm] 纯文本查看 复制代码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,看的我头晕、恶心。从上面的传参来看,前面做了偏移,这里会不会就是写数据了?

[Asm] 纯文本查看 复制代码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的格式视频。文章来源:IT资源社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值