从内存执行二进制文件

Execute a binary file from memory

本文关键字:二进制文件 执行 内存      更新时间:2023-10-16

大家好,我真的需要帮助在我的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时决定。操作系统根本不会期望程序指令在堆栈或堆中!否则病毒很容易被制造出来....