我试图计算一个二进制文件的库的基地址.我有printf,putes ecc的地址,然后我减去它的偏移量,得到库的基地址.我对printf,putes和signal这样做,但每次我得到的基地址都不一样。这个 帖子,但我也无法得到正确的结果。

ASLR被禁用。

这是我取函数库地址的地方。gdb-peda$ x/20wx 0x804b018

0x804b018 : 0xf7e05720 0xf7e97010 0x080484e6 0x080484f6

0x804b028 : 0xf7e3fb40 0x08048516 0x08048526 0xf7df0d90

0x804b038 : 0xf7f18730 0x08048556 0x08048566 0x00000000

然后我有:gdb-peda$ info proc mapping

process 114562

Mapped address spaces:

Start Addr End Addr Size Offset objfile

0x8048000 0x804a000 0x2000 0x0 /home/ofey/CTF/Pwnable.tw/applestore/applestore

0x804a000 0x804b000 0x1000 0x1000 /home/ofey/CTF/Pwnable.tw/applestore/applestore

0x804b000 0x804c000 0x1000 0x2000 /home/ofey/CTF/Pwnable.tw/applestore/applestore

0x804c000 0x806e000 0x22000 0x0 [heap]

0xf7dd8000 0xf7fad000 0x1d5000 0x0 /lib/i386-linux-gnu/libc-2.27.so

0xf7fad000 0xf7fae000 0x1000 0x1d5000 /lib/i386-linux-gnu/libc-2.27.so

0xf7fae000 0xf7fb0000 0x2000 0x1d5000 /lib/i386-linux-gnu/libc-2.27.so

0xf7fb0000 0xf7fb1000 0x1000 0x1d7000 /lib/i386-linux-gnu/libc-2.27.so

0xf7fb1000 0xf7fb4000 0x3000 0x0

0xf7fd0000 0xf7fd2000 0x2000 0x0

0xf7fd2000 0xf7fd5000 0x3000 0x0 [vvar]

0xf7fd5000 0xf7fd6000 0x1000 0x0 [vdso]

0xf7fd6000 0xf7ffc000 0x26000 0x0 /lib/i386-linux-gnu/ld-2.27.so

0xf7ffc000 0xf7ffd000 0x1000 0x25000 /lib/i386-linux-gnu/ld-2.27.so

0xf7ffd000 0xf7ffe000 0x1000 0x26000 /lib/i386-linux-gnu/ld-2.27.so

0xfffdd000 0xffffe000 0x21000 0x0 [stack]

和:gdb-peda$ info sharedlibrary

From To Syms Read Shared Object Library

0xf7fd6ab0 0xf7ff17fb Yes /lib/ld-linux.so.2

0xf7df0610 0xf7f3d386 Yes /lib/i386-linux-gnu/libc.so.6

然后我找到了信号的偏移量和put来计算基础libc地址。base_with_signal_offset = 0xf7e05720 - 0x3eda0 = 0xf7dc6980

base_with_puts_offset = 0xf7e3fb40 - 0x809c0 = 0xf7dbf180

我期待的是 base_with_signal_offset = base_with_puts_offset = 0xf7dd8000但事实并非如此,我做错了什么?EDIT(为了让你明白我从哪里得到这些偏移量)。readelf -s /lib/x86_64-linux-gnu/libc-2.27.so | grep puts

我得到的是:191: 00000000000809c0 512 FUNC GLOBAL DEFAULT 13 _IO_puts@@GLIBC_2.2.5

422: 00000000000809c0 512 FUNC WEAK DEFAULT 13 puts@@GLIBC_2.2.5

496: 00000000001266c0 1240 FUNC GLOBAL DEFAULT 13 putspent@@GLIBC_2.2.5

678: 00000000001285d0 750 FUNC GLOBAL DEFAULT 13 putsgent@@GLIBC_2.10

1141: 000000000007f1f0 396 FUNC WEAK DEFAULT 13 fputs@@GLIBC_2.2.5

1677: 000000000007f1f0 396 FUNC GLOBAL DEFAULT 13 _IO_fputs@@GLIBC_2.2.5

2310: 000000000008a640 143 FUNC WEAK DEFAULT 13 fputs_unlocked@@GLIBC_2.2.5

linux 获取 基地址,linux - 每个函数加载的glibc基地址不同。 - SO中文参考 - www.soinside.com...相关推荐

  1. php取出多维数组的所有元素,php - 获取多维数组PHP中两个元素之间的所有数组 - SO中文参考 - www.soinside.com...

    [我需要帮助.我有PHP困难.这是多维数组,我想将"信贷协议摘要"数组和"信贷协议"数组之间的所有数组完全放入一个单独的数组中.我试图使用range()函数,但 ...

  2. uboot加载linux内核加载那些内容,几个地址参数及uboot加载启动内核过程的理解

    关于uBoot和Linux内核中几个地址参数及uboot加载启动内核过程的理解 uboot一般使用mkimage工具先制作一个启动映象文件来引导识别内核的,uboot源代码的tools/目录下有mki ...

  3. linux程序卸载动态库,Intel平台下linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载...

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 相信读者已经看过了 Intel平台下Linux中ELF文件动态链接的加载.解析及实例分析(一): 加载的内容了,了解了ELF文件被加载的 ...

  4. linux优化网页加载过程,【zz】Linux起步过程中硬件模块的加载

    [zz]Linux起步过程中硬件模块的加载 [zz]Linux起步过程中硬件模块的加载 日期:2014-05-16 浏览次数:20354 次 [zz]Linux启动过程中硬件模块的加载 文章来源不详. ...

  5. linux 卡在grub_浅析 GRUB 如何加载 Linux kernel

    前言 对于 GRUB 的加载流程,网上绝大部分都是写对 menu.lst, grub.cfg 这些 GRUB 配置文件的编写流程,就像是写脚本语言一样,用些关键字就能让 PC机能正确启动桌面 Linu ...

  6. Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法

    Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法 问题描述 在Ubuntu上使用CP210x USB转UART设备时需要安装驱动程序(CP ...

  7. Linux下C/C++程序编译链接加载过程中的常见问题及解决方法

    Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...

  8. Linux arm 内核选项和busybox选项 加载tun模块 -- 创建/dev/tun 字符设备

    Linux arm 内核选项和busybox选项 加载tun/tap模块 – 创建/dev/tun 字符设备 可以参考博客1: linux下TUN/TAP虚拟网卡的使用 可以参考博客2:ubuntu下 ...

  9. linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...

    今天扣丁学堂Linux培训老师给大家介绍一下关于Linux程序运行时加载动态库失败的解决方法,希望对同学们学习有所帮助,下面我们一起来看一下吧. Linux下不能加载动态库问题 当出现下边异常情况 . ...

最新文章

  1. 基于机器学习的临床决策支持
  2. Java并发:明白Synchronized实现原理,锁什么?
  3. python系统-python实现用户登录系统
  4. mysql ereg_php中正则表达式匹配函数ereg是不是被弃用了?
  5. 左右居中_008布局题:div垂直居中,左右10px,高度始终为宽度一半
  6. Golang的值类型和引用类型的范围、存储区域、区别
  7. 发布 项目_第十八期科创基金项目发布会圆满结束
  8. C++11系列学习之七---------初始化列表
  9. django类视图简单使用和源码解析
  10. 当把CocoaPods生成的workspace移动到上层目录时
  11. 实战 | F1060路由模式ISIS典型组网配置案例
  12. 一篇文章教你如何使用makerfile
  13. fatal error LNK1169: one or more multiply defined symbols found
  14. localtime选择00:00值不回显_配置OSPF的DR选择示例
  15. IM即时通讯实现的原理
  16. android手机如何查看系统版本号,怎么查看安卓系统版本
  17. k3安装服务器系统,论如何逗比的在2008R2上安装金蝶K3服务器
  18. python:maya 一个人性化的时间处理库
  19. Jetson TX2介绍
  20. Logo设计没灵感?这7个宝藏网站拯救你的头发

热门文章

  1. spring-boot-mybatis
  2. 当析构函数遇到多线程──C++ 中线程安全的对象回调
  3. GRUB启动过程分析 GRUB 引导程序配置
  4. 程序员的灯下黑:不要忘记你的目标
  5. ***正传——著名网络安全人士郭鑫成长经历
  6. 基于SSH实现医院在线挂号系统
  7. Noip前的大抱佛脚----字符串
  8. hdu-6166(最短路+二进制分组)
  9. 【POJ2409】Let it Bead Pólya定理
  10. oracle按照时间过滤