从内存执行二进制文件
Execute a binary file from memory
大家好,我真的需要帮助在我的c/c++编程技能。我必须加载一个二进制文件,也许是一个简单的"hello World",然后直接从缓冲区执行它。因此,我用二进制文件加载缓冲区,并尝试将编程指针设置为缓冲区。但它不能正常工作。你能给我一些有用的建议吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
int main(int argc, const char * argv[]) {
FILE *fileptr;
char *buffer;
long filelen;
fileptr = fopen("helloworld", "rb"); //Open File in binary mode
fseek(fileptr, 0, SEEK_END); //Jump to the end of file
filelen = ftell(fileptr); //Get the current byte offset in File
rewind(fileptr); // Jump back to beginnig of the file
buffer = (char *)malloc((filelen+1)*sizeof(char));
fread(buffer, filelen, 1, fileptr);
fclose(fileptr);
int *ret;
ret = (int *)&ret + 2;
(*ret) = (int)*buffer;
}
程序指令被放置在进程内存的只读区域,称为文本代码段,当编译器生成exe时决定。操作系统根本不会期望程序指令在堆栈或堆中!否则病毒很容易被制造出来....
相关文章:
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 如何忽略某些二进制文件的执行?
- -bash:/a.out:无法执行二进制文件:Exec格式错误
- c ++:如何为每个特征制作特定的二进制文件(可执行文件)?
- 我有一个预处理的 C/C++ 源文件 (cacti.i).如何从这个 .i 文件生成可执行二进制文件,以便我可以像 ./
- 如果在执行过程中替换二进制文件,"const"数组是否驻留在内存中?
- 如何告诉 clang 将调试符号放入可执行二进制文件中
- Docker Centos,无法执行二进制文件
- bash:./main:无法执行二进制文件:Exec格式错误
- 如何直接从分配的内存中执行mmaped二进制文件/代码
- 在运行时动态更新二进制文件(可执行文件)而不停止的任何类型的方法
- 如何从C中的可执行文件中检索平面二进制文件
- 在执行期间将大型多维数组读取和写入二进制文件并返回数组
- 无法使用字符串中的命令使用 execlp() 执行二进制文件
- 尝试从 c 执行任何二进制文件
- Windows NT 二进制可执行文件内部常量字符串编码
- 从没有外壳的C++执行二进制文件
- 从 Web UI 访问C++编译的可执行二进制文件
- bash:即使二进制和Linux是64位的,也无法执行二进制文件:Exec格式错误
- AWS:无法执行二进制文件