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等等都可以作恶。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值