你好,我真的需要帮助我的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;
}
答案 0 :(得分:0)
程序指令放在称为文本代码段的进程存储器的只读区域中,并在编译器生成exe时决定。操作系统根本不会期望堆栈或堆中的程序指令!否则,病毒很容易制作....