宁阳网站建设网站管理员招聘

diannao/2026/1/25 5:49:40/文章来源:
宁阳网站建设,网站管理员招聘,电商代运营公司十强,动态域名网站目录 1、问题描述 2、安卓app发生崩溃#xff0c;需要查看汇编代码上下文去辅助分析 3、使用IDA打开.so动态库文件#xff0c;提示Relocations for this machine are not implemented 4、IDA版本较老#xff0c;不支持ARM64的指令集#xff0c;使用7.0版本就可以了 5、…目录 1、问题描述 2、安卓app发生崩溃需要查看汇编代码上下文去辅助分析 3、使用IDA打开.so动态库文件提示Relocations for this machine are not implemented 4、IDA版本较老不支持ARM64的指令集使用7.0版本就可以了 5、找到崩溃的那条汇编指令在目标函数中的位置 6、通过阅读汇编代码上下文找到崩溃的那条汇编指令对应的C源代码位置 C软件异常排查从入门到精通系列教程专栏文章列表欢迎订阅持续更新...https://blog.csdn.net/chenlycly/article/details/125529931C/C基础与进阶专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_11931267.htmlVC常用功能开发汇总专栏文章列表欢迎订阅持续更新...https://blog.csdn.net/chenlycly/article/details/124272585C软件分析工具从入门到精通案例集锦专栏文章持续更新中...https://blog.csdn.net/chenlycly/article/details/131405795开源组件及数据库技术专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_12458859.html网络编程与网络问题分享专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_2276111.html       最近在使用IDA打开一个64位ARM平台编译的.so动态库时IDA先是提示Relocations for this machine are not implemented然后打开后并没有生成汇编代码。经多次尝试和研究得知是IDA版本太低了老版本IDA对ARM64指令集支持的有问题或者不支持ARM64指令集使用7.0及以上的版本就可以了。本文详细讲述一下问题的现象以及尝试解决的过程。 1、问题描述 最近在排查一个安卓app崩溃问题时需要查看app底层使用C实现的.so动态库的汇编代码上下文去辅助分析。但是在使用64位版本的IDA打开.so动态库时先是提示Relocations for this machine are not implemented 然后打开后并没有生成汇编代码。 2、安卓app发生崩溃需要查看汇编代码上下文去辅助分析 安卓app在测试过程中发生了崩溃并自动生成了包含异常信息的Tombstone文件。打开Tombstone文件查看到了崩溃时的函数调用堆栈如下所示 从上述堆栈可以看出崩溃发生在libxxservice_hddll.so 动态库该模块是底层业务库是用C语言实现的动态库中具体是崩溃在函数CXXXServiceHMpHandler::OnTextImageCreateBannerInfoRsp中并看到相对于该函数的偏移值1048这个是十进制整型值。仅仅看到崩溃在该函数中但函数中的代码比较多从现有信息中无法确定具体是崩溃在哪一行代码上。 既然有函数名及相对于函数的偏移值我们可以使用IDA工具打开libxxservice_hddll.so动态库文件定位到CXXXServiceHMpHandler::OnTextImageCreateBannerInfoRsp(mtmsg::CMtMsg*, unsigned int, unsigned int)1048这个代码段地址对应那一句汇编代码然后将汇编代码的上下文与C源码对应起来看看看崩溃的汇编代码到底对应哪一行C源码可能很快就能确定引发问题的原因了。 在这里给大家重点推荐一下我的几个热门畅销专栏 专栏1该专栏订阅量接近350个有很强的实战参考价值广受好评专栏文章持续更新中预计更新到200篇以上 C软件调试与异常排查从入门到精通系列文章汇总https://blog.csdn.net/chenlycly/article/details/125529931 本专栏根据近几年C软件异常排查的项目实践系统地总结了引发C软件异常的常见原因以及排查C软件异常的常用思路与方法详细讲述了C软件的调试方法与手段以图文并茂的方式给出具体的实战问题分析实例带领大家逐步掌握C软件调试与异常排查的相关技术适合基础进阶和想做技术提升的相关C开发人员 专栏中的文章均是通过项目实战总结出来的通过项目实战积累了大量的异常排查素材和案例有很强的实战参考价值专栏文章还在持续更新中预计文章篇数能更新到200篇以上 专栏2  C/C基础与进阶专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_11931267.html 以多年的开发实战为基础总结并讲解一些的C/C基础与进阶内容以图文并茂的方式对相关知识点进行详细地展开与阐述专栏涉及了C/C领域的多个方面的内容同时给出C/C及网络方面的常见笔试面试题并详细讲述Visual Studio常用调试手段与技巧 专栏3  开源组件及数据库技术https://blog.csdn.net/chenlycly/category_12458859.html 以多年的开发实战为基础分享一些开源组件及数据库技术  3、使用IDA打开.so动态库文件提示Relocations for this machine are not implemented 当前崩溃发生在libxxservice_hddll.so动态库中所以我们要用IDA打开该二进制文件查看相关的汇编代码上下文。libxxservice_hddll.so库是64位的所以要使用64位版本的IDA打开。我当前使用的IDA版本是Version 6.1.110315 (64-bit)将libxxservice_hddll.so文件拖入到IDA中会弹出选择文件格式的提示框一般选择默认的就可以了IDA会自动识别 其实这个时候就有疑问了自动生成的文件类型串为ELF64 for Unknown CPU [183] (Shared object) [elfldw]即IDA无法识别出编译文件的CPU平台类型这点就有些奇怪之前也没遇到过。 然后打开的过程中又弹出如下的提示框 大致的意思是对机器的重新定位没有被执行。然后没管这个提示继续打开libxxservice_hddll.so文件打开成功后点击IDA菜单栏中的Jump - Jump to function...在弹出的函数列表窗口中点击窗口下方的Search按钮输入tombstone中展示的函数调用堆栈中的函数CXXXServiceHMpHandler::OnTextImageCreateBannerInfoRsp上面已经讲了崩溃就发生在这个函数中要查看这个函数的汇编代码搜到了函数 双击这个条目IDA就会跳转到函数的汇编代码处结果看到如下的信息 并没有看到有效的汇编代码只是一串数字相关的内容是二进制机器码 现在回过头看先是弹出Relocations for this machine are not implemented提示然后没有生成汇编代码可能是哪里出问题了。 4、IDA版本较老不支持ARM64的指令集使用7.0版本就可以了 首先这个libxxservice_hddll.so文件是没问题的app程序运行时是可以正常使用的。难道是我的IDA版本太老了我的IDA版本如下所示 是2011年的版本距今已经有十来年了我们的libxxservice_hddll.so库是在ARM64平台下编译的是不是老版本的IDA不支持ARM64平台呢 于是到网上搜索了一下下载到了2017年版本的IDA想看看这个版本能否正常地打开库文件。先是将libxxservice_hddll.so库文件拖入到IDA中弹出选择文件格式的窗口如下所示 从上图得知IDA识别出了这个二进制文件的平台类型为ARM64估计既然能识别出来应该生成汇编代码的。然后待文件打开完成后搜索CXXXServiceHMpHandler::OnTextImageCreateBannerInfoRsp函数查看该函数的汇编代码看到如下的汇编代码 所以IDA7.0是支持ARM64平台的二进制文件的生成的汇编代码也是正常的。 5、找到崩溃的那条汇编指令在目标函数中的位置 CXXXServiceHMpHandler::OnTextImageCreateBannerInfoRsp函数对应的汇编代码如下所示 可以看到该函数的函数地址函数首地址为0x0000000000074DE8根据Tombstone文件中显示的相对函数的偏移 #00 pc 0000000000075200  /xxxkyui/lib64/libxxservice_hddll.so (CXXXServiceHMpHandler::OnTextImageCreateBannerInfoRsp(mtmsg::CMtMsg*, unsigned int, unsigned int)1048) (BuildId: d6e3064a3e1a03d9bea3c4496e78cb4942d187d1) 计算新的地址 0x0000000000074DE8 0x418对应于10进制的1048  0x0000000000075200 然后在IDA中搜索该地址0x0000000000075200找到对应的汇编代码行。具体的做法是将鼠标点进汇编代码窗口中使该窗口获得焦点然后按下快捷键g弹出Jump to address窗口输入上面计算出来的地址0x0000000000075200 点击OK就会跳转到对应的行如下所示 6、通过阅读汇编代码上下文找到崩溃的那条汇编指令对应的C源代码位置 我们平时看惯了X86平台的汇编代码看这个ARM架构的汇编代码有点不习惯无论是汇编指令的名称还是寄存器的名称都有很大的差异。感觉还是X86平台的汇编代码阅读起来更习惯一些。 上面我们在汇编代码中定位到了位置但与汇编代码对应的C源码是哪一行呢此外Release下编译时编译器会对C代码进行优化有些变量或函数调用可能会被优化掉导致汇编代码和C代码可能是不完全一致的甚至较难对应起来。 该怎么将汇编代码与C源码对应起来呢难道我们要一句一句汇编代码去啃强行去阅读汇编代码上下文是需要有一定的汇编功底的一般人比较难做到。一般我们借助汇编上下文中的注释信息去辅助阅读本例中我们就是使用注释信息快读定位的。 一般在阅读汇编代码上下文时一方面借助汇编代码中的注释另一方面将汇编代码与C源码对照着看 0x0000000000075200地址对应的汇编代码行该行代码下面紧接就看到注释是常量值字符串的注释 但看不到完整的字符串。这个地方有个技巧可以将鼠标移动到变量上就会以TooTip的方式显示变量中的完整内容如下所示 这个地方巧了这样的字符串是打印日志中的于是到C源码中找到CXXXServiceHMpHandler::OnTextImageCreateBannerInfoRsp函数在函数中找“[CXXXServiceHMpHandler::OnTextImageCreateBannerInfoRsp] dispatch”这样的打印确实有这行打印如下所示 所以就找到了0x0000000000075200地址对应的C源码大概的行了所以本例中的空指针问题应该就是上图中的ptTip指针即该指针值为空结果使用该指针调用value接口产生了崩溃。 关于IDA工具介绍及详细使用说明可以参见我之前写的文章 IDA反汇编工具使用详解https://blog.csdn.net/chenlycly/article/details/120635120使用IDA查看汇编代码上下文去辅助排查C软件异常问题https://blog.csdn.net/chenlycly/article/details/128942626使用反汇编工具IDA查看发生异常的汇编代码的上下文去辅助分析C软件异常https://blog.csdn.net/chenlycly/article/details/132158574

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商网站的设计与实现视频教程软件开发业务流程图

1、view下的 Cmmand Palette 下的Change file Encoding simplifiled chinese GB2312

知名的传媒行业网站开发网页界面设计中常用的中英文字体有哪些

解析卷积神经网络—深度学习实践手册从实用角度着重解析了深度学习中的一类神经网络模型——卷积神经网络,向读者剖析了卷积神经网络的基本部件与工作机理,更重要的是系统性的介绍了深度卷积神经网络在实践应用方面的细节配置与工程经验。笔者希望本书“…

通辽市北京网站建设wordpress做成app

正确而合理的配置IIS是构建一个高性能和高可扩展应用的基础。虽然很多的时候采用默认的配置就已经可以处理一般的情况,但是随着站点应用的发展,特别是当访问量稍微大一点的时候,就会暴露出很多我们认为的“奇奇怪怪”的问题。 所以&#xff0…

做婚宴的网站有哪些网站开发要服务器吗

葡萄酒可以在许多不同的场合成为很好的礼物,因为它可以用来庆祝许多不同的事情。当被邀请去别人家时,你可以带酒去吃饭。葡萄酒可以用来纪念婚礼、出生、毕业和各种纪念日,来自云仓酒庄品牌雷盛红酒分享这是一个非常合适的专业礼物。但是你怎…

泉州做网站企业产品网站开发流程图

服务器端:编辑/etc/ssh/sshd_config中的以下内容 启用AllowTcpForwarding 启用X11Forwarding 将X11DisplayOffset设定为10. 启用X11UseLocalhost 客户机端:编辑/etc/ssh/ssh_config中的以下内容 启用X11Forwarding 连接时ssh -X或者ssh -Y就可以了…

宁波网站优化公司hao123网址之家官网电脑版

由于用到 RFileWriteStream 写入汉字到文件中,之前没有处理过,等写入文件后才发现是乱码。 问了问群里的朋友也没有解决,后来就上网搜,终于找到一个解决方法,就是用 CCnvCharacterSetConverter 类 这个类是用来转换Uni…

苏州建设银行招聘网站手机网站域名解析怎么做

参考: 大数据中台架构以及建设全流程一(Paas层设计) 大数据中台架构以及建设全流程二(Daas层设计)

大创意网站拼多多采用了哪些网络营销方式

由于双链表中大部分操作其实和单链表操作类似,所以这里只挑关键的一些函数 1、定义与初始化 typedef struct DNode {ElementType data;struct DNode *prior,*next; }DNode,*DLinkList;bool InitialDLinkList(DLinkList &L){L (DNode *)malloc(sizeof(DNode));…

用php做购物网站视频单片机编程入门基础知识

匿名函数 简介 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数。 python 使用 lambda 来创建匿名函数。 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。 1 lambda 只是一个表达式,函数体比 def 简单很多。 2 lambda…

服装移动网站策划案phpcms网站建设

纯手写,如果哪写错了,还希望指正 IP地址192.168.127.101,子网掩码255.255.255.192,计算网络地址,主机号,广播地址和主机最大数 255.255.255.192子网掩码转换成二进制为 11111111.11111111.11111111.11000…

河北网站备案 多长时间通过钓鱼网站怎么做

目录 问题描述输入格式输出格式代码实现 问题描述 小蓝拥有n n大小的棋盘,一开始棋盘上全都是白子。小蓝进行了m.次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)。请输出所…

远丰做网站怎么样2015网站设计风格

2014-09-25 Created By BaoXinjian 一、摘要 集合是Oracle开发中经常遇到的情况,Oracle集合分为三种情况:索引表集合(index by table)、嵌套表集合(nested table)、可变集合(varry table)。 PL/SQL中没有数组的概念,他的集合数据类型和数组是…

沧州北京网站建设如何在网站后台备份数据库表

前言 关于 Android 车机,之前分析过方控上自定义按键的输入机制和中控上旋钮输入的原理,但都局限于 Car Service 内 Input 相关模块。 一文了解 Android 车机如何处理中控的旋钮输入从实体按键看 Android 车载的自定义事件机制 本文将结合 Android 系…

建湖做网站哪家最好开通网站空间

在C和C中,int main(int argc, char* argv[])语句作为程序的入口,在main函数中常常用到。 argc:argument count,参数的数量。argc是一个整型数,代表传入程序的命令行参数的数量。程序名称是第一个参数,所以…

只做衬衣网站网站推广策划的策略

维护API很难。 我们正在维护非常复杂的jOOQ API。 但是就语义版本而言,我们遵循相对宽松的规则 。 当您阅读Brian Goetz和其他人关于在JDK中保持向后兼容性的评论时,我只能对他们的工作表示敬意。 显然,我们都希望最终移除Vector &#xff…

中国在数码网站注册域名好>软件工程师证书报考网站

C# 中的 Task< T> 是一个非常强大的并发编程工具&#xff0c;它允许我们异步执行操作并返回一个结果。在这篇博客中&#xff0c;我们将详细介绍 Task< T> 的应用&#xff0c;包括它的基本概念、创建方式、等待和取消等操作&#xff0c;以及一些常见的使用场景。 基…

专门做旅游攻略的网站抖音seo公司

npm - 软件包管理器 定义 npm是Node.js标准的软件包管理器 npm仓库中包含大量软件包,使其成为世界上最大的单一语言代码仓,并且可以确定几乎可用于一切的软件包 最初是为了下载和管理Node.js包依赖的方式,但其现在已成为前端JavaScript中使用的工具 使用: 1.初始化清单文…

wordpress在线仿站杭州 做网站

本篇介绍图像处理与模式识别中最热门的一个领域——人脸检测&#xff08;人脸识别&#xff09;。人脸检测可以说是学术界的宠儿&#xff0c;在不少EI&#xff0c;SCI高级别论文都能看到它的身影。甚至很多高校学生的毕业设计都会涉及到人脸检测。当然人脸检测的巨大实用价值也让…

对门户网站建设情况的报告省交通建设质安监督局网站

1.把client目录复制到服务器 .next和node_modules文件夹不用上传到服务器 在服务器目录运行 docker build -t fastgpt:1.0.3 . 构建服务 再运行 docker ps 就可以看到容器了

网站设计 加英文费用中国菲律宾争议岛屿

目录 1、首先创建一个maven项目引入spring依赖 2、新建一个person.java 实体类 3、新建配置类 TestBeanConfig.java 4、resources 创建配置文件 5、新建测试类TestBean.java 具体展示注解方式和配置方式的示例 今天给大家介绍一下Spring中Bean注解的用法,后续的文章给大家介绍S…