blog

枪手亨利

博客园 首页 新随笔 联系 订阅 管理

http://blog.csdn.net/zhucde/archive/2005/04/14/347417.aspx

对于开头的LOG,本来我是打算直接加到软件资源里,然后再读出,可是无奈,视频文件读出并播放不怎么了解,写不出来,这里希望写过这方面的东西的朋友介绍一下,个人觉得,把文件写到资源里,然后直接在资源里读出来不妨为一个保密的好方法,当然,需要用UPX等软件压缩并加密一下,这样,资源就不会被别人读取并改写.

舍弃了这种绝好的方法,我只好用了另一种方面,读取磁盘上的文件,但是如果文件直接存放在磁盘上,那别人很容易就拿走了,那就没有效果了.

所以,有了下面的方法,把16制文件工具,比如HEDIT,UltraEdit等软件打开视频文件, 在其中添加一些位,我用的就是在文件头部加入10位无效字符,这样,视频文件头被破坏了,自然直接打开该文件就播放不起来,

在打开程序时,先对该文件进行处理,把其中添加的位数再去掉,然后写成新文件,这样就可以播放了.

比如如下代码:

CFile file,nfile;
  if(file.Open("data/tou.pfw",CFile::modeReadWrite
   |CFile::typeBinary)==NULL)//开被破坏过的文件
{
   MessageBox("未找到视频文件!","错误",MB_OK|MB_ICONERROR);
   return;
  }
  
  
  nfile.Open(path,CFile::modeCreate|CFile::modeReadWrite
   |CFile::typeBinary);
  
  
  file.Seek(8,CFile::begin
);//假设是添加了8个字节的破坏码,这里要让出来,就是前8位不读取

char t[1024]={0};  //由于生次读取的大小太大会影响电脑性能,这里每次读取1k  
  int n=0;
  while(1)
//循环写入
  {
   file.Seek(8+1024*n,CFile::begin);
   nfile.Seek(1024*n,CFile::begin);
   
   file.Read(t,1024);
   
   nfile.Write(t,1024);
   
   n++;
   if((n*1024+1)>3197441)
    break;
  }
  
  file.Close();
  nfile.Close();

这样,一个新的没有破坏的文件就形成了.

还有一种方法跟这个大同小异,就是把文件读到资源里,当然也是破坏一下,然后在运行时写到磁盘里,再读取播放.

这里,还是希望对资源进行读写的高手能展示一下直接读取资源并播放的方法.



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//下面是另外一段

下面是一段把资源导出为文件的代码.先把要打包的文件添加到VC项目中,类型自定(比如"RES_DATA"),ID自定(比如ID_RES_DATA),那么如果要把这个资源再回复为文件就这么调用:
Res2File( MAKEINTRESOURCE(ID_RES_DATA), "RES_DATA", "C:\\ResData.dat" )

BOOL Res2File( LPCTSTR lpName, LPCTSTR lpType, LPCTSTR filename )
{
HRSRC hRes = ::FindResource( NULL, lpName, lpType );
HGLOBAL gl =::LoadResource( NULL, hRes );
LPVOID lp = ::LockResource( gl );
HANDLE fp = ::CreateFile( filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );
if( fp == INVALID_HANDLE_VALUE )
return FALSE;

DWORD a;
if( !::WriteFile( fp, lp, SizeofResource( NULL, hRes ), &a, NULL ) )
return FALSE;

CloseHandle( fp );
FreeResource( gl );
return TRUE;
}
posted on 2005-12-21 19:22  henry  阅读(245)  评论(0)    收藏  举报