2013-06-17 18 views
5

私たちは、マシン上で複数のインスタンスを実行したいサードパーティのネイティブアプリケーション(C言語で書かれています)を持っています。アプリケーション用に仮想化されたレジストリを使用して「サンドボックス」を作成するにはどうすればよいですか?

ただし、設定ファイルの場所を見つけるために、アプリケーションは特定のレジストリキーを読み書きします。実行中にこの位置を継続的に読み取ります。レジストリキーはHKLMにあります。つまり、2つの異なる場所にあるconfigファイルに対して、アプリケーションの2つの異なるインスタンスを試してみると、プロセスはそれぞれのつま先を踏んでいます。

プロセスが使用しているレジストリを「仮想化」する(または、サンドボックス内の各プロセスを実行する)ことができます。どちらも、単一の場所に書き込んでいると考えることができますが、異なっていて、彼らはお互いに足を踏み合わないでしょうか?独自の仮想化ソフトウェアは、はるかに複雑で、プログラミングとWindows SDKを使用してライブラリの呼び出しをフックに全体の粗が必要になるの作成
https://en.wikipedia.org/wiki/Portable_application_creators

答えて

5

には、いくつかのプログラムを仮想化するためのオプションがあります。

しかし、プログラムのコピーごとに追加のソフトウェアをセットアップして実行する必要のない簡単なオプションでは、プログラムの複数のコピーを作成し、各実行可能ファイルを編集することをお勧めします。

実行する必要があるアプリケーションのコピーを数多く作成し、16進エディタでアプリケーションファイルを開き、レジストリキーの名前を検索します。
HKLM \ System \ CurrentControlSet \ Control \ Session Manager

次に、各異なるバージョンの数字に(1バイト、0-9)すなわち最後のバイトを変更:
HKLM \システム\ CURRENTCONTROLSET \コントロール\セッションManage1
HKLM \システム\ CURRENTCONTROLSET \コントロール\セッションManage2
HKLM \ System \ CurrentControlSet \ Control \ Session Manage3

10の以上の違い(2バイト、00〜99)については

は、最後の2つのバイトを使用します。
HKLM \システム\ CURRENTCONTROLSET \コントロール\セッションManag01
HKLM \システム\ CURRENTCONTROLSET \コントロール\セッションManag02
をHKLM \ System \ CurrentControlSet \ Control \ Session Manag03

+0

興味深い考えです。私はDLLをチェックして、そこにレジストリキーを見つけたので、私はこれをテストします。理想的な解決策ではありませんが(私たちはプロセス作成でもう少しダイナミックになりたいですが)、これはうまくいくかもしれません。 –

+0

これをテストしたところ、うまくいくようです。ありがとう。私は他の提案があるのを待つつもりですが、他の解決策が出てこない場合でも、問題を解決するはずです。ありがとう! –

+0

あなたの歓迎、私はあなたを助けることができてうれしいです! –

1

はい、このテクノロジはアプリケーション仮想化と呼ばれ、アプリケーションを仮想化できます。 お試しくださいhttp://www.cameyo.com/ Cameyoは、仮想アプリケーションを構築するために使用されるソフトウェアです。

仮想アプリケーションは、ファイル、DLL、レジストリなどのアプリケーション全体を保持する単一のEXEファイルです。仮想アプリケーションはシステムから隔離されており、インストールすることなく1台のコンピュータから別のコンピュータに移動して&をコピーすることができます。

3

この特定のアプリケーションでは、Joshuaのソリューションが動作しますが、他のアプリケーションでは機能しない可能性があります(レジストリパスがコードで構成されている場合やアプリケーションが署名されている場合など)。

したがって、私はDLL injectionを使用することをお勧めし、切片はRegOpenKey(Ex)RegCreateKey(Ex)などへの呼び出しこうすれば、実際のWindows Advapi32.dllにコールを渡す前に、レジストリパスを操作することができます。

APIフッキングに関するいくつかの素晴らしい記事:

API Hooking and DLL Injection on Windows

API Hooking with MS Detours

1

はい、Sandboxieアプリの複数のインスタンスを実行することができ、それが全体であると信じるそれ自身の「サンドボックス」内の各宇宙。しかし、必要に応じて通常の方法で直接データにアクセスすることもできます。

つまり、Sandboxieでは、アプリケーションの操作で加えられたすべてのレジストリの変更を表示できます。また、必要に応じてロールバックすることもできます。

関連する問題