当一个动态库(native 程序)开始执行时,系统会注册一些连接到 debuggerd 的 signal handlers,当系统 crash 的时候,会保存一个 tombstone 文件到/data/tombstones目录下(Logcat中也会有相应的信息),文件的确就像墓碑一样记录了死亡了的进程的基本信息(例如进程的进程号,线程号),死亡的地址
Native地址转换 从系统对应源码中找到对应的addr2line及so 64位:32w位:Kernel地址转换 注:一定要找对应的系统可执行文件和vmlinux 1)获取函数名的符号地址,以el1_da为例 2)计算地址。例如:[<ffffff9d17e832d0>] el1_da+0x24/0x3c 则计算后的地址ffffff80080832ac + 24 = 目标地址 参考...
通过PC指向的函数,用addr2line(后面的GNU tools有介绍)定位到哪只文件的哪一行,大致可以知道发生了什么,如果无法一下子定位,也可以通过结合printk()多次观察KE时的log排查。如果是由BUG()/BUG_ON()引起的KE,则就可以着手修复问题了。 查看调用栈,有些时候调用栈可以说明流程,看看代码是否有按预期跑,如果没有,...
addr2line Linux下addr2line命令用于将程序指令地址转换为所对应的函数名、以及函数所在的源文件名和行号。当含有调试信息(-g)的执行程序出现crash时(core dumped),可使用addr2line命令快速定位出错的位置。 如果无法确定文件名或函数名,addr2line将在它们的位置打印两个问号;如果无法确定行号,addr2line将打印0或一...
addr2line addr2line 将地址转换为文件名和行号。给定可执行文件中的地址,它使用调试信息来确定与其关联的文件名和行号。模块在动态地址加载,但从 0 作为基地址开始编译。因此,为了找到给定动态地址的行号,我们需要知道模块的加载地址。 $ addr2line -e oops.o 0x08 $ skels/debugging/oops/oops.c:5 $ # 0x...
__builtin_return_address(0)结合aarch64-poky-linux-addr2line,可以获取caller函数的符号。 如果需要获取callee函数的符号,比如found->hook函数指针对应的符号,只需要aarch64-poky-linux-addr2line即可。 LTRACEF("callee found->hook %p %s\n", found->hook, found->name); found->hook(found->level);编...
addr2line、ar、c++filt、gold、gprof、nm、objcopy、objdump、ranlib、readelf、size、strings、strip 需要针对每种 CPU 架构进行配置 交叉编译非常简单,不需要特殊的依赖项。 gcc:GNU Compiler Collection C、C++、Fortran、Go 等编译器前端 各种CPU 架构的编译器后端 ...
1.5.2 addr2line将地址转换为对应的源代码 addr2line -e kerneloops.o hello_init+0x3 1 此方法对于内核OOPS同样适用, 调试时将驱动 KO 文件或者 OBJ 文件替换为内核 vmlinux 文件 1.5.3 将gdb反汇编代码得到地址直接转换为对应的源代码 对于驱动来说, 可以从/sys/module/对应驱动名称/sections/.init.text...
enumbug_trap_typereport_bug(unsigned long bugaddr,struct pt_regs*regs){...if(!is_valid_bugaddr(bugaddr))returnBUG_TRAP_TYPE_NONE;...printk(KERN_DEFAULT"---[ cut here ]---\n");if(file)pr_crit("kernel BUG at %s:%u!\n",file,line);elsepr_crit("Kernel BUG at %p [verbose debug...
2017: "Linux kernel addr_limit bug / exploitation" by Vitaly Nikolenko [video]2017: "The Stack Clash" by Qualys Research Team [article]2017: "New Reliable Android Kernel Root Exploitation Techniques" [slides]2017: "Unleashing Use-Before-Initialization Vulnerabilities in the Linux Kernel Using ...