簡體   English   中英

(GDB)斷點和反匯編

[英](GDB) Breakpoints and Disassemble

最近,我對閱讀有關黑客的書籍和文章很感興趣,我發現黑客:剝削的藝術只是必讀的標題。 我正在遵循有關如何使用標准Linux工具以及如何分析代碼的基本教程(編程一章)。 我不是編程的初學者,但是使用Linux終端對我來說還是很新的。 我正在使用最新版本的Kali Linux。

現在,應該使用我下面的簡單程序來分析堆棧段的工作方式。

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)都不會。根據這本書,未決的斷點應該可以解決。 我的只是被忽略,程序完成。

root@root:~/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)  

對於文本中的任何語法錯誤,我深表歉意。 :)

問題是您在另一個函數中定義了stack_func 這稱為嵌套函數 ,它是GNU C中的gcc擴展。此函數的符號名稱比您期望的稍多。 要找到確切的符號名稱,可以使用nm工具:

[ tmp]$ nm a.out |grep stack_func
00000000004004a6 t stack_func.1761

並設置斷點並在gdb中反匯編:

[ tmp]$ gdb -q ./a.out 
Reading symbols from ./a.out...done.
(gdb) b 'stack_func.1761'
Breakpoint 1 at 0x4004ba: file 111.c, line 6.
(gdb) disassemble 'stack_func.1761'
Dump of assembler code for function stack_func:
   0x00000000004004a6 <+0>: push   %rbp
   0x00000000004004a7 <+1>: mov    %rsp,%rbp
   0x00000000004004aa <+4>: mov    %edi,-0x14(%rbp)
   0x00000000004004ad <+7>: mov    %esi,-0x18(%rbp)
   0x00000000004004b0 <+10>:    mov    %edx,-0x1c(%rbp)
   0x00000000004004b3 <+13>:    mov    %ecx,-0x20(%rbp)
   0x00000000004004b6 <+16>:    mov    %r10,-0x28(%rbp)
   0x00000000004004ba <+20>:    movb   $0x63,-0x1(%rbp)
   0x00000000004004be <+24>:    movl   $0xdc,-0x8(%rbp)
   0x00000000004004c5 <+31>:    nop
   0x00000000004004c6 <+32>:    pop    %rbp
   0x00000000004004c7 <+33>:    retq   
End of assembler dump.
(gdb) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM