問題タブ [disassembly]
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.
memory-management - 関数が毎回同じメモリアドレスから実行されるのはなぜですか?
実行可能ファイルを逆アセンブルしています:
メモリ アドレスが同じであるたびに: 0x004012d0
.
メモリアドレスはOSによって動的に割り当てられるのではないですか?
アップデート
これは仮想空間であり、一部のプラットフォームではランダム化できることがわかりました。
誰かが変更するgdbダンプを投稿できますか?
c - *アドレス(printfにあります)はアセンブリで何を意味しますか?
逆アセンブルprintf
は多くの情報を提供しません:
内部でどのように実装されていますか?
なぜ分解しても役に立たないのですか?
*
以前はどういう意味ですか0x405130
?
assembly - アセンブラの Printf が印刷されない
バッファオーバーフローを使用してプログラムをハックする宿題があります(逆アセンブルで、プログラムはC ++で書かれており、ソースコードを取得していません)。私はすでにそれを管理していますが、問題があります。画面にメッセージを出力する必要があるので、printf 関数のアドレスを見つけて、"HACKED" のアドレスと "%s" のアドレスの順でスタックにプッシュし、その関数を呼び出しました。呼び出されたコードは問題なく通過しましたが、何も出力されていませんでした。
プログラムの他の場所と同じように環境をシミュレートしようとしましたが、何か問題があるはずです。出力がないということで、私が何を間違っているのか分かりますか?どうもありがとう
編集:
このプログラムは、Windows XP SP3 32b で実行され、C++、Intel asm で記述されています。
「ハック」コードがあります
プログラムの冒頭:
私はアセンブラが初めてで、バッファオーバーフローのバグのためにヌルバイトがあってはならないので、このコードは本当に醜いです
c# - C# でコンパイルされた exe の埋め込み文字列を変更する
たとえば、exe が送信される前にキーを変更する必要があるコピーを作成して配布するコンパイル済みの exe (.net 3.5 c#) を使用できるようにする必要があるという問題があります。
新しいexeが必要になるたびにコンパイルできません。これは、登録プロセスの一部として使用されるシン クライアントです。
空白の値でリソース ファイルにエントリを追加することはできますか? 要求が届いたときに、別のアプリケーションが空白のデフォルトのシン クライアントを取得してコピーし、空白の値に必要なデータを入力することはできますか?
はいの場合、どのように?いいえの場合、何かアイデアはありますか?私はここ数日間頭を悩ませていますが、仕事をしなければならない境界による制限があります.
私が持っているもう1つのアイデアは、値をメソッドに注入することでしたが、それをどのように試みるかさえわかりません。
ありがとう。
c - gcc/最適化フラグの永続性の変更gcc/C
ちょっと興味があるんだけど。Ubuntu9.10でgcc/gdbを使用する。
オブジェクトファイルの逆アセンブルも頻繁に行うCブックを読む。1月に読んだとき、私の分解は本の分解によく似ています。今では、それはまったく異なります-おそらくより最適化されています(少なくとも私がチェックしたファイルでは、最適化されているように見えるので、アセンブリコードのいくつかの再配置に気づきました)。最初の読み取りと2番目の読み取りの間にgccに最適化オプション-O1---O3を使用しましたが、最初の読み取りの前には使用していません。
(1)最適化オプションの使用は永続的ですか、つまり、一度使用すると、スイッチを切るまで使用しますか?それは奇妙なことです(眉をひそめた男ファイルで、少なくともそのようなものは何も見られませんでした)。万が一それが真実である場合、どのようにそれらをオフにしますか?
(2)gccのアセンブリは、最近のアップグレードによって変更されましたか?
(3)同じコンパイルオプションが選択されていても、gccは(大幅に)異なるアセンブリコードを生成することがありますか?
どうもありがとう。
gdb - GDB の質問 - 逆アセンブルされたコードを 1 行ずつ調べるにはどうすればよいですか?
スタック上のアドレスとさまざまなレジスタの内容をチェックするために、先生から渡されたバイナリ ファイルを 1 行ずつ調べたいのですが、gdb の使用にあまり慣れていません。私は C コードを持っていますが、バイナリ ファイルから完全に作業することになっています。これまでに使用したコマンドは次のとおりです。
次のメッセージが表示されます。
それから私は使用します:
これにより、すべてのアセンブリが得られます。ブレークポイントを設定して「次へ」コマンドを使用したかったのですが、試したコマンドはどれも機能しませんでした。私が使用する構文を知っている人はいますか?
gdb - アドレス値に関する GDB disas の質問
gdb で破棄したバイナリ ファイルを使用しています。現在、関数の戻り値を調べています。
表示されているアドレスは関数内でretが格納されているアドレスですか?それとも、ret 値を返す命令のアドレスだけですか?
c - Microsoft Visual Studio 2003 コンパイラ出力の逆アセンブル
Microsoft Visual Studio 2003 ツールによって出力されたオブジェクト ファイルから奇妙な動作と思われるものを見ています。file
ユーティリティは私に教えてくれます:
アセンブラーによって作成されたオブジェクトの場合、ただし C ファイルからのオブジェクトの場合は、次のようになります。
Microsoft のdumpbin
ユーティリティとobjdump
cygwin から取得した を使用して、アセンブリでビルドされたファイルを逆アセンブルできますが、C でビルドされたファイルについては、どちらのユーティリティからも有用な結果が得られません。
この違いに関連していくつか質問があります。
- MSVC2003 コンパイラによって生成されるオブジェクト ファイルの形式は何ですか?
- そのオブジェクト ファイルを逆アセンブルするにはどうすればよいですか?
AT&T 構文で逆アセンブリを取得することに特に関心があります。GCC で動作するように大規模なソース ベースの移植を行っています。事業。
編集:さらに情報を追加します。
これらのファイルのいずれかで実行するdumpbin
と、結果が得られません。
を使用objdump
すると、次のようになります。
アセンブリからビルドされたファイルでは、妥当な結果が得られます。
再編集: コマンド ライン情報を追加します。
アセンブリ ファイルは、次のようなコマンド ラインでビルドされます。
ml
単独で実行すると、次のように表示されます。
C ファイルは、次のコマンドでビルドされます。
と に渡される-I
とオプションがいくつかありますが、ここでは簡潔にするためにそれらを省略しました。オプションについては、こちらで説明しています。 -D
ml
cl
cl
xcode - Xcodeの逆アセンブラ?
プロジェクトに取り組んでいますが、Xcodeのないマシンでクラッシュします。(もちろん、私のマシンBで動作します-/)クラッシュログがあり、クラッシュのPCオフセットがあります。それが実際にコードのどこにあるかを確認できるようにしたいと思います。Code Warriorがコード(おそらくデバッグ可能なコードのみ)を分解し、Cコードが散在していることを示すことができることを知っています。その後、そのアドレスを探すだけで完了です。
Xcodeでこれを行う簡単な方法はありますか?
ありがとう。
windows - Windows 逆アセンブラー: ツールを探しています
(非 .NET) Windows PE ファイル (*.exe または *.dll) から「適切な」逆アセンブリ リストを生成できる (できれば無料の) ツールを探しています。
重要な要件: Windows アセンブラー (nasm、masm など) を介してリストを実行し、再び実行可能な exe を取得できる必要があります (必ずしも元のものと同じである必要はありませんが、同じように動作する必要があります)。
ソースが利用できない場合に、新しいサブルーチンを既存のコードに追加することを目的としています。
理想的には、ツールは関数/セグメントの境界、API 呼び出しを検出し、ジャンプの適切なラベルを生成できる必要があります (ただし、ループ/ジャンプのラベルがなくても生活できますが、関数の境界検出は便利です)、プログラム リソース/セグメントを保持します。所定の位置に。
IdaPRO(無料ではない)、OllyDBG(インプレースハッキングに便利、逆アセンブリリストを生成しない、AFAIK)、ndisasm(出力はアセンブラーには適していません)、dumpbin(便利ですが、AFAIK、出力アセンブラーには適していません) および「プロキシ dll」手法。
アイデア?あるいは、ある種の代替アプローチを説明する本/チュートリアルがありますか?