2016-11-09 5 views
1

私は単純なpythonスクリプト(メッセージボックス)を書き、pyInstallerを使用して実行可能にしました。私はPowershellスクリプトInvoke-ReflectivePEInjection.ps1を使用してそのexeファイルを反射的に読み込みたいのですが、powershellがエラーを投げています(PEファイルはASLRをサポートしていません)exeファイルのASLRを有効にする方法

ASLR互換のEXEファイルをpythonスクリプトから作成する方法はありますか?

答えて

1

editbinというツールがあり、PEファイルの設定を変更することができます。あなたのケースでは、/DYNAMICBASE/HIGHENTROPYVAが適用されるようです。実行可能ファイルを作成したら、そのツールを使用します。

+0

返信してくれてありがとう。.. 私はEDITBINを使用し、/ NXCOMPATフラグこれらの両方を設定しているが、PowerShellはまだ [リンク](https://imgur.com/a/QFRLk) – john

+0

@ジョンをクラッシュさ:あなたは確信していますそれは64ビット/ 32ビットの問題ではない? –

+0

私は32ビットのWindows 8.1を使用しています。 linuxファイルユーティリティを使用してダブルチェックします。 "msgbox.exe:PE32実行可能ファイル(コンソール)Intel 80386(外部PDBに取り除かれた)、MS Windows用" – john

0

を参照してくださいHow do I determine if an EXE (or DLL) participate in ASLR, i.e. is relocatable?

ASLRは、あなたのベースアドレスは、したがって、すべての絶対的なメモリ参照が壊れてしまい、ランダム化されることを意味します。つまり、コンパイラとリンカは、ベースアドレスが0x04000000で、0x0400102Fへの絶対メモリ参照があると仮定していますが、実際にモジュールが0x05000000にロードされた場合、0x01000000は0x0400102Fを参照するマシンコードでハードコードされた絶対アドレス今は0x0400102Fを参照しています。これらのコード修正はベース再配置と呼ばれ、実行可能ファイルがロードされているときにWindowsローダーによって実行されます。これらのフィックスアップを実行する必要がある場所は、再配置可能な場合にのみ実行可能ファイルにインクルードされます。

ファイルヘッダーの特性フィールドに設定されたIMAGE_FILE_RELOCS_STRIPPED(0x0001)ビットフラグが設定されている場合、この実行可能ファイルは再配置されないため、ヘッダー内のベースアドレス以外には配置できません。したがって、ASLRをこの実行可能ファイルは、メモリ参照が正しくないために中断します。また、位置独立コードを記述することもできます。位置独立コードは、ロード時間の再配置を必要とせずにメモリに配置されている場所であれば正しく実行されます。

関連する問題