Unicode文件名中的陷阱

下面这个图片文件看上去好像很正常:

但双击后,打开并不是一张图片,而是一个可执行程序,这是如何办到的呢。


很简单,流程如下:

1. 在自己的app工程中,使用和jpg图片一样的图标。build可执行的exe文件,比如:ABCjpg.exe.

2. 拷贝exe文件名到文本编辑器(如Notepad++)中,然后将ANSI码转换为Unicode码(USC2),保存到test.txt.

3. 用16进制编辑器(如WinHex)打开test.txt,看到的应该是这个样子:

4. 在WinHex中进行如下编辑,然后保存。


  “20 2E"是Unicode中的RLO符(Right to Left Override)

5. 用现在test.txt中的内容重命名可执行文件,可执行文件的名字是ABCexe.jpg。

    但是Windows在判断文件格式时,还是认为这是个exe文件,所以它是可以双击执行的。

6. 双击这张“图片”吧,然后想想你能造成多少破坏。


But, don't be evil.


PS: 其实还有更简单的方法: 对生成的exe文件,直接重命名。先输入ABC;然后右键,选择Insert Unicode Control Character -> RLO;再依次按下:gpj.exe。

        效果是一样的。


不光是jpg,用mp3,gif,rar等等都可以作恶。

再收到这类文件时,一定要小心为上。

你可能感兴趣的:(windows,insert,Build,exe,character,文本编辑)