1

いくつかの理由で、ここで説明されている方法を使用しています: http://geekswithblogs.net/TechTwaddle/archive/2009/10/16/how-to-embed-an-exe-inside-another-exe-as-a .aspx

埋め込みファイルの最初のバイトから始まり、4.234.925 バイトを 1 つずつ通過します。完了するまでに約 40 秒かかります。

埋め込みファイルをハードディスクにコピーする他の方法はありますか? (ここは間違っているかもしれませんが、埋め込みファイルはメモリから読み取られていると思います)

ありがとう。

4

2 に答える 2

2

埋め込まれた exe の場所とサイズがわかれば、1 回の書き込みで実行できます。

LPBYTE pbExtract; // the pointer to the data to extract
UINT   cbExtract; // the size of the data to extract.

HANDLE hf;
hf = CreateFile("filename.exe",          // file name
                GENERIC_WRITE,           // open for writing 
                0,                       // no share
                NULL,                    // no security 
                CREATE_ALWAYS,           // overwrite existing
                FILE_ATTRIBUTE_NORMAL,   // normal file 
                NULL);                   // no template 

if (INVALID_HANDLE_VALUE != hf)
{
   DWORD cbWrote;
   WriteFile(hf, pbExtract, cbExtract, &cbWrote, NULL);
   CloseHandle(hf);
}
于 2010-02-14T20:54:13.327 に答える
1

男が言うように、WriteFile 呼び出しごとに、より多くのファイル (または全体) を書き込みます。バイトごとの WriteFile 呼び出しは、途方もなく遅くなります。

于 2010-02-14T20:51:50.127 に答える