#二进制文件 #源文件 #二进制数据 # #二进制 #转换二进制 #字节数组

应用 bin2src

将二进制文件转换为字节数组并将其嵌入到其他语言的源文件中

2 个版本

0.0.58 2021年6月27日
0.0.57 2020年7月18日
0.0.56 2020年7月17日

#972命令行工具

MIT 许可证

63KB
1.5K SLoC

bin2src

bin2src 是一个简单的命令行工具,可以将二进制文件转换为字节数组,并将其分配给其他语言源文件中的变量;因此,您可以将其嵌入到您的程序中。

目前支持的输出语言

  • C
  • C (shellcode)
  • Pascal
  • Python
  • Rust

概述

bin2src 读取一个二进制文件(例如 jpg、wav、mp3 等)并生成一个包含嵌入式二进制数据(作为字节数组)的源文件,并将其分配给变量。

如果您不希望与您的应用程序一起分发二进制文件并让用户直接访问它,则非常有用。

使用 bin2src,您可以将数据嵌入到最终的可执行文件中,并通过存储在内存中的变量使用它。

请注意,高级用户总是有可能从可执行文件或内存转储中提取数据。

用法

bin2src < -l LANG | --out-lang LANG > [ OPTIONS ] < FILE >

LANG and FILE are required.

Options:

        -l, --out-language LANG         specify the language, where LANG={c|cshell|pascal|python|rust}

        -d, --out-dir PATH              specify where to output source(s) file(s);
                                        if not specified, generate in current directory

        -f, --out-file OUTFILE          specify the output file(s) name (* without extension *);
                                        if not specified, output file(s) will have the same name
                                        of input file (without extra dots).

        -h, --hex                       output bytes in hexadecimal (for C shellcode this flag has
                                        diferent behaviors. See the Github site for more information)

Currently supported languages:

  - C
  - C for shellcode
  - Pascal
  - Python
  - Rust	

一些示例

假设您有一个想要嵌入到您的可执行文件中的图像 myimage.jpg

示例 1:

bin2src --out-language pascal --out-dir "X:\My Projects\project01" --out-file image01 myimage.jpg

带有空格的 Windows 路径需要引号

此命令将创建文件 ...\image01.pas,其中使用十进制格式定义数据:[210, 0, ...]

示例 2:

bin2src -l c -d "X:\My Projects\project02" -f image01 -h myimage.jpg

此命令将创建文件,但二进制数据以十六进制格式表示:[0x10, 0xfa, ...]

  • ...\image01.h
  • ...\image01.c

示例 3:

bin2src --out-language python myimage.jpg

此命令将在当前目录中创建文件 myimage.py

请检查示例目录中的其他示例,了解bin2src的一些实际应用。

注意

  • 请注意您将要嵌入代码中的文件大小!!!

    确保它被您的操作系统、编译器、语言标准、运行时内存等接受。

  • 如果输入文件名包含多个点,除了分隔名称和扩展名的点之外,如果没有--out-file-f命令行选项,输出文件名将是第一个点之前的名字。例如

    abc.def.ghi.x => abc.y

  • 用于C shellcode输出的选项--hex-h的工作方式不同。没有此标志,它将数据类型定义为unsigned char字节,否则使用十六进制标志,它将以字符串类型嵌入字节(char *)。

  • 要使用字符串格式嵌入生成的C shellcode,请确保二进制数据不包含空字节("\x00"),或者不要使用stdlib中的字符串函数,如strlen。这可能会破坏您的代码并引发异常(例如,访问违规等)。

  • 所有测试都是在Windows 10 Pro (2004)上进行的,并且为了执行alpha版本,您可能需要安装最新的MSVC运行时。尽管如此,它应该在其他平台上运行良好。

  • 有许多需要组织和改进的事情。欢迎提出建议。

许可

由Alexandre Gomiero de Oliveira开发,遵循MIT许可

bin2src生成的所有代码均受MIT许可约束。

如果您需要其他类型的许可,请与我联系。

无运行时依赖