介绍
代码混淆时android反编译的常用方法,android SDK提供了Proguard工具,路径是
ANDROID_SDK_HOME/tools/proguard
命令行在ANDROID_SDK_HOME/tools/proguard/bin下,而实际的执行代码路径为ANDROID_SDK_HOME/tools/proguard/lib
apk经过混淆后,在闪退时只要有mapping文件,可以通过retrace工具恢复。SDK提供的retrace命令如下:
java -jar retrace.jar [options...] mapping_file [stacktrace_file]
例如下面的崩溃堆栈
08-24 00:39:08.406 31542 31542 I QarthLog: [PatchStore] create disable file for com.lucky.bamboo uid is 10185
--------- beginning of crash
08-24 00:39:08.407 31542 31542 E AndroidRuntime: FATAL EXCEPTION: main
08-24 00:39:08.407 31542 31542 E AndroidRuntime: Process: com.lucky.bamboo, PID: 31542
08-24 00:39:08.407 31542 31542 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lucky.bamboo/com.lucky.bamboo.MainActivity}: java.lang.ArithmeticException: divide by zero
08-24 00:39:08.407 31542 31542 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3895)
08-24 00:39:08.407 31542 31542 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4074)
08-24 00:39:08.407 31542 31542 E AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
08-24 00:39:08.407 31542 31542 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
08-24 00:39:08.407 31542 31542 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.ex