Hook Wav Out, Dump 原始的音频文件.
来源:互联网 发布:软件授权许可 编辑:程序博客网 时间:2024/05/18 02:49
某音频文件经过优化编码,发现解码以后是通过Wav Out API播放的.不具体研究他是如何解密的,直接Hook Wav 播放的API得到原始数据:
#include <mmsystem.h>#pragma comment( lib, "winmm.lib" )
数据头的格式:
extern "C" __declspec(dllexport) MMRESULT WINAPI MyWaveOutOpen( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen){FILE *fp = fopen("test.dump.log","a+");if(fp){fprintf(fp,"waveOutOpen\n");fprintf(fp,"pwfx->cbSize:%d\n",pwfx->cbSize);fprintf(fp,"pwfx->nAvgBytesPerSec:%d\n",pwfx->nAvgBytesPerSec);fprintf(fp,"pwfx->nBlockAlign:%d\n",pwfx->nBlockAlign);fprintf(fp,"pwfx->nChannels:%d\n",pwfx->nChannels);fprintf(fp,"pwfx->nSamplesPerSec:%d\n",pwfx->nSamplesPerSec);fprintf(fp,"pwfx->wBitsPerSample:%d\n",pwfx->wBitsPerSample); fprintf(fp,"pwfx->wFormatTag:%d\n",pwfx->wFormatTag); fclose(fp);}return waveOutOpen(phwo,uDeviceID,pwfx,dwCallback,dwInstance,fdwOpen);}
原始数据:
extern "C" __declspec(dllexport) MMRESULT MyWaveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh ){FILE *fp = fopen("test.dump.log","a+");if(fp){fprintf(fp,"BufferLength:%d,Flags:%d-- cbwh:%d \n",pwh->dwBufferLength,pwh->dwFlags, cbwh);fclose(fp);}FILE *fpEx;fpEx = fopen("test.dump","ab+");if(fpEx){fseek(fpEx,0,SEEK_END);fwrite(pwh->lpData,1,pwh->dwBufferLength,fpEx);fclose(fpEx);}//return MMSYSERR_NOERROR; //return waveOutWrite(hwo,pwh,cbwh);}
0 0
- Hook Wav Out, Dump 原始的音频文件.
- wav音频文件的结构
- 加载WAV音频文件的接口
- wav音频文件
- WAV音频文件
- html/Javascript播放WAV音频文件的方法
- 读取*.wav音频文件
- 微软Wav音频文件解析
- WAV音频文件格式
- 读取*.wav音频文件
- OpenAL播放WAV音频文件
- WP8录制Wav音频文件
- wav音频文件格式分析
- wav音频文件头解析
- MFC播放wav音频文件
- wav音频文件格式解析
- java切割wav音频文件
- 音频文件pcm转换wav
- AJAX多个请求的处理-ajax对象池
- android绘制圆角图片
- 【LeetCode】LRU Cache
- leetcode: Search in Rotated Sorted Array
- 修改TI Davinci IPNC显示的OSD LOGO
- Hook Wav Out, Dump 原始的音频文件.
- 如何实现CSS限制字数,超出部份显示点点点...
- WinForm 读写配置文件
- nyist 303 序号互换(字符串处理)
- linux下IPTABLES配置详解
- 程序员的你
- Flume-ng出现HDFS IO error,Callable timed out异常
- 关于ios里webview的orientation控制的一些小结
- Notification简单观察者模式例子