首页
社区
课程
招聘
[原创]好久没来了,回来看看大家(带来一篇烂文)
2006-9-28 08:46 3349

[原创]好久没来了,回来看看大家(带来一篇烂文)

2006-9-28 08:46
3349
这段时间由硬件转网络工程了,(貌似还是和硬件接触的多)
好久没发文章,先来一篇菜文..(别说我骗贴)
文章没什么高深技术,只希望对需要的人有帮助....
如果你懂这个就飘过,如果不懂,可以停留一、二分钟浏览一下

最近看一个游戏引擎(2D方面的),其实以前就研究过,只是他现在更新到16版了.
有对2D游戏感兴趣的可以访问官网:http://relishgames.com
他已经开放源代码

先说一段前话,记得以前14版时,屏蔽run-time logo,只需要在系统初始化之前
hge->System_Initiate()
加下面一段代码
System_SetState((hgeState)14, 0xFACE0FF)
就可以屏蔽logo,但现在的16版已经不能这样做了...
这个logo是版权logo..估计是作者更新了部分代码...但由于他开源..也就方便研究了..
在源代码中,发现有个数组hgelogo[],头两个字节是0x5089,0x474E...
虽然根据上下文来看也能看出他是一个图片文件..但对于类型当时就不是很清楚了
后来在支持论坛搜索了一下相关信息还有放了一篇求助贴,最后隐约想起来,这个是PNG文件的文件头,这才让我想起了一件事,当是在程序员(游戏创造)杂志中看到过一篇关于PNG文件格式的说明...
如果你把一个*.png图片文件,另存为*.bin,用下面这段程序,你也能建立自己的16进制图片信息....他将保存到一个logo.h中
#include <stdio.h> 

void main() 
{ 
  unsigned short c; 
  unsigned int n=0; 
  FILE *fin =fopen("data.bin","rb"); 
  FILE *fout=fopen("logo.h" ,"wb"); 
  if(!fin||!fout) {printf("not found data.bin!\n");return;} 
  fprintf(fout,"unsigned short logo[]={\r\n"); 
  while(1) 
  { 
     fread(&c, sizeof(unsigned short), 1,fin); 
     if(feof(fin)) break; 
     fprintf(fout,"0x%04X,",c); 
     if(++n%16==0) fprintf(fout,"\r\n"); 
  } 
  fseek(fout,-1,SEEK_CUR); 
  fprintf(fout,"\r\n};\r\n"); 
  fclose(fout); 
  fclose(fin); 
}

代码很容易看懂,在此就不做解释了...
算是可以起到素材加密隐藏的作用吧
其他详细请见http://www.libpng.org/

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 450
活跃值: (552)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
winndy 17 2006-9-28 16:23
2
0
信息隐藏
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
dwing 1 2006-9-28 19:36
3
0
雪    币: 253
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
qxtianlong 1 2006-9-28 22:15
4
0
晕,楼上的,居然会有这样的事....
不过这也不奇怪,呵呵..
这种方法用的挺多的...
游客
登录 | 注册 方可回帖
返回