c ++ - 从内存中执行二进制文件

时间:2016-09-17 11:20:18

标签: c++

你好,我真的需要帮助我的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;
}

1 个答案:

答案 0 :(得分:0)

程序指令放在称为文本代码段的进程存储器的只读区域中,并在编译器生成exe时决定。操作系统根本不会期望堆栈或堆中的程序指令!否则,病毒很容易制作....