加载中…
个人资料
elecs
elecs
  • 博客等级:
  • 博客积分:0
  • 博客访问:52,826
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

修正pwndbg

(2018-11-21 14:55:19)
标签:

pwndbg

heap

分类: 信息安全

最近由于某些原因,更新了一下pwndbg,结果发现原本好好的heap被改了 

首先是heap命令打印chunk的时候,prevsizesize是十进制打印的,实际比赛中你还得把他转换成hex才有意义…

不过这不是pwndbg的错,因为gdb print malloc_chunk的时候就是这样打印的

通过修改pwndbg/commands/heap.pymalloc_chunk实现.

@pwndbg.commands.ParsedCommand

@pwndbg.commands.OnlyWhenRunning

def malloc_chunk(addr):

    """

    Prints out the malloc_chunk at the specified address.

    """

    main_heap = pwndbg.heap.current

 

    if not isinstance(addr, six.integer_types):

        addr = int(addr)

 

    chunk = read_chunk(addr)

    size = int(chunk['size'])

    actual_size = size & ~7

    prev_inuse, is_mmapped, non_main_arena = main_heap.chunk_flags(size)

    arena = None

    if non_main_arena:

        arena = main_heap.get_heap(addr)['ar_ptr']

       

    fastbins = main_heap.fastbins(arena)

    header = M.get(addr)

    if prev_inuse:

        if actual_size in fastbins:

            header += message.hint(' FASTBIN')

        else:

            header += message.hint(' PREV_INUSE')

    if is_mmapped:

        header += message.hint(' IS_MMAPED')

    if non_main_arena:

        header += message.hint(' NON_MAIN_ARENA')

    ## edit start

    chunk_str='{\n'

    for key in chunk["value"].type.keys():

        chunk_str+='  %s = %s,\n'%(str(key),hex(int(chunk["value"][key])))

    chunk_str+='}'

 

    print(header, chunk_str)

    ## edit end

return chunk

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有