introduction.html revision b9cc48a43ed984587c939d02fba5316bf5c0df6e
1<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html> 3<head> 4<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 5<meta http-equiv="content-style-type" content="text/css"> 6<link rel="stylesheet" type="text/css" href="/style.css"> 7<title>ReTrace Introduction</title> 8<script type="text/javascript" language="JavaScript"> 9<!-- 10if (window.self==window.top) 11 window.top.location.replace("/index.html#"+window.location.pathname+window.location.hash); 12else { 13 var hash="#"+window.location.pathname.replace(window.top.location.pathname.replace("index.html", ""), ""); 14 if (window.top.location.hash!=hash) 15 window.top.location.hash=hash; 16} 17//--> 18</script> 19</head> 20<body> 21 22<h2>Introduction</h2> 23 24<b>ReTrace</b> is a companion tool for <b>ProGuard</b> that 'de-obfuscates' 25stack traces. 26<p> 27When an obfuscated program throws an exception, the resulting stack trace 28typically isn't very informative. Class names and method names have been 29replaced by short meaningless strings. Source file names and line numbers are 30missing altogether. While this may be intentional, it can also be inconvenient 31when debugging problems. 32<p> 33 34<table class="diagram" align="center"> 35 36<tr> 37<td rowspan="1" class="lightblock">Original code</td> 38<td class="transparentblock">- <b>ProGuard</b> →</td> 39<td rowspan="1" class="lightblock">Obfuscated code</td> 40</tr> 41 42<tr> 43<td rowspan="3" class="transparentblock"></td> 44<td class="transparentblock">↓</td> 45<td class="transparentblock">↓</td> 46</tr> 47 48<tr> 49<td class="whiteblock">Mapping file</td> 50<td class="transparentblock">↓</td> 51</tr> 52 53<tr> 54<td class="transparentblock">↓</td> 55<td class="transparentblock">↓</td> 56</tr> 57 58<tr> 59<td class="whiteblock">Readable stack trace</td> 60<td class="transparentblock">← <b>ReTrace</b> -</td> 61<td class="whiteblock">Obfuscated stack trace</td> 62</tr> 63 64</table> 65<p> 66ReTrace can read an obfuscated stack trace and restore it to what it would 67look like without obfuscation. The restoration is based on the mapping file 68that ProGuard can write out during obfuscation. The mapping file links the 69original class names and class member names to their obfuscated names. 70 71<hr /> 72<noscript><div><a target="_top" href="/index.html" class="button">Show menu</a></div></noscript> 73<address> 74Copyright © 2002-2013 75<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a>. 76</address> 77</body> 78</html> 79 80