ハンドルがオープンされているファイルを実行する(C ++ winapi)

私は、C + +アプリケーションのリソースとしてexeファイルを含めると私はそれを実行する必要がありますが、私はそれがユーザーがそれをコピーできないように多くのアクセスを制限する必要があります。 外部プログラムがアクセスできないようにハンドルを開いたままにする必要があります。また、FILE_FLAG_DELETE_ON_CLOSEをフラグとして使用したため、アプリケーションが強制終了された場合は削除されます。

しかし、私はそれをCreateProcess()またはWinExec()で実行することはできません。 私はそれが奇妙に聞こえることは知っていますが、私には良い理由があります.DLL注射の不正行為からゲームの実行ファイルを保護する必要があります。私にはそのexeのコードはありません。

1
ユーザーがあなたの実行ファイルをコピーしないようにする馬鹿な方法はありません...ただsayin '
追加された 著者 JosephH,
この戦略には非常に多くの穴があります。再検討する必要があります。実行中にコンピュータをシャットダウンして再起動すれば、ファイルは削除されません。どんな初心者ユーザーもそれを行うことができます。また、それがリソースとして含まれている場合、それはちょうど抽出することができます。どのようにあなたのアプリを設計して、人々が.exeをコピーするかどうかは関係ありませんか?
追加された 著者 tenfour,
ユーザーがファイルをコピーできないようにすると、DLLの挿入を防止できますか?
追加された 著者 tenfour,
私は知っているが、そのファイルをコピーするのが実際の難しさは私にとっては十分である。
追加された 著者 lazy_banana,
問題:私は保護したいexeファイルを変更することはできません。それは私のものではなく、ソースもありません。しかし、それは問題ではない、私はそれがファイルハンドルを開いたままにする必要があるため、私はexeを実行することはできません。
追加された 著者 lazy_banana,
まあ私のプログラムは、ゲームのexeを実行し、DLLの注入からそれを常にチェックする。しかし、ゲームのexeは私のプログラムなしで実行することができ、それは脆弱です。私の保護なしでゲームを実行することができます。しかし、これは私の質問のポイントではありません。
追加された 著者 lazy_banana,

1 答え

ファイル全体をロックすることはできないので、 LockFile で非常に小さな部分をロックします。 Windowsが使用しないバイト範囲を見つける必要があります。これを達成するには、EXEにダミーリソースを追加します。 (これはソースコードを必要としません)。

0
追加された
私はそれを試してみる、ありがとう。
追加された 著者 lazy_banana,