[笔记分享] [Exception] 用户空间异常之Call Stack AP实现
2017-09-11 18:16
253 查看
从上一章分析可知,我们已经获取了call stack 的offset:
![](https://img-blog.csdn.net/20170911181143223?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3Jpc19mZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
虽然得到了相对偏移,但是对于我们分析代码基本上还没什么用,因为咱们都是c代码嘛,所以要转换成c函数咯。
所以思路是这样子:
![](https://img-blog.csdn.net/20170911181157193?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3Jpc19mZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
前面两步debuggerd已经帮我们完成了,而得到so的map我们目前只能在pc上完成,这个要借助objdump或者nm命令来完成map,手机上没这些命令。
另外,为了方便看log,我们将/data/tombstones目录下的文件按照时间规则来命名。将engrave_tombstone函数作如下改动就可以了。
![](https://img-blog.csdn.net/20170911181211074?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3Jpc19mZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170911181311305?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3Jpc19mZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170911181318971?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3Jpc19mZWk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
打开旧log文件,也就是从/data/tombstones下copy过来的文件,读取call stack的offset和所属的so名字,获取相应so的map表,查找offset从属于so中的哪个function,然后将这个function name一并写到新的log文件中。
虽然得到了相对偏移,但是对于我们分析代码基本上还没什么用,因为咱们都是c代码嘛,所以要转换成c函数咯。
所以思路是这样子:
前面两步debuggerd已经帮我们完成了,而得到so的map我们目前只能在pc上完成,这个要借助objdump或者nm命令来完成map,手机上没这些命令。
另外,为了方便看log,我们将/data/tombstones目录下的文件按照时间规则来命名。将engrave_tombstone函数作如下改动就可以了。
AP实现
对于pc上的call stack转换ap实现也比较简单,按照上一节说的思路就可以了,这里将code贴出来,简单介绍下过程。打开旧log文件,也就是从/data/tombstones下copy过来的文件,读取call stack的offset和所属的so名字,获取相应so的map表,查找offset从属于so中的哪个function,然后将这个function name一并写到新的log文件中。
相关文章推荐
- [笔记分享] [Exception] 用户空间异常之Call Stack AP使用
- [笔记分享] [Exception] 用户空间异常之catch流程小结
- [笔记分享] [Exception] 内核空间异常之Call Stack解析
- [笔记分享] [Exception] 内核空间异常之流程小结
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
- [笔记分享] [RTC] Alarm用户空间分析
- WebAPI 用户认证防篡改实现HMAC(三)异常信息处理 AbsCommonExceptionFilterAttribute
- [笔记分享] [RTC] RTC Software之用户空间
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
- Thinking in Java学习笔记 Thread.UncaughtExceptionHandler接口实现捕获线程内异常
- ajax学习笔记二:javascript实现命名空间(ajax封装类的例子)
- (分享)ASP.NET 实现注册用户 邮箱激活
- linux内存布局的内核实现--用户空间的映射方式
- 用户空间读写锁的实现
- Silverlight学习笔记一(理解一下机制,使用一下布局,实现一个简单的用户登录)
- Linux 系统内核空间与用户空间通信的实现与分析
- 浅析u盘等热插拔uevent事件用户空间截获方法和具体实现
- {传智播客} (学习笔记)--JQuery_实现添加用户
- 基于NETLINK的内核与用户空间共享内存的实现
- 倪蒙oralce学习笔记之Oracle创建删除用户、角色、表空间、导入导出数据库总结