吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1644|回复: 5
收起左侧

[已解决] 用c读取exe文件,出现此文件的版本与正在运行的windows版本不兼容

 关闭 [复制链接]
d173220523 发表于 2020-4-28 21:39
本帖最后由 d173220523 于 2020-4-29 17:03 编辑

2、将记事本的.exe文件读取到内存,并返回读取后在内存中的地址.
3、将内存中的数据存储到一个文件中,(.exe格式),然后双击打开,看是否能够使用.
[C] 纯文本查看 复制代码
#include "iostream"
#include "stdio.h"
#include <stdlib.h>

void pula()
{
        FILE *fp,*fp1;
        int i;
        if ( (fp = fopen("C:\\Windows\\system32\\notepad.exe", "rb")) == NULL )
                puts("Fail to open file!");
        fseek(fp,0,2);
        i=ftell(fp);
        char* date = (char*)malloc(i);
        fseek(fp,0,0);
        if(date == NULL)
                puts("申请失败");
        fscanf(fp, "%c", date);
        printf("写入内存成功\n");
        if ( (fp1 = fopen("C:\\1111.exe", "wb")) == NULL )
                puts("Fail to open file!");
        fprintf(fp1,"%c",*date);
}

int main()
{
        pula();
        
        return 0;
}

该如何解决
L-2020-04-28-21-40-30.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

无闻无问 发表于 2020-4-28 22:04
读写不对吧,1kb明显不对嘛,怎么能运行呢…
FSA4565 发表于 2020-4-28 22:10
应该使用UE打开看看到底写进去了什么,来看下数据写入到底是出了什么问题。另外,关于这个申请内存的,这样复制文件会导致内存占用过高,在大体积的exe的情况下会导致内存申请失败,所以建议使用循环读取,读一点写一点。
absman1972 发表于 2020-4-28 22:50
fscanf()/fprintf() 要搭配迴圈使用,或是要改成 fread()/fwrite() 一次完成讀寫
原始的寫法只會讀寫一個byte
sam喵喵 发表于 2020-4-29 00:06
改成64位fseek试试
Vjmms 发表于 2020-4-29 10:16
这样只能读出notepad.exe这个文件的第一个字节。如果一个一个字节读,要用循环,不断增加指针,直到文件末尾。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-3 14:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表