6

したがって、通常、IDAを使用してデバッグする場合、問題は発生しません。ただし、この1つの特定のプロセス(モジュールの前のサイズは9.9 MB)では、IDAは、プロセスを開始するたびにリベースすることを要求します。これにより、IDAがフリーズし、実際に開始する前に20〜30分待つ必要があります。

なぜこれを行うのですか、そしてどういうわけかこれを無効にすることができますか?私はこのような高度なデバッグに慣れていないので、リベースは私には少ししか意味がありません。

4

2 に答える 2

10

私のように他の誰かがこのページを見つけた場合、DLLの優先エントリポイントがすでに使用されている場合にも発生する可能性があり、続行する前にリベースする必要があります。

これを修正するには、Windows SDK(またはVisual Studio)に付属のReBase.exeツールを使用できます。

ReBase.Exe -b 7600000 myBadBasedDll.dll これにより、dllのベースが0x7600000にリセットされます。次に、IDBを同期させるために、最後にIDAでリベースを実行する必要があります(またはリベース後に新しいIDBを作成します)。

Edit->Segments->Rebase Program...

Fix up Program新しいメニューで、とのチェックボックスをオンにRebase the whole imageします。これで問題ありません。

于 2012-09-05T18:07:34.020 に答える
2

この質問には、2013年5月31日にWillDonohoeが回答しました。アクセス時のウェブサイトはhttps://will.io/blog/2013/05/31/disable-aslr/です。

サイトで説明されているように、問題はアドレス空間配置のランダム化(ASLR)の結果として(少なくとも私の場合は)発生しました。ASLRは、 PEオプションヘッダーのDllCharacteristicsフィールドに値が。のマスクが含まれている場合に有効になります。IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE0x0040

私の場合、DllCharacteristicsフィールドは0x8160非常に明確で、0x0040マスクが存在していました。

再発するリベースの問題は、0x0040マスクを削除することで修正されました。DllCharacteristicsフィールドをに設定する0x81200x8100、私のためにトリックを行いました。

注意: DllCharacteristicsフィールドは、 16進エディターを使用する場合、 PE署名オフセットの先頭から0x5Eのオフセットに配置できます。

于 2016-10-31T17:04:00.187 に答える