問題タブ [ollydbg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reverse-engineering - ベースアドレスが同じではありません
IDA pro と OllyDbg で実行可能ファイルをロードすると、同じ命令のアドレスが別の場所で開始されます。これは、ベース アドレスが異なることが原因である可能性があります。実行可能ファイルが同じベース アドレスを使用することを望みます。どうすればこれを行うことができますか?
visual-c++ - msvcp60.dll が idapro および ollydbg にインポートした関数名
現在、msvcp60.dll からいくつかの関数をインポートする実行可能ファイルを逆にしています。IDA Pro で実行可能ファイルを開くと、関数名が非常に長く、何をしているのかについてのヒントがありません。これらの機能をすべて逆にするのは、今のところ時間の無駄です。
これらの関数の意味のある名前を取得する方法、または少なくとも IDA に表示されたリストを解釈する方法はありますか? 関数の例を次に示します (コードのアドレス 0040377C での呼び出し)。
assembly - 絶対JMP/CALLを相対JMP/CALLツール/プラグインにアセンブリしますか?
リバースエンジニアリングしようとしているこのプログラムがあります。それがコンパイラのオプティマイザなのか難読化なのかはわかりませんが、他の関数を呼び出すコードの一部は、数学によって計算され、次のように呼び出されます。
別のプログラムにDLLとしてロードされるまでは正しく動作します。ベースアドレスオフセットが変更されたため、すべての相対コードが正しく機能するようになりましたが、数学で計算されたすべての呼び出し/jmpが適切な領域に移動しません。
したがって、すべての絶対呼び出しを相対呼び出しにすることで、これを簡単に修正できると考えました。
コードをステップ実行し、すべての計算を計算させている間、正しいjmp/callオフセットを取得します。
パッチを割り当てるのに十分なスペースがないなどの問題はありません。絶対呼び出しは通常、前に私が物事を修正するためにも使用できる回線を使用しているので
絶対的な呼び出し、これは数学が終わるところです:
のように変換されます
もちろん、eaxはすでに何かだったので、上記は機能しませんが、これは単なる擬似コードの例です。
私の質問はこれを行う方法ではありませんが、OllyDbgまたはIDA Proでこれを自動的に行うプラグインはありますか?
reverse-engineering - OllyDbgのキャッチ/スローの例外
OllyDbg 1.10(Windows 7 32ビット)で何かをデバッグしようとするたびに、理由もなく例外がスローされ続けます。でスキップするとShift + F7/F8/F9
、最後に。という例外がスローされますEIP = 00000000
。
誰かがそれを修正する方法を教えてもらえますか?
visual-studio-2010 - インライン アセンブリを使用して IsDebuggerPresent を呼び出す
私は Windows 7 マシンを使用しており、IDA で kernel32.dll を開こうとしましたが、IDA は IsDebuggerPresent 関数のアドレスが 0x77e2b020 であることを示しています。インライン アセンブリを使用して関数を呼び出そうとしています。
vs2010 プラットフォームで、次のコードを使用してみました:-
exe をビルドすると、kernel32.dll がロードされていることが示されます。
OllyDbg で exe をデバッグしようとしましたが、「call」命令を実行するとエラーが「アクセス違反」になります。
はい、C++ から API を直接呼び出すことが最善/正しい方法であることはわかっています。これは楽しみのためにやっているのですが、なぜこれが機能しないのかわかりません。
windows - メモリアドレスをパラメータとしてリモート関数を実行
実行中の (古い) Win32 Borland アプリケーションで関数を実行しようとしています (ウィンドウにはクラス OLW_WINDOW があります)。OllyDbg を使用することで、関数にはメモリ アドレスである 1 つのパラメーターがあることがわかりました。関数によって使用される 1 つの変数/値は、そのアドレスのオフセットに格納されます。私の考えは、そのメモリアドレス(メモリブロックの一定のオフセットにある)を見つけ、変数/値を必要なものに変更してから関数を実行することです。WriteProcessMemory と CreateRemoteThread を使用して実行するのは問題ありませんが、問題はメモリ アドレス/ブロックを見つける方法ですか? OllyDbg で「メモリ マップ」を開くと、メモリ ブロックに所有者、セクション、または内容がありません。指定したスレッドによって作成されたメモリ ブロックの一覧を取得することはできますか? または、どうにかしてアプリケーションから取得できますか? ところで:
debugging - OllyDbg での Windows シンボリックの読み込み
Windows XP SP3 と OllyDbg を使用しています。また、次のアドレスから Windows シンボルをインストールしました。
http://msdl.microsoft.com/download/symbols/packages/windowsxp/WindowsXP-KB936929-SP3-x86-symbols-full-ENU.exe
また、Ollydbgに設定C:\WINDOWS\Symbols
しました。Debug -> select path for symbols
しかし、Ollydbg のコメント欄にいくつかのコメントが表示されない問題があります。何か案が?
reverse-engineering - 私の単純な C プログラムのリバース エンジニアリング
リバースエンジニアリングの学習を始めたいと思います。だから私はシンプルに始めることにしました。この簡単なプログラムを作成しました:
そして、それを Ollydbg で逆アセンブルしました。それで、printfを「World Hello」に変更してみました。しかし、私は今何をすべきかわかりません。ガイドしてもらえますか、少なくとも理論的に何をすべきか教えてもらえますか?
assembly - アセンブリ スタック インデックス アドレス
ollydbg を使用してプログラムをデバッグしようとしていますが、SS プレフィックスを使用してモード アドレスをインデックス化することに疑いがあります。
スクリーンショットは次のとおりです。
このとき、指示は
からの 8 ビットを、1 を引いた でEBX
指定されたアドレスに移動します。EBP(0012FDCC)
0012FDCB
上記が正しくない場合は、教えてください。
ollydbg プログラムでは、右下にアドレスへの最初の列を持つスタックの表現があります。指して0012FDCB
いる場所へのエントリがないのはなぜですか?0012FDCB