我已经阅读了一些关于Alternate Data Streams
的文档,我正在考虑在我自己的项目中使用它们。然而,在我决定使用它们之前,我还有很多未知的知识和开放的问题。这就是我提出这个问题清单的原因:
streams
?LoadLibrary
API从流加载DLL吗?ShellExecute
)流?Alternate Data Streams
有哪些优点/好处/缺点?Alternate Data Streams
?我期待你的答案/信息/总结。最好的语言是Delphi,但只要它使用WinAPI
,任何其他语言都会这样做。
答案 0 :(得分:8)
您的许多问题都在此处讨论:http://flexhex.com/docs/articles/alternate-streams.phtml
枚举:使用NtQueryInformationFile
,请参阅链接。从Windows Vista开始,您还可以使用dir /r
在命令行上枚举流。
校验和:由于您在按名称访问文件时通常只打开未命名的数据流,因此在计算校验和时仅使用此流的内容。
复制到NTFS:Windows资源管理器和复制命令行实用程序复制所有流。
复制到其他FS:备用数据流丢失。
嵌套流:不,文件只包含一个流列表,它们不能嵌套。
属性:某些属性是基于文件的,有些属性(加密,压缩,稀疏)是基于流的。
LoadLibrary
似乎适用于备用数据流。
ShellExecute
(2)ADS上的 ERROR_FILE_NOT_FOUND
失败。
请注意,理论上可以从命令行运行ADS:
type calc.exe > dummy.txt:calc
wmic process call create "dummy.txt:calc"
ADS可用于存储与文件关联的一些非关键信息。例如,从Internet下载的可执行文件将具有ADS,这会导致Explorer在文件执行之前显示警告。
请参阅链接。特别是,不要将它们用于关键数据。