1. ホーム
  2. gdb

GDB の最初のマシンコード命令で停止する

2023-09-13 11:27:28

質問

gdb に実行ファイルをロードした後、最初の命令が実行される前にエントリーポイントでブレークするにはどうしたらよいでしょうか?

私が解析している実行ファイルはマルウェアの一部で、暗号化されています。 break main は全く何もしません。

どのように解決するのですか?

GDB 8.1以降では、このための特別なコマンドがあります。 starti . GDBセッションの例です。

$ gdb /bin/true
Reading symbols from /bin/true...(no debugging symbols found)...done.
(gdb) starti
Starting program: /bin/true 

Program stopped.
0xf7fdd800 in _start () from /lib/ld-linux.so.2
(gdb) x/5i $pc
=> 0xf7fdd800 <_start>: mov    eax,esp
   0xf7fdd802 <_start+2>:       call   0xf7fe2160 <_dl_start>
   0xf7fdd807 <_dl_start_user>: mov    edi,eax
   0xf7fdd809 <_dl_start_user+2>:       call   0xf7fdd7f0
   0xf7fdd80e <_dl_start_user+7>:       add    ebx,0x1f7e6