あなたはgcoreをする顔をしていることがあります。
$ gcore 792
warning: Could not load vsyscall page because no executable was specified
0x00007f5f73998410 in ??()
Saved corefile core.792
、その後、GDBで開き:
$ gdb -c core.792
GNU gdb (GDB) Fedora 8.0.1-30.fc26
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
[...]
[New LWP 792]
Missing separate debuginfo for the main executable file
Try: dnf --enablerepo='*debug*' install /usr/lib/debug/.build-id/09/b9d38bb6291b6282de4a2692e45448828d50da
Core was generated by `./a.out'.
#0 0x00007f5f73998410 in ??()
(gdb) info registers
rax 0xfffffffffffffe00 -512
rbx 0x0 0
rcx 0x7f5f73998410 140047938061328
rdx 0x1 1
rsi 0x7ffd30683d73 140725415591283
rdi 0x3 3
rbp 0x7ffd30683d90 0x7ffd30683d90
rsp 0x7ffd30683d68 0x7ffd30683d68
r8 0x1d 29
r9 0x0 0
r10 0x3 3
r11 0x246 582
r12 0x4006d0 4196048
r13 0x7ffd30683e70 140725415591536
r14 0x0 0
r15 0x0 0
rip 0x7f5f73998410 0x7f5f73998410
eflags 0x246 [ PF ZF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
$ gcore
usage: gcore [-o filename] pid
はそうあなたがそのPIDを使用してプロセスのコアをダンプすることができます/ procのバイナリイメージを使っていくつかのシンボルを取得することさえできます:
gdb -c core.792 /proc/792/exe
gdbにスクリプトを渡すことができます。これは、バイナリ(gdbのmandbの詳細)とやりとりする必要がないためです。
gdbを直接使用したくない場合は、直接ptrace()
を試してみてください。しかし、もっと多くの作業が確実です。
アンチ・デバッギング・テクニクスでは、うまくいきます。私が知る限り、それらを直接処理する簡単な方法はありません。それぞれが手作業で作業することができます(バイナリのパッチを当て、 objdumpなどで設定)
私はドメインのエキスパートではありません。これは少し助けてくれることを願っています。
ありがとうございました。 –