反汇编调试之分析OOPShttps://mp.weixin.qq.com/s?__biz=Mzg3NDkwMjc2NA==&mid=2247483761&idx=1&sn=cda02350108ce70be6c074e8cee26527&chksm=cec8e4f2f9bf6de40af22057d5a953009671826360967667dcf05de822ddc3045fb5e8d6e1c6#rd

1 oops信息

[    3.420368] --- create_oops_info_init --- 11 ---
[    3.425055] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[    3.433155] pgd = 80004000
[    3.435966] [00000000] *pgd=00000000
[    3.439575] Internal error: Oops: 805 [#1] PREEMPT SMP ARM
[    3.445067] Modules linked in:
[    3.448152] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.1.15-gea6003fd-dirty #5
[    3.455467] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[    3.462002] task: d8070000 ti: d8074000 task.ti: d8074000
[3.467416] PC is at create_oops_info_init+0x20/0x28 内核崩溃时,PC所指向的地址为create_oops_info_init函数地址加0x20
[3.472390] LR is at create_oops_info_init+0x1c/0x28 指示函数崩溃时,当前的链接地址
[    3.477366] pc : [<8062c44c>]    lr : [<8062c448>]    psr: 40000113
[    3.477366] sp : d8075f08  ip : 00000000  fp : 00000000
[    3.488849] r10: 80bcc394  r9 : 80bbf89c  r8 : 00000000
[    3.494081] r7 : 8062c42c  r6 : d86c3f40  r5 : 80bdc860  r4 : 80bdc860
[    3.500614] r3 : 00000000  r2 : 00200000  r1 : 00000000  r0 : 00000000
[    3.507150] Flags: nZcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[    3.514466] Control: 10c53c7d  Table: 1000404a  DAC: 00000015
[    3.520218] Process swapper/0 (pid: 1, stack limit = 0xd8074210)
[    3.526232] Stack: (0xd8075f08 to 0xd8076000)
[    3.530599] 5f00:                   80bdc860 80009718 80bbf878 8014094c 00000000 d811a180
[    3.538786] 5f20: 00000000 80be45a8 60000113 00000000 ef7ff96a ef7ff968 80854da4 8004d56c
[    3.546974] 5f40: 00000000 80aa83a4 00000006 00000006 80be4590 0000014d 00000006 80c52000
[    3.555161] 5f60: 0000014d 00000006 80c52000 80c52000 80bbf894 80b64dbc 00000006 00000006
[    3.563348] 5f80: 80b64594 80051c2c 00000000 8081cd14 00000000 00000000 00000000 00000000
[    3.571535] 5fa0: 00000000 8081cd1c 00000000 8000f528 00000000 00000000 00000000 00000000
[    3.579721] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    3.587909] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 e33d3fbc eeb40a4c
[    3.596111] [<8062c44c>] (create_oops_info_init) from [<80009718>] (do_one_initcall+0x8c/0x1d4)
[    3.604831] [<80009718>] (do_one_initcall) from [<80b64dbc>] (kernel_init_freeable+0x144/0x1e4)
[    3.613550] [<80b64dbc>] (kernel_init_freeable) from [<8081cd1c>] (kernel_init+0x8/0xe8)
[    3.621660] [<8081cd1c>] (kernel_init) from [<8000f528>] (ret_from_fork+0x14/0x2c)
[    3.629242] Code: e3a0200b e34800ad eb07ca5a e3a00000 (e5c00000)
[    3.635430] ---[ end trace 02e4f3a9d5559063 ]---
[    3.640076] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    3.640076]
[    3.649227] CPU1: stopping
[    3.651953] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.1.15-gea6003fd-dirty #5
[    3.660484] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[    3.667041] [<80015d78>] (unwind_backtrace) from [<8001271c>] (show_stack+0x10/0x14)
[    3.674805] [<8001271c>] (show_stack) from [<80820e50>] (dump_stack+0x84/0xc4)
[    3.682044] [<80820e50>] (dump_stack) from [<80014c80>] (handle_IPI+0x178/0x18c)
[    3.689454] [<80014c80>] (handle_IPI) from [<80009480>] (gic_handle_irq+0x58/0x5c)
[    3.697035] [<80009480>] (gic_handle_irq) from [<80013200>] (__irq_svc+0x40/0x74)
[    3.704524] Exception stack(0xd8097f78 to 0xd8097fc0)
[    3.709584] 7f60:                                                       00000001 00000000
[    3.717774] 7f80: 00000000 8001f4e0 d8096000 80bd59e4 8082b8bc 00000000 00000000 d8097fc8
[    3.725962] 7fa0: 00000001 00000000 01000000 d8097fc0 8000ff64 8000ff68 60000113 ffffffff
[    3.734151] [<80013200>] (__irq_svc) from [<8000ff68>] (arch_cpu_idle+0x38/0x3c)
[    3.741567] [<8000ff68>] (arch_cpu_idle) from [<80065138>] (cpu_startup_entry+0x288/0x320)
[    3.749846] [<80065138>] (cpu_startup_entry) from [<1000952c>] (0x1000952c)
[    3.756820] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

产生oops的源码

#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/delay.h>static int create_oops_info_init(void)
{char *tp = NULL;printk("--- %s --- %d ---\n", __FUNCTION__, __LINE__);*tp = 0;return 0;
}static void create_oops_info_exit(void)
{printk("--- %s --- %d ---\n", __FUNCTION__, __LINE__);return;
}module_init(create_oops_info_init);
module_exit(create_oops_info_exit);MODULE_DESCRIPTION("Test by HuSiZhuLuanXiang. Create the oops info!");
MODULE_AUTHOR("HuSiZhuLuanXiang");
MODULE_LICENSE("GPL");

3 源码反汇编

-> cat objdump.sh if [ $# -ne 2 ]; then
echo "Usgae: "
echo "./objdump <file.o> <output file>"
exit 1;
fiexport PATH=$PATH:<path>
arm-poky-linux-gnueabi-objdump  -S -j .text $1 > $2-> ./objdump.sh create_oops_info.o create_oops_info.screate_oops_info.o:     file format elf32-littlearm
Disassembly of section .text:00000000 <create_oops_info_init>:0:  e3001000   movw  r1, #0      4:  e3000000   movw  r0, #0      8:  e92d4010   push  {r4, lr}    c:  e3401000   movt  r1, #0      10:  e3a0200b   mov  r2, #11      14:  e3400000   movt  r0, #0      18:  ebfffffe   bl  0 <printk>1c:  e3a00000   mov  r0, #0       /* r0 = 0 */20:  e5c00000   strb  r0, [r0]     /* r0的值为0,把r0的值存储到r0的值所指向的内存空间 */ 24:  e8bd8010   pop  {r4, pc}00000028 <create_oops_info_exit>:28:  e3000000   movw  r0, #02c:  e3a02014   mov  r2, #2030:  e3400000   movt  r0, #034:  e59f1000   ldr  r1, [pc]  ; 3c <create_oops_info_exit+0x14>38:  eafffffe   b  0 <printk>3c:  00000018   .word  0x00000018

4 结束语

希望本文可以帮助到大家!

欢迎大家通过后台与我交流学习心得,水平有限,如有错漏的地方请不吝指出,谢谢!

反汇编调试之分析OOPS相关推荐

  1. 反汇编和二进制分析工具清单

    本附录列出了许多反汇编和二进制分析工具,包括逆向工程.反汇编API以及执行跟踪的调试器. C.1 反汇编工具 C.1.1 IDA Pro(Windows.Linux.macOS) IDA是行业标准的递 ...

  2. iOS平台的应用程序调试与分析

    本文阐述如何在iOS平台上对应用程序进行调试与分析,旨在指导新手分析iOS程序,高手请无视.内容包括软件硬件的准备.代码的解密.符号信息的获取.用gdb调试等,最后以京东LeBook为例子进行演示. ...

  3. 【转】iOS平台的应用程序调试与分析

    转自:看雪学院的文章 iOS平台的应用程序调试与分析 作者:zhuliang 转载请保证文章完整并注明来自看雪或cd-team 本文阐述如何在iOS平台上对应用程序进行调试与分析,旨在指导新手分析iO ...

  4. iOS平台的应用程序调试与分析(openssh + gdb)

    标 题: [原创]iOS平台的应用程序调试与分析 作 者: zhuliang 时 间: 2013-04-02,17:09:40 链 接: http://bbs.pediy.com/showthread ...

  5. linux静态反汇编工具,27款反汇编/调试器/静态和动态分析工具

    原标题:27款反汇编/调试器/静态和动态分析工具 本文从github上收集了27款实用的反汇编.调试器.静态和动态分析工具,文中的工具在<Awesome Windows Exploitation ...

  6. python游戏按键无效_瞬速掌握Python系统管理-调试和分析脚本1-debugging

    调试和分析在Python开发中发挥着重要作用. 调试器可帮助程序员分析完整的代码. 调试器设置断点,而剖析器运行我们的代码,并给我们执行时间的详细信息. 分析器将识别程序中的瓶颈.我们将了解pdb P ...

  7. xcode反汇编调试iOS模拟器程序

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow http://bl ...

  8. mysql innodb源代码调试跟踪分析 何登成_Mysql+Innodb源代码调试跟踪分析+何登成_IT168文库...

    Mysql+Innodb源代码调试跟踪分析+何登成_IT168文库 Mysql Innodb源代码调试跟踪分析 何登成 1 2 3 4 5 6 7 8 9 10 10.1 10.2 10.3 10.4 ...

  9. 极验验证码(6.0.9)破解(四) 之 'aa' 参数调试和分析

    回顾 上篇文章 介绍了'userresponse' 参数调试和分析,并将js执行过程整理出来,整理成python代码. 今天我们继续进行极验破解,这次我们介绍 'aa'参数的生成,距离上篇文章,已经过 ...

最新文章

  1. Android Studio 简介
  2. 虞旦盛老师 的《数学分析续》课件
  3. invalid dts/pts combination
  4. cherish now no longer missed
  5. Feign-自定义配置
  6. java主要内存区域_可能是把Java内存区域讲的最清楚的一篇文章
  7. Ehab and Path-etic MEXs CodeForces - 1325C(思维+贪心)
  8. loadrunner录制事件为0_测试工具LoadRunner常见问题汇总,解决方案整理
  9. Spring Cloud 升级最新 Finchley 版本,踩了所有的坑
  10. 蓝桥杯java能用编译器1吗_学java的你,这些英文单词都掌握了吗?
  11. Liferay SSO CAS 集成
  12. signal(SIGHUP, SIG_IGN)的含义
  13. 联想服务器管理系统,联想服务器的系统监控软件easyManage
  14. Charles 实现电脑抓取手机包(解决手机不能上网问题)
  15. 系统垂直越权与水平越权漏洞修复记录
  16. 熵值法原理、应用及其Python实现
  17. scala成长之路(1)基本语法和数据类型
  18. 发声 | 再访《Scratch少儿趣味编程》系列图书作者阿部和广访谈问题有奖征集...
  19. QGIS 3.10 矢量样式设置
  20. MonoRail学习笔记四:MonoRail基本流程分析

热门文章

  1. C语言和C++有什么区别?
  2. 吸顶灯怎么固定天花板_天花板吸顶灯如何进行安装? 安装中的注意事项有哪些?...
  3. Win32 OpenGL编程系列 2D例子 -- 七巧板图形绘制
  4. js 判断 html是否为空,javascript怎么判断对象是否为空?
  5. 010:图片类爬虫项目实战
  6. windows下玩linux--MetroPipe VPM
  7. (USB系列三)stm32 CubeMX usb音频描述符详解 usb audio UAC
  8. LUBUNTU20.04.2 安装输入法
  9. Java使用正则表达式判断是否包含中文、英文、数字、自定义符号
  10. oracle的3g_ap route路由器设置,TP-LINK Mini 3G系列无线路由器设置方法汇总