gdb 调试 PIE程序

方法1

可以安装gdb的pwndbg插件
使用

b *$rebase(0x相对基址偏移)

方法二

可以先找到pie

$ ps -aux|grep task_shoppingCart
hu         6158  0.0  0.0   4356   632 pts/18   S+   07:50   0:00 ./task_shoppingCart
hu         6162  0.0  0.0  21292  1088 pts/20   S+   07:51   0:00 grep --color=auto task_shoppingCart

可以通过pie找到其基址

/proc/6158/map_files$ ls
557d7b317000-557d7b319000  7f0d1da3c000-7f0d1dc3c000  7f0d1de6b000-7f0d1de6c000
557d7b518000-557d7b519000  7f0d1dc3c000-7f0d1dc40000  7f0d1de6c000-7f0d1de6d000
557d7b519000-557d7b51a000  7f0d1dc40000-7f0d1dc42000
7f0d1d87c000-7f0d1da3c000  7f0d1dc46000-7f0d1dc6c000

基址为0x557d7b317000
真实地址=0x557d7b317000+偏移(ida中地址后三位)
可以在python中进行gdb.attach

def DEBUG(bps=[],pie =False):
    cmd ='set follow-fork-mode parent\n'
    #cmd=''
    if pie:
        base =int(os.popen("pmap {}|awk '{{print $1}}'".format(p.pid)).readlines()[1],16)
        #base =int(os.popen("pmap -x {0} ".format(p.pid)).readlines()[2][:16],16)
        cmd +=''.join(['b *{:#x}\n'.format(b+base) for b in bps])
    else:
        cmd+=''.join(['b *$rebase({:#x})\n'.format(b) for b in bps])

    # if bps !=[]:
    #     cmd +='c'
    pwnlib.gdb.attach(p,cmd)

方法三

ida远程调试

~/Documents/idaserver$ sudo ./linux_server64 
IDA Linux 64-bit remote debug server(ST) v1.22. Hex-Rays (c) 2004-2017
Listening on 0.0.0.0:23946...

在这里插入图片描述

http://www.bubuko.com/infodetail-2709846.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值