[解決済み] 指定された実行ファイル以外のアセンブリコードをシングルステップで実行するためにgdbを使用すると、"cannot find bounds of current function "というエラーが発生する。
質問
gdbのターゲット実行ファイルの外にいて、そのターゲットに対応するスタックさえ持っていません。 私は x86 アセンブリの専門家ではないので、アセンブリ コードで何が起こっているかを検証するために、とにかくシングルステップにしたいのです。 残念ながら、gdbはこの単純なアセンブリレベルのデバッギングを拒否します。 適切なブレークポイントを設定し、停止することはできますが、シングルステップで先に進もうとするとすぐに、gdbはエラー "現在の関数の境界が見つかりません"を報告し、EIPは変わりません。
追加の詳細。
機械語コードは gcc asm ステートメントによって生成され、私は objdump -d の出力から、それが実行されているカーネル メモリの場所にそれをコピーしました。 ローダーを使って私のオブジェクト コードを再配置されたアドレスにロードする簡単な方法は気にしませんが、ロードはカーネル モジュールで行われなければならないことを心に留めておいてください。
gdb がこの領域がプログラム コード内にあると信じるようにするために、偽のカーネル モジュールまたはデバッグ情報ファイルを作成して gdb に提供することが、別の選択肢であると思います。
(本当に知りたい人のために説明すると、私は VMware VM 内の Linux カーネル データ領域に実行時にコードを挿入し、VMware Workstation の組み込み gdb スタブを介してカーネルを gdb リモート デバッグしています。 注:私はカーネル エクスプロイトを書いているわけではなく、セキュリティ大学院生としてプロトタイプを書いています)。
(私は、アセンブリ内の各命令にブレークポイントを設定することができます。 これは動作しますが、x86 アセンブリ命令のサイズはさまざまで、再起動するたびにアセンブリの場所が変わるため、しばらくするとかなり手間がかかります)。
どのように解決するのですか?
この場合
stepi
または
nexti
(に省略することができます)。
si
または
ni
) を使って、マシン・コードをステップ・スルーしてください。
関連
-
Linux ddコマンド詳細説明:データのバックアップ、およびバックアッププロセスでのフォーマット変換のケース
-
Linuxにおけるxinetdサービスの管理方法に関するケーススタディ
-
virtualboxが仮想マシンを開けない場合は?linuxがvirtualboxにアクセスできない時の解決策
-
Centos7のインストールと展開無料のconfluence wikiの(知識ベース)詳細な操作手順
-
deepin20のデフォルトブラウザを設定するには?deepinにデフォルトブラウザを追加するためのヒント
-
2020年deepin Deep OS V20のアップデートによる更新情報
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み] GDBで現在の関数からステップアウトする
-
[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?
-
[解決済み] エクスポートされた環境変数を削除する方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Kali Linuxのマウスライトテーマを変更する方法は?マウスカーソルのテーマを変更するためのヒント
-
deepin linuxでroot権限に切り替えるには?Deepinでrootに切り替えるためのヒント
-
deepin20の不正確な時刻表示を調整する方法は?Deepinの時刻補正方法
-
Linux Mintシステムでプログラムをアンインストールするには? Linux で不要なアプリケーションをアンインストールするためのヒント
-
Linux Mintでフェード効果をオンにする方法は?
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
floor'への未定義の参照/`&'への未定義の参照
-
[解決済み] gzip: stdin: gzip 形式ではありません tar: 子プロセスはステータス 1 を返しました。エラーは回復不可能: 現在終了中
-
[解決済み] IOCTL Linuxデバイスドライバ [終了しました]
-
[解決済み] すべてのディレクトリとサブディレクトリを再帰的にgrepするにはどうしたらいいですか?