【问题标题】:Could someone help me understand hexadecimal representation of files? [closed]有人可以帮我理解文件的十六进制表示吗? [关闭]
【发布时间】:2014-01-03 23:54:19
【问题描述】:

我希望能够操作给定文件的十六进制表示(不使用第 3 方应用程序)。文件表示只是按特定顺序的一系列十六进制数字,还是它们是一组恒定数量的十六进制数字字节?

【问题讨论】:

  • 可以从 powershell 完成,这里有一些有用的十六进制位。 sans.org/windows-security/2010/02/11/…
  • 使用来自 sans.org $readin = [System.IO.File]::ReadAllBytes("C:\OldFile.exe");$hx = Convert-ByteArrayToHexString $readin -width 40 -delimiter "";$hx = $hx -replace "1234567890ABCDEF","FFFFFFFFFFFFFFFF";$hx = "0x" + $hx;$done = Convert-HexStringToByteArray $hx;set-content -value $done -encoding byte -path "C:\NewFile.exe";的转换函数的示例
  • 以上片段以字节形式读取 oldilfe.exe,使用 sans.org 函数转换为十六进制,用所有 FFFFFFF 替换十六进制 123456...,转换回字节并写入 newfile.exe。

标签: hex


【解决方案1】:

十六进制不是文件格式,它是文件内容的视图。十六进制编辑器打开常规文件并为您提供文件内容的视图,每个字节由成对的十六进制数字表示,而不是字母、数字、控制字符等。

您无法在没有应用程序的情况下以十六进制模式查看文件,就像您无法在没有记事本之类的程序的情况下打开文本文件进行查看一样。如果您使用的是 Windows,则没有可用的“第一方”十六进制编辑器,因此除非您希望自己编写程序,否则您只需要按照每个人的方式进行操作即可。

【讨论】:

  • 字符可以用 2 到 8 个十六进制数字表示(ASCII 和更常见的 Unicode 编码)。更正确的说法是“每个 byte 由成对的十六进制数字表示......”
  • 是的,编辑澄清。
  • 感谢您的敌意,这就是为什么我询问文件的“表示”。但你确实回答了我的问题,所以谢谢。
猜你喜欢
  • 1970-01-01
  • 2010-09-13
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多