隨筆 - 1, 文章 - 2, 評論 - 0, 引用 - 0
          數據加載中……

          gdb調試nasm語法的匯編程序

          源代碼
           1 section .data          
           2         msg db 'Hello, world!'0xA    
           3         len equ $ - msg                 
           4 section .text            
           5 global main            
           6 main:                  
           7         mov edx, len     
           8         mov ecx, msg    
           9         mov ebx, 1       
          10         mov eax, 4      
          11         int 0x80         
          12         mov ebx, 0      
          13         mov eax, 1       
          14         int 0x80  
          開始調試javen@javen-laptop:~/study$ nasm -f elf hello.asm --F stabs
          javen@javen-laptop:~/study$ gcc -o hello hello.o -g
          javen@javen
          -laptop:~/study$ gdb hello
          GNU gdb 
          6.8-debian
          Copyright (C) 
          2008 Free Software Foundation, Inc.
          License GPLv3
          +: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
          This is free software: you are free to change and redistribute it.
          There is NO WARRANTY, to the extent permitted by law.  Type 
          "show copying"
          and 
          "show warranty" for details.
          This GDB was configured as 
          "i486-linux-gnu"
          (gdb) 
          開始運行
          (gdb) start
          Breakpoint 
          1 at 0x80483a0: file hello.asm, line 7.
          Starting program: 
          /home/javen/study/hello 
          main () at hello.asm:
          7
          7            mov edx, len     
          (gdb)
          查看反匯編,結果是AT&T語法。
          (gdb) disassemble
          Dump of assembler code 
          for function main:
          0x080483a0 <main+0>:    mov    $0xe,%edx
          0x080483a5 <main+5>:    mov    $0x804a010,%ecx
          0x080483aa <main+10>:    mov    $0x1,%ebx
          0x080483af <main+15>:    mov    $0x4,%eax
          0x080483b4 <main+20>:    int    $0x80
          0x080483b6 <main+22>:    mov    $0x0,%ebx
          0x080483bb <main+27>:    mov    $0x1,%eax
          0x080483c0 <main+32>:    int    $0x80
          0x080483c2 <main+34>:    nop    
          0x080483c3 <main+35>:    nop    
          0x080483c4 <main+36>:    nop    
          0x080483c5 <main+37>:    nop    
          0x080483c6 <main+38>:    nop    
          0x080483c7 <main+39>:    nop    
          0x080483c8 <main+40>:    nop    
          0x080483c9 <main+41>:    nop    
          0x080483ca <main+42>:    nop    
          0x080483cb <main+43>:    nop    
          0x080483cc <main+44>:    nop    
          0x080483cd <main+45>:    nop    
          0x080483ce <main+46>:    nop    
          0x080483cf <main+47>:    nop
          運行下一步,并查看寄存器,eip改變
          (gdb) n
          8            mov ecx, msg    
          (gdb) info register
          eax            
          0xbfcd9864    -1077045148
          ecx            
          0xe2d47497    -489393001
          edx            
          0xe    14
          ebx            
          0xb80c3ff4    -1207156748
          esp            
          0xbfcd97dc    0xbfcd97dc
          ebp            
          0xbfcd9838    0xbfcd9838
          esi            
          0x80483e0    134513632
          edi            
          0x80482e0    134513376
          eip            0x80483a5    0x80483a5 <main+5>
          eflags         
          0x246    [ PF ZF IF ]
          cs             
          0x73    115
          ss             
          0x7b    123
          ds             
          0x7b    123
          es             
          0x7b    123
          fs             
          0x0    0
          gs             
          0x33    51
          (gdb) n
          9            mov ebx, 1       
          (gdb) info register
          eax            
          0xbfcd9864    -1077045148
          ecx            
          0x804a010    134520848
          edx            
          0xe    14
          ebx            
          0xb80c3ff4    -1207156748
          esp            
          0xbfcd97dc    0xbfcd97dc
          ebp            
          0xbfcd9838    0xbfcd9838
          esi            
          0x80483e0    134513632
          edi            
          0x80482e0    134513376
          eip            
          0x80483aa    0x80483aa <main+10>
          eflags         
          0x246    [ PF ZF IF ]
          cs             
          0x73    115
          ss             
          0x7b    123
          ds             
          0x7b    123
          es             
          0x7b    123
          fs             
          0x0    0
          gs             
          0x33    51
          (gdb)
          查看內存
          (gdb) x  0x80483aa
          0x80483aa <main+10>:    0x000001bb
          (gdb) x  
          0x80483a5
          0x80483a5 <main+5>:    0x04a010b9
          (gdb) 

          詳細的gdb使用網上搜索。


          posted on 2009-10-15 14:50 賈小二 閱讀(1373) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 屯门区| 陆川县| 舟山市| 新昌县| 仙居县| 松桃| 凉山| 岚皋县| 禹州市| 西华县| 喀什市| 库尔勒市| 塔河县| 齐河县| 岑溪市| 新野县| 湛江市| 夏邑县| 东海县| 苏尼特左旗| 韶山市| 平阴县| 霸州市| 洛浦县| 建宁县| 海兴县| 沁阳市| 满城县| 临沭县| 乌什县| 锦州市| 柳河县| 龙山县| 镇沅| 分宜县| 汝城县| 松桃| 台州市| 盐城市| 进贤县| 常山县|