码迷,mamicode.com
首页 > 数据库 > 详细

gdb调试开启PIE且去掉符号表的程序

时间:2018-08-01 18:12:37      阅读:668      评论:0      收藏:0      [点我收藏+]

标签:.com   follow   adl   指令   pad   需要   sig   img   进程   

在使用gdb调试程序的时候,需要根据函数名定位或者绝对的指令地址下断点,以便程序运行到该位置后暂停,
但是有的题目开启PIE地址随机化保护的同时去掉了符号表,使得对程序定位较为困难.
以下为解决方法:
1.在/proc 目录中,每个进程都会在此目录下新建一个以进程id为名的文件夹,其中存储着进程的动态链接和地址的信息。
在每个进程的map_file文件夹中,存储着各个地址段的动态链接文件
技术分享图片
其中第一个文件即为elf基址,可据之与ida中获得的指令地址后三位确定其具体地址,实现下断点分析。
2./usr/bin目录下pmap程序。pmap + pid命令可以将该进程的地址信息和相应地址段的权限打印出
技术分享图片
第一行即为elf代码的地址信息。
在python程序中可通过
base = int(os.popen(“pmap {}| awk ‘{{print $1}}’”.format(io.pid)).readlines()[1], 16)
获取该进程的elf基址,从而调用gdb并下断点进行调试。

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

generated by haroopad


作者:辣鸡小谱尼
出处:http://www.cnblogs.com/ZHijack/
如有转载,荣幸之至!请随手标明出处;

gdb调试开启PIE且去掉符号表的程序

标签:.com   follow   adl   指令   pad   需要   sig   img   进程   

原文地址:https://www.cnblogs.com/ZHijack/p/9402382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!