【C++】利用Unicode控制字符-RLO构造欺骗性文件后缀

普通的利用过程:

1.准备已经生成好的exe程序。

 

2.重命名该文件,右键,选择“插入unicode控制字符”→“RLO”

3.将正序的文件名“gnp.scr”复制,直接粘贴进去,然后保存

得到如下“rcs.png”

 

一般利用过程

首先我们把文件名改为1agnp.exe,

 

然后重命名选中1a和gnp.exe,之间.右键“插入unicode控制字符”→“RLO”

保存文件名,此时文件名显示为1aexe.png

在代码中如何利用

首先定义了一个name数组:

BYTE names[] = { 0x73,0x00,0x65,0x00,0x78,0x00,0x2E,0x20,0x67,0x00,0x6E,0x00,0x70,0x00,0x2E,0x00,0x73,0x00,0x63,0x00,0x72,0x00,0x00,0x00 };

//对应unicode编码为“sex[RLO]gnp.scr”

PWCHAR namess = (PWCHAR)names;

【补充:1、RLO ( Code "\u202E" ; HTML ‮ ) :开始从右到左的文字;

2、LRO ( Code "\u202D" ; HTML ‭ ) :开始从左到右的文字;

3、PDF ( Code "\u202C" ; HTML ‬ ) :结束上一次定义。

接着再下面生成被控制端的exe文件时,在命名时利用了RLO的十六进制表示。

strCurrentPathW = strCurrentPathW + L"\\" + namess;

CreateMyFile(strCurrentPathW, lpBuffer, dwFileSize);

这样在生成文件的时候,就生成了一个文件名是png类型,但实际上是.scr(屏幕保护程序)

如下图所示:

 

猜你喜欢

转载自blog.csdn.net/qq_43633973/article/details/108408872