朱朱你堕落了 发表于 2024-6-28 19:25

请用MFC或C++写一段代码

本帖最后由 朱朱你堕落了 于 2024-6-28 19:51 编辑

C++生成一个EXE,大小如下图大小一样的文件即可,这个EXE当然无实际意义,也无法正常打开,这无所谓,
这个EXE用十六进制编辑工具打开,里面全是00即可,MFC或C++实现都可以,请发下源码。

https://im.gurl.eu.org/file/27f0307f2590090d4e9a2.png

hunfeifei 发表于 2024-6-28 19:25

        CFile cf;

        if (cf.Open(L"D:\\dump_.exe", CFile::modeCreate | CFile::modeReadWrite))

        {

                cf.SetLength(638976);



                cf.Close();

        }

        else

        {

                AfxMessageBox(L"文件创建失败");

        }






lccccccc 发表于 2024-6-28 19:45

请问这个可以吗?
https://wwk.lanzouj.com/ibUJm22z475g
密码:1g7r

https://s21.ax1x.com/2024/06/28/pk66BAe.png

朱朱你堕落了 发表于 2024-6-28 19:49

lccccccc 发表于 2024-6-28 19:45
请问这个可以吗?
https://wwk.lanzouj.com/ibUJm22z475g
密码:1g7r

麻烦发下C++源码,别的语言的源码看不懂,也没对应的编译器。

苏紫方璇 发表于 2024-6-28 19:52

来一个c的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
        FILE *file;
        file = fopen("test.exe", "wb");
        if (file == NULL) {
                printf("打开出错\n");
                return 1;
        }
        char* buf = (char*)malloc(638976);
        memset(buf, 0, 638976);
        // 写入文件
        size_t wlen = fwrite(buf, sizeof(char), 638976, file);
        if (wlen != 638976) {
                printf("写入出错\n");
                fclose(file);
                free(buf);
                return 1;
        }

        // 关闭文件
        fclose(file);
        free(buf);
        printf("写入完成\n");
        return 0;
}

ytw6176 发表于 2024-6-28 19:56

做作业吗?随便找个ai都能解决吧

朱朱你堕落了 发表于 2024-6-28 19:58

苏紫方璇 发表于 2024-6-28 19:52
来一个c的
#include
#include


比方说,要生成3个G或5个G大小的EXE,不知道malloc会不是申请失败,意思就是说,当数据很大时,有可能调用一次malloc就失败,我贴子中的大小只是举例而已,我想的是写一个循环,比方说每次写入1000大小的数据,直到3个G大小全面写入完毕,这样比较完美。

朱朱你堕落了 发表于 2024-6-28 20:05

苏紫方璇 发表于 2024-6-28 19:52
来一个c的
#include
#include


最佳答案牛B,我看了下,
CFile::SetLength

virtual void SetLength(
   ULONGLONG dwNewLen
);

ULONGLONG类型这个牛B,这个生成10个G都没事。

lccccccc 发表于 2024-6-28 20:06

朱朱你堕落了 发表于 2024-6-28 19:49
麻烦发下C++源码,别的语言的源码看不懂,也没对应的编译器。

这是我写的c++的源码:
#include <stdio.h>

int main() {
    FILE *file = fopen("dumped_.exe", "wb");
    if (file == NULL) return 1;
    for (int i = 0; i < 638976; ++i) {
      unsigned char bit = 0;
      if (fwrite(&bit, sizeof(unsigned char), 1, file) != 1) {
            fclose(file);
            return 1;
      }
    }

    fclose(file);
    printf("Completed.");
    return 0;
}

苏紫方璇 发表于 2024-6-28 20:21

朱朱你堕落了 发表于 2024-6-28 19:58
比方说,要生成3个G或5个G大小的EXE,不知道malloc会不是申请失败,意思就是说,当数据很大时,有可能调 ...

3.5G的肯定申请失败,这种得分块写,楼下那个1字节循环的就可以
页: [1] 2
查看完整版本: 请用MFC或C++写一段代码