2 个版本
0.0.58 | 2021年6月27日 |
---|---|
0.0.57 | 2020年7月18日 |
0.0.56 |
|
#972 在 命令行工具
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
bin2src --out-language pascal --out-dir "X:\My Projects\project01" --out-file image01 myimage.jpg
带有空格的 Windows 路径需要引号
此命令将创建文件 ...\image01.pas
,其中使用十进制格式定义数据:[210, 0, ...]
。
bin2src -l c -d "X:\My Projects\project02" -f image01 -h myimage.jpg
此命令将创建文件,但二进制数据以十六进制格式表示:[0x10, 0xfa, ...]
...\image01.h
...\image01.c
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许可约束。
如果您需要其他类型的许可,请与我联系。