![]() |
Frequently Asked Questions about SourceAgain - Updated 12/09/01 |
Q. What happens when Ahpah releases a small bug fix?
A. The username and password
that you get for our secure site will be good forever. You can
connect to our site and get the latest version of SourceAgain at any
time. We will send mail when a minor update is released.
Q. What's the real difference
between SourceAgain Professional and SourceAgain Personal?
A. SourceAgain Professional
creates classfiles with debugging information, so you can use the
classfiles in a debugger without recompiling.
Q. How do I save the output of
SourceAgain in a file?
A. Simply use your shell's
redirection capabilities. Try executing the command
srcagain foo.class > foo.javawhere foo.class is the name of your class file. This should create a file foo.java with the output of SourceAgain in it.
Q. How do I save the output of
SourceAgain to the clipboard?
A. On Windows NT, you can select
the output in the DOS window, and right-click on it to send it to the
clipboard. On UNIX, simply select the output with
your mouse, and it goes to the clipboard automatically.
A better solution is to redirect the output to a file (as in the previous answer), and open that file in your favorite text editor.
Q. Why isn't the output of
SourceAgain identical to my original Java code? I thought SourceAgain
reconstructed my Java perfectly.
A. SourceAgain produces
equivalent Java code. We make every effort to make our output as
close to "natural" Java as possible, but it is impossible to perfectly
reconstruct your input for many reasons:
while(true) { if (a) statement; else if (b) statement; else if (c) statement; }A "dumb" compiler might generate a single backwards jump at the bottom of the infinite loop, and have all the "else" clauses branch down to that jump. However, smarter compilers might "patch" this jump through, and branch right back to the beginning of the loop. To our flow analysis, this looks just like a series of nested loops. Although we special case the above construct because it appears frequently (when, say, processing command line arguments), there are certainly other constructs that are equivalent, and we must choose one.
Q. What's with this command line
interface? I haven't used my DOS shell in years.
A. We chose to implement
SourceAgain Personal as a command line tool for a few reasons.
First, it greatly enhances the portability of SourceAgain.
SourceAgain runs on any flavor of UNIX, and Windows NT/95. In
addition, we felt that the imposition of a user interface on top of
what is essentially a text tool was superfluous.
Also, SourceAgain Professional and UNIX produce source code and classfiles that interoperate with popular IDEs. This is the result of SourceAgain Professional/UNIX producing cross platform debugging information.
Q. I'm using a Java development
environment that you don't mention on your products page. Can I still use SourceAgain
Professional?
A. Yes, but in a slightly less
integrated way. SourceAgain Professional is able to generate the
crucial debug table information for your classes from the command
line as well as from supported IDEs. Therefore, you can simply
decompile the class you want to debug, and make sure that the
directory in which SourceAgain Professional is placing its output
appears early in your CLASSPATH. This is essentially what the
plugin does automatically. Then, you should be able to step in to
the newly debuggable class file in any environment. Documentation
on this process is available with SourceAgain Professional.
Q. The class file I want to
decompile is behind a firewall. Can I still use your online demo on
it?
A. Unfortunately, no. Our demo
needs to access the class file you specify in the URL from our web
server. If you are behind a firewall, that is not possible. One
possible solution to this problem is to put the class file temporarily
somewhere outside the firewall, and point our demo at that outside
copy.
Q. I'm running
AIX/SunOS4/Open Edition/FreeBSD/OSF/VMS/Plan9/OS8/CPM.
Shouldn't you just be able to recompile your UNIX version for my UNIX
flavor du jour?
A. Yes. SourceAgain compiles
and runs on every system we've ever tested it on, without a problem. However, due to limited resources, we cannot maintain
and update versions for flavors of UNIX we do not own. If you would
like to donate a machine for us to do builds on, we will be happy to
support your favorite platform.
Q. What does SourceAgain do with
inner or anonymous classes?
A. SourceAgain will decompile
inner or anonymous classes at their correct position in the source
file. Of course, since these inner classes are in separate
.class
files, all inner .class
files will
have to be in your CLASSPATH. SourceAgain also has an option to
decompile inner classes as regular "outer" classes.
Q. Your decompiler defeated my
obfuscator. I'm sick of these name-manglers that don't protect my
code. Where can I get an obfuscator that makes reconstructing
equivalent code as hard as, say, breaking RSA?
A. After years of research we
determined that this was simply not possible.
Q. Are you hiring?
,
A. No, not at this time
Do you still have a question that we did not answer? Send mail to
info@ahpah.com and we'll get back
to you with an answer.
[Home] [Company Info] [Products] [Sales] [Support]
©2004 Ahpah Software, Inc.
info@ahpah.com