x86 Assembly

Debugging x86 in GDB Part 7
Let's continue to step through our program execution by entering si:
|-Register group: general------------------------------------------------------------------------------------------------------------------------------------------------|
|eax            0x4                 4                                                ecx            0x804a000           134520832                                        |
|edx            0xd                 13                                               ebx            0x1                 1                                                |
|esp            0xffffd950          0xffffd950                                       ebp            0x0                 0x0                                              |
|esi            0x0                 0                                                edi            0x0                 0                                                |
|eip            0x8049015           0x8049015 <_start+21>                            eflags         0x202               [ IF ]                                           |
|cs             0x23                35                                               ss             0x2b                43                                               |
|ds             0x2b                43                                               es             0x2b                43                                               |
|fs             0x0                 0                                                gs             0x0                 0                                                |
|k0             0x0                 0                                                k1             0x0                 0                                                |
|k2             0x0                 0                                                k3             0x0                 0                                                |
|k4             0x0                 0                                                k5             0x0                 0                                                |
|k6             0x0                 0                                                k7             0x0                 0                                                |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|B+  0x8049000 <_start>                      mov    eax,0x4                                                                                                              |
|    0x8049005 <_start+5>                    mov    ebx,0x1                                                                                                              |
|    0x804900a <_start+10>                   lea    ecx,ds:0x804a000                                                                                                     |
|    0x8049010 <_start+16>                   mov    edx,0xd                                                                                                              |
|  > 0x8049015 <_start+21>                   int    0x80                                                                                                                 |
|    0x8049017 <print_hex_message>           mov    eax,0x4                                                                                                              |
|    0x804901c <print_hex_message+5>         mov    ebx,0x1                                                                                                              |
|    0x8049021 <print_hex_message+10>        lea    ecx,ds:0x804a00d                                                                                                     |
|    0x8049027 <print_hex_message+16>        mov    edx,0xd                                                                                                              |
|    0x804902c <print_hex_message+21>        int    0x80                                                                                                                 |
|    0x804902e <exit_program>                mov    eax,0x1                                                                                                              |
|    0x8049033 <exit_program+5>              mov    ebx,0x0                                                                                                              |
|    0x8049038 <exit_program+10>             int    0x80                                                                                                                 |
|    0x804903a                               add    BYTE PTR [eax],al                                                                                                    |
|    0x804903c                               add    BYTE PTR [eax],al                                                                                                    |
|    0x804903e                               add    BYTE PTR [eax],al                                                                                                    |
|    0x8049040                               add    BYTE PTR [eax],al                                                                                                    |
|    0x8049042                               add    BYTE PTR [eax],al                                                                                                    |
|    0x8049044                               add    BYTE PTR [eax],al                                                                                                    |
|    0x8049046                               add    BYTE PTR [eax],al                                                                                                    |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
native process 84922 In: _start                                                                                                                       L??   PC: 0x8049015
				0xf7ffc430 - 0xf7ffc53c is .eh_frame in system-supplied DSO at 0xf7ffc000
				0xf7ffc540 - 0xf7ffd262 is .text in system-supplied DSO at 0xf7ffc000
--Type <RET> for more, q to quit, c to continue without paging--        0xf7ffd262 - 0xf7ffd2c2 is .altinstructions in system-supplied DSO at 0xf7ffc000
				0xf7ffd2c2 - 0xf7ffd2e2 is .altinstr_replacement in system-supplied DSO at 0xf7ffc000
(gdb) x /26b 0x0804a000
0x804a000:      72 'H'  101 'e' 108 'l' 108 'l' 111 'o' 32 ' '  87 'W'  111 'o'
0x804a008:      114 'r' 108 'l' 100 'd' 33 '!'  10 '\n' 72 'H'  101 'e' 108 'l'
0x804a010:      108 'l' 111 'o' 32 ' '  87 'W'  111 'o' 114 'r' 108 'l' 100 'd'
0x804a018:      33 '!'  10 '\n'
(gdb) x /26xb 0x0804a000
0x804a000:      0x48    0x65    0x6c    0x6c    0x6f    0x20    0x57    0x6f
0x804a008:      0x72    0x6c    0x64    0x21    0x0a    0x48    0x65    0x6c
0x804a010:      0x6c    0x6f    0x20    0x57    0x6f    0x72    0x6c    0x64
0x804a018:      0x21    0x0a
(gdb)   x /26cb 0x0804a000
0x804a000:      72 'H'  101 'e' 108 'l' 108 'l' 111 'o' 32 ' '  87 'W'  111 'o'
0x804a008:      114 'r' 108 'l' 100 'd' 33 '!'  10 '\n' 72 'H'  101 'e' 108 'l'
0x804a010:      108 'l' 111 'o' 32 ' '  87 'W'  111 'o' 114 'r' 108 'l' 100 'd'
0x804a018:      33 '!'  10 '\n'
(gdb) si
0x08049015 in _start ()
(gdb)

The edx register has been set to 0xd now, which reflects the length of our message, whose address is stored in ecx.