3

我已经阅读了一些有关的文档,Alternate Data Streams并且正在考虑在我自己的项目中使用它们。然而,在我决定使用它们之前,我仍然有很多未知的知识和悬而未决的问题。这就是我制作这个问题列表的原因:

  1. 如果没有 Sysinternals 工具,你如何枚举 Streams streams
  2. 流会影响“主机”文件的 MD5 值吗?
  3. 如果我将“主机”文件复制/剪切到另一个(NTFS)路径会发生什么?流也会复制/剪切自己吗?
  4. 如果我将“主机”文件复制/剪切到另一个不是 NTFS 的路径会发生什么?
  5. 现有流中是否可以有另一个流?
  6. 由于每个流都有一个实际的文件句柄,是否可以更改流的属性?
  7. 我可以使用LoadLibraryAPI 从流中加载 DLL 吗?
  8. 是否可以执行(例如ShellExecute)流?
  9. 使用 的优点/优点/缺点是Alternate Data Streams什么?
  10. 如果我使用,我需要注意Alternate Data Streams什么?

我期待着您的答案/信息/摘要。首选语言是 Delphi,但任何其他语言也可以,只要它使用WinAPI.

4

1 回答 1

9

您的许多问题都在这里涵盖:http: //flexhex.com/docs/articles/alternate-streams.phtml

  1. 枚举:使用NtQueryInformationFile,见链接。从 Windows Vista 开始,您还可以使用dir /r.

  2. 校验和:由于您在按名称访问文件时通常只打开未命名的数据流,因此在计算校验和时仅使用该流的内容。

  3. 复制到 NTFS:Windows 资源管理器和复制命令行实用程序复制所有流。

  4. 复制到其他 FS:备用数据流丢失。

  5. 嵌套流:不,文件仅由流列表组成,它们不能嵌套。

  6. 属性:一些属性是基于文件的,一些(加密的、压缩的、稀疏的)是基于流的。

  7. LoadLibrary似乎适用于备用数据流。

  8. ShellExecuteERROR_FILE_NOT_FOUND在我的计算机上出现 (2)失败的 ADS 。

    请注意,理论上可以从命令行运行 ADS:

    type calc.exe > dummy.txt:calc

    wmic process call create "dummy.txt:calc"

  9. ADS 可用于存储与文件相关的一些非关键信息。例如,从 Internet 下载的可执行文件将具有 ADS,这会导致 Explorer 在文件执行之前显示警告。

  10. 见链接。特别是,不要将它们用于关键数据。

于 2013-08-09T11:47:41.327 回答