No subject
Thu Nov 5 14:38:21 CET 2009
The success of decompilation depends on the amount of information
present in the code being decompiled and the sophistication of the
analysis performed on it. The bytecode formats used by many virtual
machines (such as the Java Virtual Machine or the .NET Framework
Common Language Runtime) often include extensive metadata and
high-level features that make decompilation quite feasible. The
presence of debug data can make it possible to reproduce the original
variable and structure names and even the line numbers. Machine
language without such metadata or debug data is much harder to
decompile.
Of course, since humans are generally capable of discovering
information, they can guess how program works; but it is a hard task
even for a person who have necessary knowledge - much harder than
reading a Chinese book for somebody knowing Chinese. For example, many
binary file formats are still not completely decoded; Wine still doesn't
support all Windows programs; there are devices which don't have free
firmware or drivers (one important example is video cards).
So, program binaries is not "human readable" because even most skilled
human beings have practical difficulties reading it; while person
knowing Chinese usually has no problem reading Chinese books.
--
Fedor.
More information about the pp.international.general
mailing list