1

私はobjdumpから次のものを持っています。これは IA32 用に gcc でコンパイルされた C コードです。

08048e9a <my_func>:
8048e9a:    55                      push   %ebp
8048e9b:    89 e5                   mov    %esp,%ebp
8048e9d:    83 ec 48                sub    $0x48,%esp
8048ea0:    89 5d f4                mov    %ebx,-0xc(%ebp)
8048ea3:    89 75 f8                mov    %esi,-0x8(%ebp)
8048ea6:    89 7d fc                mov    %edi,-0x4(%ebp)
8048ea9:    8d 5d d0                lea    -0x30(%ebp),%ebx
8048eac:    89 5c 24 04             mov    %ebx,0x4(%esp)
8048eb0:    8b 45 08                mov    0x8(%ebp),%eax
8048eb3:    89 04 24                mov    %eax,(%esp)
8048eb6:    e8 52 04 00 00          call   804930d <read_num>
8048ebb:    8d 7d dc                lea    -0x24(%ebp),%edi
8048ebe:    be 00 00 00 00          mov    $0x0,%esi
8048ec3:    8b 03                   mov    (%ebx),%eax
8048ec5:    3b 43 0c                cmp    0xc(%ebx),%eax
8048ec8:    74 05                   je     8048ecf <my_func+0x35>
8048eca:    e8 fc 03 00 00          call   80492cb <other_func>
8048ecf:    03 33                   add    (%ebx),%esi

オンラインで比較されている値を見つけることに興味があります8048ec5gdb では、この行に移動して問題なく読み取ることができます%eaxinfo registers、どうすれば読み取れ0xc(%ebx)ますか? これは、または?0xcからのオフセットを意味します。%ebx0xc + %ebx

4

1 に答える 1

2

メモリ内のアドレスの 32 ビット値を参照し%ebx + 0xcます。

于 2013-01-25T07:50:03.310 に答える