linux环境根据pid查看堆栈大小,linux - 通过PID获取过程的机器代码,而无需附加调试器 - 堆栈内存溢出...

您可以看看gcore:

$ gcore

usage: gcore [-o filename] pid

因此您可以使用其pid转储进程核心:

$ 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

[...]

[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

甚至使用/ proc中的二进制图像来获取一些符号:

gdb -c core.792 /proc/792/exe

您可能知道可以将脚本传递给gdb,这样可以不必与二进制文件进行交互(有关更多详细信息,请参见man gdb)。

如果您不想直接使用gdb,可以尝试直接使用ptrace() ,但这肯定会做更多的工作。

对于反调试技术,嗯...据我所知,没有一种简单的方法可以直接处理它们,每个人都可以手动解决(修补二进制文件,通过设置然后在objdump中手动从未对齐的地址反汇编)等)。

我不是该领域的专家,希望对您有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值