Tag: 可执行文件

如何在可执行文件中存储数据

我需要找到一种方法来在程序的可执行文件中存储250 KB的纯文本数字。 通常,我会将数据放在一个单独的文件中,让程序在运行时读取它,但这不是一个选项。 相反,程序和数据需要在一个可执行文件中。 我完全不知道怎么做(除了写250.000 #defines :-),我很感激任何建议。

如何从目标文件中读取Mach-O头?

我花了几天时间试验assembly,现在了解assembly和机器代码之间的关系(在OSX上通过NASM使用x86,阅读英特尔文档 )。 现在我试图理解链接器如何工作的细节,特别是想要了解Mach-O目标文件的结构,从Mach-O头开始。 我的问题是,你能否将下面的Mach-O标头映射到otool命令输出(显示标题,但它们的格式不同)? 这个问题的一些原因包括: 它将帮助我看到“Mach-O头的结构”上的文档如何在真实世界的目标文件中查看。 它将简化理解的路径,因此我和其他新人不必花费很多时间或几天想知道“他们是指这个还是这个 ”类型的东西。 如果没有以前的经验,很难将一般的Mach-O文档精神翻译成现实世界中的实际目标文件。 下面我展示了我尝试从真实对象文件解码Mach-O头的示例和过程。 在下面的描述中,我试图显示出现的所有小/微问题的提示。 希望这将提供一种对新手如此混淆的感觉。 例 从名为example.c的基本C文件开始: #include int main() { printf(“hello world”); return 0; } 用gcc example.c -o example.out编译它,它给出: cffa edfe 0700 0001 0300 0080 0200 0000 1000 0000 1005 0000 8500 2000 0000 0000 1900 0000 4800 0000 5f5f 5041 4745 5a45 524f 0000 0000 0000 […]

如何将文件嵌入可执行文件?

我有两个问题,第一个已经解决了。 目前的问题 如果我嵌入了一个需要加载库的文件,例如jpeg图像或mp3音乐,我将需要使用该文件作为库的输入。 但是,每个库都是不同的,并使用一种方法来获取文件作为输入,输入可以是文件名或FILE *指针(来自libc的文件界面)。 我想知道如何访问带有名称的嵌入式文件。 如果我创建一个临时文件会有效率,还有另一种方法吗? 我可以将文件名映射到内存吗? 我的平台是Windows和Linux。 如果show_file(const char * name)是库中的函数,我将需要一个字符串来打开该文件。 我看过这些问题: 如何在内存中获取缓冲区的文件描述符? 从C中的文件描述符获取文件名 以下代码是我的解决方案。 这是一个好的解决方案吗? 它效率低下吗? # include # include extern char _binary_data_txt_start; extern const void* _binary_data_txt_size; const size_t len = (size_t)&_binary_data_txt_size; void show_file(const char* name){ FILE* file = fopen(name, “r”); if (file == NULL){ printf(“Error (show_file): %s\n”, name); return; } while […]

有没有办法用C语言更改目录?

有没有办法可以通过执行C程序 更改到任何目录 ?