我已经看到 Windows 中的每个可执行文件的扩展名都是 .exe。但 Mac OS X 不一样。
Windows 执行 .exe 文件。那么Mac OS X 执行什么样的文件呢?
两种操作系统执行应用程序的区别是什么?
即使我发现 Windows 设置具有相同的扩展名 .exe 但在 Mac 上设置的扩展名为 .dmg
您能否与我分享有关 Mac 与 Windows 上的 .dmg 和可执行文件的知识?
据我所知,每个程序都由一组处理器指令组成,其中包含一些特定的数据变量(float、int、char...),用于处理处理器寄存器。
因此,我(很久以前)想到的第一件事是,如果您知道%¨#$¨#(只是一个随机示例)的 ASCII 值可以解释为x86的堆栈指针寄存器(只是示例)的地址处理器。如果这是真的,每次在读取二进制文件的内容时发现这个“不可读”的值,您就可以解释堆栈指针寄存器正在用于管理某些数据变量。
不幸的是,这不会发生。下面是一个ping.exe从 Windows 中打开的程序内容示例notepad.exe:

它是一个二进制文件,其数据对于我们人类来说是不可理解的(对于机器来说是可以理解的。)即使他们知道汇编代码(机器语言的最低级别),对任何人来说也没有任何意义。
所以,如果我正确理解了一切,有人可以解释一下吗
当我偶然发现/usr/bin/emacs,/usr/bin/emacsclient和/usr/bin/emacs-undumped.
angrybacon@sandman ~/ $ ll /usr/bin/emacs*
-r-xr-xr-x 1 root wheel 26929904 Dec 3 07:35 /usr/bin/emacs
-rwxr-xr-x 1 root wheel 3201184 Dec 3 07:36 /usr/bin/emacs-undumped
-rwxr-xr-x 1 root wheel 36928 Dec 3 07:36 /usr/bin/emacsclient
Run Code Online (Sandbox Code Playgroud)
我试图删除那些二进制文件但没有成功。
angrybacon@sandman ~/ $ sudo rm -f /usr/bin/emacs*
rm: /usr/bin/emacs: Operation not permitted
rm: /usr/bin/emacs-undumped: Operation not permitted
rm: /usr/bin/emacsclient: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
我已经尝试过 GNUrm和删除schg标志,但仍然没有运气。
另外,那些附带默认 Mac 设置的吗?
同样的问题,与/usr/share/emacs/和/usr/share/info/emacs*。
我跑了一些Fortran语言软件(LBLRTM)和一个shell脚本,准备输入生成许多文件与名称TAPE3,TAPE4等等。出于调试目的,我以前file来识别文件类型。file告诉我:
TAPE3: 8086 relocatable (Microsoft)
Run Code Online (Sandbox Code Playgroud)
我的猜测是file这里是错误的,它只是一个二进制文件,恰好看起来像8086 relocatable. 但是,什么是一个8086 relocatable?
我一直想知道可执行二进制文件实际上是如何工作的。编译总是声明为
获取源代码并将其翻译为机器语言
但这到底意味着什么呢?即:
请注意,我对处理器和编译器的了解有限,并且对汇编一无所知。
我一直在xxd用来创建文件的六进制表示(任何文件,如 .jpg、.docx、.zip 等),像这样,..
$ xxd -p original_file.zip > hexa_format.txt
Run Code Online (Sandbox Code Playgroud)
并扭转
$ xxd -r -p hexa_format.txt > original_file.zip
Run Code Online (Sandbox Code Playgroud)
如果有人觉得这不是正确的方法,请纠正我。无论如何这不是我的问题。现在我必须将它们转换为二进制而不是六进制。所以命令是这样的,如果我是正确的。
$ xxd -p -b original_file.zip > binary_format.txt
Run Code Online (Sandbox Code Playgroud)
我的问题是,
如何将其从上述命令创建的二进制文件 (binary_format.txt) 反转回原始文件。xxd 的手册页说它不能完成(在最后一行)。
-b | -bits
Switch to bits (binary digits) dump, rather than hexdump. This
option writes octets as eight digits "1"s and "0"s instead of a
normal hexadecimal dump. Each line is preceded by a line number
in hexadecimal and followed by an ascii (or ebcdic) representa?
tion. …Run Code Online (Sandbox Code Playgroud) 基于压缩文件是一个新的二进制文件的想法,为什么我不能通过一次又一次地压缩它来减小 Zip 的大小——直到生成一个非常小的结果文件?
如何找出 .exe 文件的详细信息 - 例如软件作者、供应商、日期、版本等?
当我右键单击文件并选择属性时,我没有得到这些信息。
但是,如果我将文件上传到virustotal.com(不为他们工作或与他们有任何关联 - 所以这不是促销)然后我可以看到上述信息。
我不想上传文件,所以我正在寻找一个 Windows 工具来做到这一点,拜托。这应该是读取信息的简单过程,因为我上传到virustotal 表明该信息已经在文件中。注意:我使用virustotal 的主要目的不是扫描.exe,而是使用virustotal 提供的工具来读取文件元数据。
背景:我正在整理一些下载的文件,需要了解有关它们的更多信息。
我已经搜索过但没有找到我需要的答案,这让我感到非常惊讶。
在 Makefile 中,我想打印一个以十六进制数字表示的字节并将其传递给另一个程序的 STDIN。由于某种原因,它不起作用:
without-pipe:
@printf '\x66\x6f\x6f'
with-bash-and-pipe:
@/bin/bash -c "printf '\x66\x6f\x6f' | cat"
with-pipe:
@printf '\x66\x6f\x6f' | cat
Run Code Online (Sandbox Code Playgroud)
运行该文件会产生:
$ make without-pipe
foo
$ make with-bash-and-pipe
foo
$ make with-pipe
\x66\x6f\x6f
Run Code Online (Sandbox Code Playgroud)
我缺少什么功能make以及使最后一个目标产生相同输出的正确方法是什么。这with-bash-and-pipe是一种解决方法。
我有一个 BIOS 文件 .EXE,我想从中提取二进制文件,以直接使用 USB EEPROM 编程器将其闪存到 BIOS 芯片。
我尝试了不同的程序,如通用提取器和相同的结果。任何人都知道如何做到这一点?
binary-files ×10
windows ×4
linux ×2
macos ×2
assembly ×1
bios ×1
command-line ×1
compile ×1
compression ×1
cpu ×1
eeprom ×1
make ×1
metadata ×1
permissions ×1
pipe ×1
xxd ×1
zip ×1