解码混淆过的堆栈跟踪信息

当混淆后的代码输出一个堆栈信息时,方法名是不可识别的,这使得调试变得很困难,甚至是不可能的。
幸运的是,当ProGuard运行时,它都会输出一个<project_root>/bin/proguard/mapping.txt文件,而这个文件中包含了原始的类,方法和字段名被映射成的混淆名字。

retrace.bat脚本(Window)或retrace.sh脚本(Linux,Mac OS X)可以将一个被混淆过的堆栈跟踪信息还原成一个可读的信息。
它位于<sdk_root>/tools/proguard文件夹中。执行retrace工具的语法如下:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

如果你没有指定<stacktrace_file>,retrace工具会从标准输入读取。

时间: 2024-11-09 10:05:01

解码混淆过的堆栈跟踪信息的相关文章

每天进步一点点——Linux系统中的异常堆栈跟踪简单实现

转载请说明出处:http://blog.csdn.net/cywosp/article/details/25002201 在Linux中做C/C++开发经常会遇到一些不可预知的问题导致程序崩溃,同时崩溃后也没留下任何代码运行痕迹,因此,堆栈跟踪技术就显得非要重要了.本文将简单介绍Linux中C/C++程序运行时堆栈获取,首先来看backtrace系列函数--使用范围适合于没有安装GDB或者想要快速理清楚函数调用顺序的情况 ,头文件execinfo.h int backtrace (void **

【转】堆栈跟踪中收到一个UnhandledExceptionFilter调用时,如何查找问题异常堆栈

定义没有异常处理程序来处理引发的异常时调用UnhandledExceptionFilter函数.函数通常将异常传递到捕获并处理它所尝试的 Ntdll.dll 文件. 在某些情况下,在其中存在的进程内存快照,您可以看到一个线程持有的锁点的线程调用UnhandledExceptionFilter函数.在这些情况下,您可以按照本文来标识导致异常的 DLL 中的步骤. 通过使用 Windbg.exe 打开转储文件 下载并安装调试程序.若要下载调试程序,请访问下面的 Microsoft 网站:Micros

JVM中常用堆栈跟踪内建指令

在使用Java的程序中难免会遇上程序异常的现象,此时就可以使用JDK下的jstack和jmap来跟踪观察JVM中的内存堆栈信息用以分析,不过注意的是如果是在windows版本或者是开源版中一般都是没有的,如果需要使用需要安装相应的开发调试工具,下面就简单的说一说: jstack 一般而言之后跟着都是Java程序运行的pid或者是相应的Java代码文件,如:jstack $pid,平时可以把相关的堆栈信息再导出到某一个文件中正用以进一步观察,如:jstack $pid > file.dump jm

GDB堆栈跟踪与汇编调试

GDB堆栈跟踪与汇编调试 分析过程 ?使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编 出现错误:fatal error 这时需要下载安装库文件 命令:sudo apt-get install libc6-dev-i386 之后再进行一次操作就可以产生汇编了 ?使用gdb gdb1指令打开gdb调试器 ?使用break main指令在main函数处设置断点,并记得先用r指令运行代码,可以看到运行时在main函数位置停了下来,否则会出现如图的

thinkphp显示跟踪信息

1 //显示跟踪信息 2 'SHOW_PAGE_TRACE' => 'true'

Android 调用堆栈跟踪

Android开发中,我们也会经常遇到段错误,也就是SIGSEGV(11),这个时候libc的backtrace会打印出对应的堆栈信 息,而你看到的仅仅是一对数字,好像无从查起. 如下面这一从串断错误: ActivityManager( 1105): Displayed activity com.android.browser/.BrowserActivity: 2460 ms (total 2460 ms)I/DEBUG   (13002): *** *** *** *** *** *** *

javap 命令查看堆栈中信息

javap命令是对.java文件进行反编译,通过这个命令可以看到堆栈中是怎么压栈和出栈的已经执行顺序,这里简单解释下javap的简单的使用,下面举个例子: 题目:i++ 和++i的区别 解释:简单点说 这个问题都不难回答,这里就不说了,但是实际上堆栈中区别也是老大了(这里就用到了javap命令), 步骤: 1.在任意一个盘下面建一个名为Test.java的文件(文件名可以随意命名)代码如下: public class Test { public static void main(String[]

获取方法调度堆栈的信息

java在允许期间可以通过Throwable类来获取方法调用堆栈信息: 部分方法如下: Throwable e = new Throwable(); StackTraceElement[] stacks = e.getStackTrace(); if(stacks != null){ for(int i=0;i<stacks.length;i++){ System.out.println(stacks[i].getClassName()); System.out.println(stacks[i

圆通快递单号查询接口物流路由跟踪信息快递鸟api对接教程

看完快递鸟api对接教程这篇文章,然后把源码复制到你的项目上,就能快速完成圆通快递接口对接.更适合刚入门的菜鸟,调用快递鸟的圆通快递查询API接口,能查询到圆通快递单号从收件.运输,到转运中心,派送到签收等各个环节的物流发货状态.快递鸟api接口不区分开发语言,支持Java,C#,PHP,Python,ObjectC等开发语言的程序调用.下面具体讲解实现过程. 1.完成前期准备工作 1.1,去快递鸟官网免费注册一个账号 1.2,免费获得一个apiKey(接口权限验证需要), 获取用户ID和Api