equals("qcvw|uyl"));
}
}
The quality of the decompilation is quite good. There are only a few minor differences
in the recovered code. First, we see the addition of a default constructor not present
in the original but added during the compilation process.
NOTE In object-oriented programming languages, object data types generally
contain a special function called a constructor. Constructors are invoked each
time an object is created in order to initialize each new object. A default
constructor is one that takes no parameters. When a programmer fails to
define any constructors for declared objects, compilers generally generate a single default
constructor that performs no initialization.
Second, note that we have lost all local variable names and that JReversePro has generated
its own names according to variable types. JReversePro is able to fully recover
class names and function names, which helps to make the code very readable. If the class
had contained any class variables, JReversePro would have been able to recover their
original names as well. It is possible to recover so much data from Java files because of
the amount of information stored in each class file. This information includes items
Chapter 12: Passive Analysis
291
PART IV
such as class names, function names, function return types, and function parameter signatures.
Pages:
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529