问题如下:同一套代码分别编译出32位和64位程序;32位程序在运行正常,但是64位程序运行出现coredump。

问题分析:对64位程序的coredump文件进行分析发现函数函数返回的指针被截断了。64位程序返回指针有两种情况,第一种,指针高32位全部填充0;第二种,指针高32位全部填充1,第二种情况很容易迷惑人,指针的地址怎么指向内核地址。

1.      对二进制文件进行反汇编,发现函数返回的指针确实复制给rax寄存器,但是函数返回之后,指针指向的地址就被截断了。

2.      在反汇编文件中查找,调用该函数的地方发现,在call之后,发现多了这条“cltq”汇编指令

3.      因为在调用该函数的地方没有找到对应的头文件,因此函数默认返回值用32位的整数

4.      我们在调用该函数时,指针是64位的,因此对改制进行了扩展,如果高位是1,扩展时,在高32位全部填充1,如果高位是0,扩展是,在高32位全部填充0;这就是我们在coredump文件中看到的现象

解决方法:调用该函数的文件中,添加该包含该函数声明的头文件;或者在调用该函数的文件中用extern声明该函数。

64位程序core分析相关推荐

  1. 【Pwn】对64位程序的exploit.py运行报错“timeout: the monitored command dumped core\n“

    刷题时偶然发现的64位程序的堆栈平衡问题 题目: ciscn_2019_en_2 运行exp时发现报错: 这里是栈没有对齐, 64位程序相对于32位多了堆栈需要平衡的问题 如果要返回父程序,则当我们在 ...

  2. PWN入门(5)32位程序与64位程序和构造ROP链

    简介 "pwn"这个词的源起以及它被广泛地普遍使用的原因,源自于魔兽争霸某段讯息上设计师打字时拼错而造成的,原先的字词应该是"own"这个字,因为 'p' 与 ...

  3. 32位程序和64位程序这些区别你知道吗?

    我们在编写C/C++程序时,32位程序和64位程序的代码有何区别?如何编写既可以编译成32位程序又可以编译成64位程序的代码? 代码上的区别 实际上,对于32位程序和64位程序来说,代码上的区别不大, ...

  4. VS中编译64位程序以及遇到的问题(E0000235)

    安装64位操作系统不是编译64位程序的必要条件,关键是要装64位程序的编译器. 1. 选择"Build" – "Configuration Manager"菜单 ...

  5. Android编译32或64位程序

    ★★★ 个人博客导读首页-点击此处 ★★★ 1.查看一个程序是32位还是64位: $ readelf -h tee-supplicant ELF Header: Magic: 7f 45 4c 46 ...

  6. 说说windows下64位程序和32位程序

    对于两者的区别先不说,先说说两者的影响吧. windows操作系统,尤其是win7下64位和32位的程序对一般用户来说影响都不是很大,只要程序能够正常运行就ok了,不需要关心那么多. 可是对于很多大型 ...

  7. Windows判断是否为64位程序(C++)

    思路: 1.先判断是否为64位系统 2.判断是否为64位程序 代码: // ProcessType.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. //判 ...

  8. windows下编译64位程序时没有没_WIN32定义

    _WIN32定义的初衷是为了区分16位和32位程序,但是目前很多项目的代码都是使用_WIN32来判定是否是windows平台,所以目前在windows平台下编译32位和64位程序时,编译器都会预定义了 ...

  9. 32位程序和64位程序

    我们有时候会遇到这样一种情况:我们在32位操作系统上下载了64位版本的程序,却发现无法安装,大家可能会很困惑. 下面就来简单解释一下32位程序与64位程序的具体区别. 我们首先要弄明白的: 1.这里所 ...

  10. Win32:编译64位程序的注意点

    有许多程序员在遇到32位程序内存超过2G就崩溃了,因为2G是32位程序用户空间的最大值,于是就选择编译成64位程序,认为64位内存空间就一下在上升到了64位地址空间最大值了. 这种理解是不对的.关键还 ...

最新文章

  1. 基于OpenCV的焊件缺陷检测
  2. TCP/IP之大明内阁---协议的制定
  3. UVA 10519 !! Really Strange !!
  4. u-boot与bootloader及其区别
  5. php静态文件怎么生成器,[新姿势]我用过的静态站点生成器们
  6. Asp.net ajax、Anthem.net、Ajax pro三大ajax框架那一种使用比较方便?易于配置?
  7. 使用Vue.js和ASP.NET Core MVC实现CQRS模式
  8. 2018.10.26多校
  9. guid会不会重复_最笨的方法也许是最快的方法,量变到质变,首先要做的是不断重复...
  10. Jmeter(十一)测试监听
  11. 【Verilog】verilog实现奇数次分频
  12. oracle 表空间达到32g,oracle表空间到32G后扩容
  13. HTML资产负债表和收入支出表(可动态更新)
  14. 代码大全 服装尺寸图html,最全服装尺码对照表
  15. java 字符串排列组合_字符串排列组合问题
  16. 如何用油猴提升前端开发效率
  17. 线条边框简笔画图片大全_各种简笔画边框大全_边框简单又漂亮简笔画
  18. XManager5 ssh远程登录服务器工具xshell ,服务器资源上传下载工具xftp
  19. HBuilderx打包h5的APP,解决获取相机权限问题
  20. java公众号订单查询

热门文章

  1. 海洋工作室——网站建设专家:只有十句话,看了十分钟(完整版)[不应该只看十分钟!!!]...
  2. asp.net的条形码
  3. Go 性能优化技巧 4/10
  4. 程序猿的道路~~(How to be a programmer?)
  5. 编写一个基于控制台的聊天室程序
  6. mysql.sock文件丢失的一个原因
  7. JDBC连接池JDBCTemplate
  8. maven helper解决依赖冲突问题
  9. Dubbo性能调优参数及原理
  10. Python学习(24)--面向对象编程1