Joe*_*sen 5 windows-7 ntfs batch alternate-data-stream
通常,在创建可执行文件作为备用数据流之后,例如:
type exec_this.bat > C:\blank.txt:exe.bat
Run Code Online (Sandbox Code Playgroud)
可以简单地说
start C:\blank.txt:exe.bat
Run Code Online (Sandbox Code Playgroud)
运行可执行文件。在 Windows 7 中,我似乎得到的只是“访问被拒绝”。或“系统找不到文件 $WHATEVER_THE_FILE_IS。”
如何执行此批处理文件?
Windows 7 静默删除了从 ADS执行任何内容的能力。但是,从 DOS 命令行,还有其他选项。对于批处理文件,您可以逐行执行:
for /f "usebackq delims=?" %i in (blank.txt:exe.bat) do %i
Run Code Online (Sandbox Code Playgroud)
(请记住,这实际上并没有将批处理文件执行到自己的进程中,它只是从文件中读取并执行每一行。?键入的符号为alt 代码编号 2541。您希望分隔符是您不会的字符永远不会在代码中使用。)
小智 1
接受的答案仅运行批处理文件的一行。这将中断批处理文件中的任何高级逻辑。但是,如果您使用临时文件,您可以简单地完成此操作:
\ncat < blank.txt:exe.bat > temp.bat & temp.bat\nRun Code Online (Sandbox Code Playgroud)\n您还可以通过类似的命令在备用数据流中执行 PowerShell 脚本:(尽管我确信也有纯 PowerShell 方式。)
\ncat < blank.txt:exe.ps1 > temp.ps1 & powershell .\\temp.ps1\nRun Code Online (Sandbox Code Playgroud)\n在备用数据流中创建批次:notepad blank.txt:exe.bat
if 6==7 then goto pie \necho apple \ngoto end \n:pie \necho pie \n:end \nRun Code Online (Sandbox Code Playgroud)\n破碎的:
\nE:\\broken>for /f "usebackq delims=\xcf\x86" %i in (blank.txt:exe.bat) do %i\n\nE:\\broken>if 6==7 then goto pie\n\'if\' is not recognized as an internal or external command,\noperable program or batch file.\n\nE:\\broken>echo apple\napple\n\nE:\\broken>goto end\n\nE:\\broken>\nThe filename, directory name, or volume label syntax is incorrect.\n\nE:\\broken>echo pie\npie\n\nE:\\broken>\nThe filename, directory name, or volume label syntax is incorrect.\nRun Code Online (Sandbox Code Playgroud)\n更好的:
\nE:\\better>cat < blank.txt:exe.bat > temp.bat & temp.bat\n\nE:\\better>if 6 == 7 then goto pie\n\nE:\\better>echo apple\napple\n\nE:\\better>goto end\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4351 次 |
| 最近记录: |