私は最近、ハッキングに関する書籍や記事を読むことに興味がありました。その結果、ハッキング:搾取の技術はタイトルを読む必要があります。私は、標準的なLinuxツールを使って作業し、コードを分析する方法(プログラミングの章)に関する基本的なチュートリアルに従っています。私はプログラミングの初心者ではありませんが、Linux端末で作業することは私のためには非常に新しいものです。私はKali Linuxの最新リリースを使用しています。(GDB)ブレークポイントと逆アセンブル
今、私の単純なプログラムは、スタックセグメントの仕組みを分析するために使用する必要があります。
int main(){
void stack_func(int a,int b, int c, int d){
char first;
int second;
first = 'c';
second = 220;
}
stack_func(1,2,3,4);
return 0;
}
最初の問題は、私は内部機能のために任意のブレークポイントを追加することはできませんです。 のstack_func()のような関数も、strcpyなどのライブラリの関数もありません。この本によれば、保留中のブレークポイントは解決するはずです。私のことは無視され、プログラムは終了します。
[email protected]:~/Folder# gdb -q ./stack
Reading symbols from ./stack...done.
(gdb) b stack_func
Function "stack_func" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (stack_func) pending.
(gdb) run
Starting program: /root/Folder/stack
[Inferior 1 (process 20421) exited normally]
(gdb)
第二の問題は、を逆アセンブルはまた私の機能のために動作しないことです。繰り返しになりますが、この本によれば、私の関数のアセンブラコードを見ることができるはずですstack_func()しかし結果は以下の通りです。
(gdb) disass stack_func()
No symbol "stack_func" in current context.
(gdb)
テキストの文法上の誤りについてはお答えします。 :)
あなたの無副作用機能はおそらく、コンパイラによって除去されるのか、少なくともインラインで –
'main'の外で' stack_func'を動かしてみましたか? –
ええ、私は今このようなエラーメッセージを試しました。 「デバッグするプロセスがなければ、それを行うことはできません。」 – Jacobe