1. 程式人生 > >使用Retrace還原被ProGuard混淆後的崩潰堆疊

使用Retrace還原被ProGuard混淆後的崩潰堆疊

AndroidSDK的tools中提供了混淆和還原的jar檔案,當然也可以直接下載ProGuard相關的jar:

命令列使用比較簡單,參照提示即可,但是如何在通過程式碼呼叫呢?如下所示,需要注意的是execute()執行後,需要通過如下方式將標準輸出寫到檔案中。

import java.io.File;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import proguard.retrace.ReTrace;

public class RetraceUtil {
	private Logger m_logger = LoggerFactory.getLogger(this.getClass());
	
	private String stackFile;
	private String mapFile;
	private String outFile;
	private boolean append;
	
	public RetraceUtil(String map,String proF,String out,boolean append)
	{
		this.mapFile = map;
		this.stackFile = proF;
		this.outFile = out;
		this.append = append;
		myReTrace();
	}
	
	public void myReTrace() 
	{
		 try {
			File file = new File(this.outFile);
			//是否增量寫入
			FileOutputStream fis = new FileOutputStream(file,this.append);
			PrintStream out = new PrintStream(fis);
//			sysout的print內容輸出到檔案
			System.setOut(out);
			ReTrace localReTrace = new ReTrace(ReTrace.STACK_TRACE_EXPRESSION, true, new File(this.mapFile), new File(this.stackFile));
			localReTrace.execute();
			out.close();
			fis.close();
			m_logger.info("Retrace Done!");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			m_logger.error("Retrace Erro:");
			m_logger.error(e.getMessage());
		}
	}




相關推薦

使用Retrace還原ProGuard混淆崩潰堆疊

AndroidSDK的tools中提供了混淆和還原的jar檔案,當然也可以直接下載ProGuard相關的jar: 命令列使用比較簡單,參照提示即可,但是如何在通過程式碼呼叫呢?如下所示,需要注意的是

mysql刪庫還原

模擬誤刪除的恢復操作 假裝置份時間是晚上12點,有人誤操作刪庫時間是早上10點,刪庫後拯救資料庫。 改時間 date -s "2017-12-24 00:00" 模擬備份: mysqldump -uroot -pqb123 -S /data/330

Android混淆程式碼錯誤堆疊還原

前言 相信做過app的同學對程式碼混淆應該不陌生吧,如果陌生就自行百度,這裡不做普及。我們先思考一個問題,如果我們把程式碼混淆了,如果出錯了怎麼定位問題?答案非常簡單,只要稍微實踐下你就明白了,下面就是給你整理的對混淆程式碼錯誤堆疊還原的方法。 如何混淆

java防止反編譯之proguard混淆代碼

proguard 混淆、jar proguard5.3下載地址:http://down.51cto.com/data/2316123從eclipse中導出工程的jar包(這個就不詳細說了)安裝proguard後打開bin目錄下的proguardgui.bat啟動proguard如下圖所示:點擊Inpu

回收站清空怎麽才能恢復數據 回收站清空恢復

回收站作為電腦上的必備軟件,深受人們喜愛,因為它可以放置人們暫時不用的軟件或是一些文件,當再次需要的時候,再去回收站中將它還原出來。要是我們不小心將回收站清空了,我們可以借助互盾回收站清空恢復軟件,找回回收站中的文件。 第一步:搜索“互盾回收站清空恢復軟件”,將軟件下載安裝至電腦上,運行該軟件,

Eclipse打包Android項目時用到proguard.cfg,出現的Warning:can't find referenced class問題的解決方式

引入 能夠 nbsp 路徑 方法 ont span rar font Warning: can‘t find superclass or interface Warning: can‘t find referenced class 這兩個問題的解決方法:

勝敗有憑---項目領導肯定感言

使用 一個人 移動端 內容 接口 發的 找工作 滿足 項目   最近在做一個移動端的項目時,因為在限定時間裏,超預期完成任務,被領導叫到辦公室裏坐談鼓勵,也由此想總結一下這個項目為何能順利的超預期完成,以便以後的項目借鑒。   在這裏先講兩個小故事:   小故事1:說一

Linux虛擬機的glibc卸載,無法進入系統的解決方法

play xxxxxx spl mnt 強制 volume 本地 glibc nload 1. 用Linux啟動光盤或u盤引導系統,進入控制臺界面 2. 掛載glibc被卸載的硬盤,假定在/dev/sda2. 如果是LVM2的文件系統, 需要找到邏輯卷的名稱並激活;普通情

ProGuard 混淆規則整理

filters 構造函數 ati 函數 tar 解析 enum 程序 跟蹤 說明:本文參考(翻譯)自Android SDK根目錄下的proguard目錄下的說明文檔,是其中的一篇。,文中除了翻譯外加了一些作者的實際驗證。文章對Android混淆規則做一個解釋說明。作者才疏

在另一臺服務器上還原誤刪的 MySQL 數據

values value select mysql quic table flush 最近的備份 put 數據庫備份語句 mysqldump -S /tmp/mysql3309.sock -u root -pMySQL8.0 --single-transaction --q

Android中在app系統釋放,重新回到前臺時,重建Activity出現Fragment重疊現象

android 開發中Frgment應用場景非常廣泛,應用Fragment是必須使用FragmentActivity,有時候會出現這樣一種情況,在應用退到後臺後,系統會在記憶體不足時將應用回收掉,再次啟動應用會出現Activity中的Fragment重疊現象,其實出現問題的原因是這樣的,

修復IIS:因ApplicationHost.config破壞導致的崩潰

錯誤描述  有時候我們必須手動或用指令碼修改applicationHost.config來滿足我們的一些需求。這就存在破壞applicationHost.config的風險。而一旦applicationHost.config被破壞,IIS就會崩潰。即時我們後來修復了applicati

《PHP程式設計師面試筆試寶典》——在企業拒絕是否可以再申請?

如何巧妙地回答面試官的問題? 本文摘自《PHP程式設計師面試筆試寶典》 很多企業為了能夠在一年一度的招聘季節中,提前將優秀的程式設計師鎖定到自己的麾下,往往會先下手為強。他們通常採取的措施有兩種:一是招聘實習生;二是多輪招聘。很多人可能會擔心,萬一面試時發揮不好,沒被企業選中,會不會被企業接入黑名單,從此

解決Android簽名混淆WebView與JS互動失效的問題

最近做了個網頁端微信支付的小功能,測試版還好好的,混淆打包後,寫的方法webview無法呼叫,意識到混淆除了問題,於是在網上找了一些大神的解決方案,再根據自己的實際解決過程,列出來一個完整的解決方法。 Android4.2以上版本呼叫js介面需要在方法使用宣告@JavascriptInterfa

Unity2017啟動崩潰的問題

1.定位問題 Unity崩潰後會記錄下crash的日誌,放在c盤目錄editor.log文字,記錄了它崩潰的原因(editor.log的檔案路徑為C:\Users\xxx使用者名稱\AppData\Local\Unity\Editor) FMOD failed to ge

如何解決超連結點選hover樣式不出現問題

解析: 當超連結被點選後,經常會出現hover樣式效果不顯示的問題。解決這個問題其實很簡單,只要對超連結的樣式屬性進行正確的排序即可。 排列順序如下: link -> visited -> hover ->action 參考設定: a:link{

去嫖娼抓了又放了

在朋友的慫恿下,終於去了一次傳說中的大保健,心裡忐忑擔心萬一被抓了,被老婆孩子知道了咋辦,被單位同事知道了咋辦,被父母親友知道了咋辦,給家族蒙羞,我還怎麼混,還沒容我思考完這些問題,就要準備開始進入程序了。。 突然,門打開了!“警察,雙手抱頭蹲下!”,我潛意識想“完了!

Javascript 混淆解碼原理

0x00 前言 Javascript 作為一種執行在客戶端的指令碼語言,其原始碼對使用者來說是完全可見的。但不是每一個 js 開發者都希望自己的程式碼能被直接閱讀,比如惡意軟體的製造者們。為了增加程式碼分析的難度,混淆(obfuscate)工具被應用到了許多惡意軟體(如 0day 掛馬、跨站

專案混淆gson不能正常工作

gson被混餚後其對應的bean類的param都變成了a,b,c,d。導致GSON的key無法找到對應的例項。 解決方法:應該在混淆檔案中過濾例項(bean),這樣就不會影響GSON的key去尋找對應的例項,從而達到我們需要的效果 步驟:開啟混淆檔案.pro ,新增如下幾

maven+proguard混淆

混淆好處:程式碼難以閱讀,反編譯,proguard混淆程式碼.class檔案 專案用的springBoot-2.0.4版本,proguard得用6.0.3版本,不然會報錯,在pom.xml檔案新增混淆外掛 <plugin> <!-- progua