|
Authored by: gdeinsta on Sunday, May 13 2012 @ 03:06 PM EDT |
I don't recall. [ Reply to This | Parent | # ]
|
- for sure - Authored by: Anonymous on Sunday, May 13 2012 @ 03:10 PM EDT
- for sure - Authored by: Anonymous on Sunday, May 13 2012 @ 03:14 PM EDT
- for sure - Authored by: Anonymous on Sunday, May 13 2012 @ 03:17 PM EDT
|
Authored by: jbb on Sunday, May 13 2012 @ 04:06 PM EDT |
Advanced
obfuscation techniques for Java bytecode:
In order to achieve
platform independence, instead of the traditional memory addresses, Java uses
symbolic references to link entities from different libraries (including the
standard and proprietary libraries). Therefore, the names of types, fields, and
methods are stored in a constant pool within a bytecode file (Engel,
1999; Lindholm and Yellin, 1999;
Meyer and Downing, 1997; Venners, 1998).
These
names and the simple stack-machine instructions facilitate the
decompilation of the bytecode file.
Practical Java Game programming:
After a class has been
loaded and verified, an implementation of a VM may choose to resolve its
symbolic references.
I believe you are correct that the symbols
are not stored in the instructions. Instead, they are stored in data space and
the instructions only contain a fixed-length offset into that data space. The
same is true for strings such as "Hello World".
If you restrict the
definition of "Java bytecode" to mean just the bytecode instructions themselves
then, yes, there are no literal strings there, only indexes to strings. But if
you use "Java bytecode" to mean the entire bytecode output of the Java compiler
(.class files) then strings and symbols are included. The
dx tool converts .class files to .dex files so the symbols do exist in the
input to dx.
IIUC, the symbol strings are there in the .class files but in
the optimization phase of the dx tool under discussion, Google does not actually
make use of them.
--- Our job is to remind ourselves that there are
more contexts
than the one we’re in now — the one that we think is reality.
-- Alan Kay [ Reply to This | Parent | # ]
|
|
|
|
|