用VC查看exe文件中的二进制资源

来源:互联网 发布:linux安装nfs文件系统 编辑:程序博客网 时间:2024/05/16 12:45

转自:http://blog.163.com/wang_ly2442/blog/static/94943407201382784112698/


       从https://github.com/luoshupeng/MineSweeper上下载了一个仿Windows的扫雷程序,界面和 Windows 中的扫雷一模一样,所以推测它所用的资源文件应该是从 Windows  版扫雷程序中拿出来的。

        用VC从一个exe文件中拿到资源文件方法如下:
1. 用VC打开文件
2013年09月27日 - 小企鹅 - 小企鹅的博客
2.找到C:\WINDOWS\system32\winmine.exe,注意,这里点击“打开”右边的向下箭头,用“Open with”打开winmine.exe
 2013年09月27日 - 小企鹅 - 小企鹅的博客
  3.用Resource Editor打开
 2013年09月27日 - 小企鹅 - 小企鹅的博客
 4. 看到资源列表
2013年09月27日 - 小企鹅 - 小企鹅的博客
5. 打开一幅位图可以看到
2013年09月27日 - 小企鹅 - 小企鹅的博客
 
 而从 https://github.com/luoshupeng/MineSweeper 下载的工程,用VC打开后,看到的资源布局和每个资源的内容,竟然和winmine.exe里面的资源惊人的一致!于是推测,前者是直接使用了后者的资源,然后自己写的程序逻辑。MineSweep的Release版exe大小为161K,winmine.exe大小为117K,二者大小相差也不是很大!

事实上,用上述方式打开winmine.exe后,如果没有选“只读”方式打开的话,是可以在VC中直接修改二进制资源的,比如将版本号换掉,将作者名字换掉等,然后保存即可。下次人家再运行winmine.exe的时候,看到的作者就是修改过后的作者名了,而你却一行代码也无需修改!


【yasi】

当然,既然已经知道了这个修改资源的“漏洞”,那么我们是可以预防资源被别人恶意修改的,比如给exe“加壳”,这是后话了。感兴趣的同学可以查看 加壳与脱壳的原理