1

fmemopen 関数を使用して、実行可能ファイルの char* をメモリにマップしようとしています。これは、FILE * を使用できるようにする必要があります (ハード ドライブにまったく書き込まずに)。fmemopen 関数がファイルを変更するため、FILE* からファイルを書き込むときに認識されない別の形式になるという問題。

    FILE * stream;
stream = fmemopen(value, strlen(value), "rb");                                                                                                FILE *fp;
fp = fopen("testing.exe", "w");
    fwrite(stream, leng, 1, fp);

value は (char*) で、leng は char * length です。

アドバイスをいただければ幸いです。ありがとう

4

2 に答える 2

1

fmemopen がファイルのあり方を変更したとおっしゃっていたので、モードとして「rb」を選択したことに注意してください。これは、バイナリとして読み取ることを表します。「r」だけで試してみてください。

Edit[Thanks Scott] 実行可能ファイルに書き込んでいるので、"rb" のままにし、"wb" で書く必要があります。

于 2013-07-15T18:29:59.947 に答える