返回列表 发帖
昨天在batman的帮助下,终于有了新突破:
@find /v "find"<%~s0>样本文件.bat
文件头 2>nul 3>"[tab][tab] [tab][tab][tab][tab][tab][tab][tab][tab][tab][tab][tab]
@(for %%a in (test) do echo test)>tmp
@for /f "skip=2" %%a in (tmp) do @echo[tab][tab]
echo 123
pauseCOPY
在测试中的表现非常棒,能够区分关闭回显和打开回显的情况
现在唯一的心病就是对回显的判断了,如何摆脱临时文件呢?

TOP

复制代码双击生成样本文件(需调用ASCMap获取特殊字符):
@echo off
setlocal enabledelayedexpansion
chcp 437 >nul
call ASCMap $
echo !$:~0xff,1!!$:~0xfe,1!  2^>nul 3^>"!$:~0x9,1!!$:~0x9,1! !$:~0x9,1!!$:~0x9,1!!$:~0x9,1!!$:~0x9,1!!$:~0x9,1!!$:~0x9,1!!$:~0x9,1!!$:~0x9,1!!$:~0x9,1!!$:~0x9,1!!$:~0x9,1!
echo @(for %%%%a in (test^) do echo test^)^>tmp
echo @for /f "skip=2" %%%%a in (tmp^) do @echo !$:~0x9,1!!$:~0x9,1!
echo echo 123
echo pause
)>样本文件.bat
chcp 936 >nul
echo  测试
echo on
样本文件.bat
pauseCOPY

TOP

掉用ascmap是为了获取制表符,你最好说明下;
为了代码精简,制表符获取用!$:~9,1!好些;

TOP

17楼代码因为代码页的原因,未能生成样本...

以下是plp修改后的版本:
@echo off
setlocal enabledelayedexpansion
set file=样本文件
chcp 437 >nul
call ASCMap $
set t=!$:~9,1!
(echo !$:~0xff,1!!$:~0xfe,1!  2^>nul 3^>"!t!!t! !t!!t!!t!!t!!t!!t!!t!!t!!t!!t!!t!
echo @(for %%%%a in (test^) do echo test^)^>tmp
echo @for /f "skip=2" %%%%a in (tmp^) do @echo !t!!t!
echo echo 123
echo pause
)>!file!.bat
chcp 936 >nul
echo  测试
echo on
call 样本文件.bat
pauseCOPY
测试成功
其中!$:~0xff,1!!$:~0xfe,1!代表fffe文件头,而!$:~9,1!为tab制表符

TOP

echo;>a.txt
copy /b a.txt 要解密的文件
这样原来文件头是FF F0,解密后变成0D 0A FF F0,就不会被当成unicode格式了
zm900612 发表于 2011-3-14 23:02



现在更好的解密方法是
copy nul+a.bat 解密.batCOPY

TOP

这个讨论的有点不是太明白,不知道你们到底是在讨论些什么,但要不输出错误信息不一定要用cls呀,只要让cmd把错误信息屏蔽不就好了吗
a.bat
@echo off 1>&3 2>&4 3>nul 4>nul
echo 123&abc
pause&call b.bat
pauseCOPY
b.bat
echo 123&abc
pause 1>con 2>con 5>con 6>con
echo 123&abcCOPY

TOP

只是理论归理论,真正要给出一段简短的代码需要N多次测试。

现在求该代码(提示下,这并不是件容易的事,要得到最简短的代码需要你一番折腾的)

(提示,对于文件头FFEF数据,大家可以借助debug命令生成 ...
plp626 发表于 2011-3-12 15:24

刚在网上找了下,这里说的利用unicode 文件头加密是不是说在文件前加很多的%%a呢

TOP

刚在网上找了下,这里说的利用unicode 文件头加密是不是说在文件前加很多的%%a呢
601997526 发表于 2011-6-13 16:30

不是一个东西,在文件前加很多的%%a是利用记事本的BUG,让记事本认为代码文件是以Unicode保存的

而这里说的文件头加密是指利用Unicode文件格式的BOM(Byte Order Mark),让编辑器认为代码文件是以Unicode保存的

%%a是记事本的BUG,其他文本编辑器一般没有,而加上了BOM以后所有的编辑器都会认为是Unicode,因为这是标准。

TOP

返回列表