简体   繁体   English

frida - 如何翻译原生回溯以与 addr2line 工具一起使用

[英]frida - How to translate native backtrace to use with addr2line tool

Frida can print out backtrace with below code: Frida 可以使用以下代码打印回溯:

var backtrace = Thread.backtrace(this.context, Backtracer.ACCURATE)
            .map(DebugSymbol.fromAddress)
            .join("\n\t");

The output looks like below in android:在 android 中的输出如下所示:

0x72e82c2a50 libc.so!fopen64+0x50
0x72e82c2a4c libc.so!fopen64+0x4c

But when I try to use addr2line to get code line, it doesn't work:但是当我尝试使用 addr2line 获取代码行时,它不起作用:

$ addr2line -f -C -i -e symbols/apex/com.android.runtime.release/lib64/bionic/libc.so 0x72e82c2a50 
??
??:0

Sounds like that address is not the actual PC as crash stack.听起来该地址不是作为崩溃堆栈的实际 PC。 How can I translate this address to be used in addr2line tool?如何转换此地址以在 addr2line 工具中使用?

Below steps (eg libc.so)下面的步骤(例如 libc.so)

  1. Get library base address:获取库基地址:

0xac0ad000 <- Module.findBaseAddress("libc.so") 0xac0ad000 <- Module.findBaseAddress("libc.so")

  1. Get backtrace获取回溯

Thread.backtrace(thz.context,Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join("\\n "); Thread.backtrace(thz.context,Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join("\\n");

Sample output:示例输出:

0xac151ed7 libc.so!fopen64+0x2e 0xac151ed7 libc.so!fopen64+0x2e

3.Substract baseAddr to get PC value 3.减去baseAddr得到PC值

#pc 0x000a4ed7 <- 0xac151ed7 - 0xac0ad000 #pc 0x000a4ed7 <- 0xac151ed7 - 0xac0ad000

  1. Addr2line with PC value带有 PC 值的 Addr2line

$ addr2line -f -C -i -e symbols/apex/com.android.runtime/lib/bionic/libc.so 0x000a4ed7 $ addr2line -f -C -i -e 符号/apex/com.android.runtime/lib/bionic/libc.so 0x000a4ed7
open(char const*, int pass_object_size1, unsigned short)打开(字符常量*,int pass_object_size1,无符号短)
bionic/libc/include/bits/fortify/fcntl.h:74 fopen仿生/libc/include/bits/fortify/fcntl.h:74 fopen
bionic/libc/stdio/stdio.cpp:256仿生/libc/stdio/stdio.cpp:256

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM