obfuscation definition
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 616
Objective Modula-2 1.00 (Language Definition)
Objective Modula-2 programming language is a hybrid between Smalltalk and Modula-2. more>>
Objective Modula-2 programming language is a hybrid between Smalltalk and Modula-2 based on the object model and runtime of Objective-C.
The design is an example how native Cocoa/GNUstep support can be added to static imperative programming languages without implementing a bridge.
The projects scope encompasses the design of the Objective Modula-2 programming language and the implementation of a compiler to implement it. The initial compiler will generate Objective-C source code.
<<lessThe design is an example how native Cocoa/GNUstep support can be added to static imperative programming languages without implementing a bridge.
The projects scope encompasses the design of the Objective Modula-2 programming language and the implementation of a compiler to implement it. The initial compiler will generate Objective-C source code.
Download (0.23MB)
Added: 2007-07-21 License: (FDL) GNU Free Documentation License Price:
516 downloads
AVG Anti-Virus Definitions 270.12.94
AVG Anti-Virus Definitions are virus definitions for AVG Anti-Virus software. more>> AVG Anti-Virus Definitions 270.12.94 are an informative and useful software which contains virus definitions for AVG Anti-Virus
About AVG Anti-Virus:
- AVG Professional Single Edition is perfectly designed to give you the maximum antivirus protection for your single home PC or workstation.
- It is simple to install and operate. No IT expertise is required and it can run in the background, providing uninterrupted protection. All file and e-mail activity is checked automatically, allowing you to get on with your work without worrying about viruses.
- It is extremely fast, reliable and light on resources, so, no matter how demanding a user you are, it will not slow down your performance.
Enhancements: Added detection of new variants of trojans SHeur2.ANNO, BackDoor.Hupigon5.LCW, SHeur2.ANOR, Downloader.Generic8.AXOI, PSW.Banker5.ONF, Generic13.BPUS.
Added: 2009-06-29 License: Freeware Price: FREE
21 downloads
Other version of AVG Anti-Virus Definitions
Price: FREE
License:Freeware
License:Freeware
License:Freeware
B::Deobfuscate 0.18
B::Deobfuscate Perl module contains the deobfuscate source code. more>>
B::Deobfuscate Perl module contains the deobfuscate source code.
SYNOPSIS
perl -MO=Deobfuscate,-csynthetic.yml,-y synthetic.pl
B::Deobfuscate is a backend module for the Perl compiler that generates perl source code, based on the internal compiled structure that perl itself creates after parsing a program. It adds symbol renaming functions to the B::Deparse module. An obfuscated program is already parsed and interpreted correctly by the B::Deparse program. Unfortunately, if the obfuscation involved variable renaming then the resulting program also has obfuscated symbols.
This module takes the last step and fixes names like $z5223ed336 to be a word from a dictionary. While the name still isnt meaningful it is at least easier to distinguish and read. Here are two examples - one from B::Deparse and one from B::Deobfuscate.
Initial input
if(@z6a703c020a){(my($z5a5fa8125d,$zcc158ad3e0)=File::Temp::tempfile(
UNLINK,1));print($z5a5fa8125d "=over 8nn");(print($z5a5fa8125d
@z6a703c020a)or die(((("Cant print $zcc158ad3e0: $!"))); print($z5a5fa8125d
"=backn");(close(*$z5a5fa8125d)or die(((("Cant close ".*$za5fa8125d.": $!")
));(@z8374cc586e=$zcc158ad3e0);($z9e5935eea4=1);}
After B::Deparse:
if (@z6a703c020a) {
(my($z5a5fa8125d, $zcc158ad3e0) = File::Temp::tempfile(UNLINK, 1));
print($z5a5fa8125d "=over 8nn");
(print($z5a5fa8125d @z6a703c020a)
or die((((q[Cant print ] . $zcc158ad3e0) . : ) . $!)));
print($z5a5fa8125d "=backn");
(close(*$z5a5fa8125d)
or die((((q[Cant close ] . *$za5fa8125d) . : . $!)));
(@z8374cc586e = $zcc158ad3e0);
($z9e5935eea4 = 1);
}
After B::Deobfuscate:
if (@parenthesises) {
(my($scrupulousity, $postprocesser) = File::Temp::tempfile(UNLINK, 1));
print($scrupulousity "=over 8nn");
(print($scrupulousity @parenthesises)
or die((((q[Cant print ] . $postprocesser) . : ) . $!)));
print($scrupulousity "=backn");
(close(*$scrupulousity)
or die((((q[Cant close ] . *$postprocesser) . : ) . $!)));
(@interruptable = $postprocesser);
($propagandaist = 1);
}
Youll note that the only real difference is that instead of variable names like $z9e5935eea4 you get $propagandist.
<<lessSYNOPSIS
perl -MO=Deobfuscate,-csynthetic.yml,-y synthetic.pl
B::Deobfuscate is a backend module for the Perl compiler that generates perl source code, based on the internal compiled structure that perl itself creates after parsing a program. It adds symbol renaming functions to the B::Deparse module. An obfuscated program is already parsed and interpreted correctly by the B::Deparse program. Unfortunately, if the obfuscation involved variable renaming then the resulting program also has obfuscated symbols.
This module takes the last step and fixes names like $z5223ed336 to be a word from a dictionary. While the name still isnt meaningful it is at least easier to distinguish and read. Here are two examples - one from B::Deparse and one from B::Deobfuscate.
Initial input
if(@z6a703c020a){(my($z5a5fa8125d,$zcc158ad3e0)=File::Temp::tempfile(
UNLINK,1));print($z5a5fa8125d "=over 8nn");(print($z5a5fa8125d
@z6a703c020a)or die(((("Cant print $zcc158ad3e0: $!"))); print($z5a5fa8125d
"=backn");(close(*$z5a5fa8125d)or die(((("Cant close ".*$za5fa8125d.": $!")
));(@z8374cc586e=$zcc158ad3e0);($z9e5935eea4=1);}
After B::Deparse:
if (@z6a703c020a) {
(my($z5a5fa8125d, $zcc158ad3e0) = File::Temp::tempfile(UNLINK, 1));
print($z5a5fa8125d "=over 8nn");
(print($z5a5fa8125d @z6a703c020a)
or die((((q[Cant print ] . $zcc158ad3e0) . : ) . $!)));
print($z5a5fa8125d "=backn");
(close(*$z5a5fa8125d)
or die((((q[Cant close ] . *$za5fa8125d) . : . $!)));
(@z8374cc586e = $zcc158ad3e0);
($z9e5935eea4 = 1);
}
After B::Deobfuscate:
if (@parenthesises) {
(my($scrupulousity, $postprocesser) = File::Temp::tempfile(UNLINK, 1));
print($scrupulousity "=over 8nn");
(print($scrupulousity @parenthesises)
or die((((q[Cant print ] . $postprocesser) . : ) . $!)));
print($scrupulousity "=backn");
(close(*$scrupulousity)
or die((((q[Cant close ] . *$postprocesser) . : ) . $!)));
(@interruptable = $postprocesser);
($propagandaist = 1);
}
Youll note that the only real difference is that instead of variable names like $z9e5935eea4 you get $propagandist.
Download (0.017MB)
Added: 2007-06-26 License: Perl Artistic License Price:
854 downloads
Curses::Application 0.2
Curses::Application provides the Curses Application Framework. more>>
Curses::Application provides the Curses Application Framework.
Curses::Application attempts to relieve the programmer of having to deal directly with Curses at all. Based upon Curses::Widgets and Curses::Forms, all one should have to do is define the application forms and contents in the DATA block of a script. Curses::Application will take care of the rest.
This module follows many of the conventions established by the Curses::Widgets and Curses::Forms modules, being built upon that framework. One area of special note, however, is the declaration of forms used within the application.
Curses::Application differentiates between forms and form definitions. A form is an instance of any particular form definition. Keeping that line of separation simplifies the development of MDI (Multiple Document Interface) applications.
Form definitions can be provided in two ways: as a list of definitions in the main::DATA block, or individually by using the addFormDef method. The former would normally be the simplest way to do so.
At the end of your script, declare a DATA block using Perls __DATA__ token. In that DATA block place a hash declaration (%forms) which contains a key/value pair for each form definition. The key being the name of the definition, and the value being a hash reference to the form declarations (see the Curses::Forms pod for directives available to that module). The only extra key that should be in each forms hash reference should be a TYPE directive, which would point to a module name relative to the base Curses::Forms class. If you omit this key, then it will be assumed that the form is a Curses::Forms object, or some custom derivative as specified in ALTPATH.
<<lessCurses::Application attempts to relieve the programmer of having to deal directly with Curses at all. Based upon Curses::Widgets and Curses::Forms, all one should have to do is define the application forms and contents in the DATA block of a script. Curses::Application will take care of the rest.
This module follows many of the conventions established by the Curses::Widgets and Curses::Forms modules, being built upon that framework. One area of special note, however, is the declaration of forms used within the application.
Curses::Application differentiates between forms and form definitions. A form is an instance of any particular form definition. Keeping that line of separation simplifies the development of MDI (Multiple Document Interface) applications.
Form definitions can be provided in two ways: as a list of definitions in the main::DATA block, or individually by using the addFormDef method. The former would normally be the simplest way to do so.
At the end of your script, declare a DATA block using Perls __DATA__ token. In that DATA block place a hash declaration (%forms) which contains a key/value pair for each form definition. The key being the name of the definition, and the value being a hash reference to the form declarations (see the Curses::Forms pod for directives available to that module). The only extra key that should be in each forms hash reference should be a TYPE directive, which would point to a module name relative to the base Curses::Forms class. If you omit this key, then it will be assumed that the form is a Curses::Forms object, or some custom derivative as specified in ALTPATH.
Download (0.017MB)
Added: 2007-03-29 License: Perl Artistic License Price:
940 downloads
Speegle Define 1.1
Speegle Define is a Firefox extension that gives a spoken definition of a word using Speegle Speech Technology. more>>
Speegle Define is a Firefox extension that gives a spoken definition of a word using Speegle Speech Technology. You highlight the word you would like explained with highlight left click on any internet page you are reading.
Right click and choose "Audio Definition" from the pop up menu and its definition will be read back to you in English through your speakers or headphones.
<<lessRight click and choose "Audio Definition" from the pop up menu and its definition will be read back to you in English through your speakers or headphones.
Download (0.004MB)
Added: 2007-06-02 License: MPL (Mozilla Public License) Price:
874 downloads
Data::ICal::Entry::TimeZone 0.12
Data::ICal::Entry::TimeZone is a Perl module to represents a time zone definition in an iCalendar file. more>>
Data::ICal::Entry::TimeZone is a Perl module to represents a time zone definition in an iCalendar file.
SYNOPSIS
my $vtimezone = Data::ICal::Entry::TimeZone->new();
$vtimezone->add_properties(
tzid => "US-Eastern",
tzurl => "http://zones.stds_r_us.net/tz/US-Eastern"
);
$vtimezone->add_entry($daylight); # daylight/ standard not yet implemented
$vtimezone->add_entry($standard); # :-(
$calendar->add_entry($vtimezone);
A Data::ICal::Entry::TimeZone object represents the declaration of a time zone in an iCalendar file. (Note that the iCalendar RFC refers to entries as "components".) It is a subclass of Data::ICal::Entry and accepts all of its methods.
This module is not yet useful, because every time zone declaration needs to contain at least one STANDARD or DAYLIGHT component, and these have not yet been implemented.
<<lessSYNOPSIS
my $vtimezone = Data::ICal::Entry::TimeZone->new();
$vtimezone->add_properties(
tzid => "US-Eastern",
tzurl => "http://zones.stds_r_us.net/tz/US-Eastern"
);
$vtimezone->add_entry($daylight); # daylight/ standard not yet implemented
$vtimezone->add_entry($standard); # :-(
$calendar->add_entry($vtimezone);
A Data::ICal::Entry::TimeZone object represents the declaration of a time zone in an iCalendar file. (Note that the iCalendar RFC refers to entries as "components".) It is a subclass of Data::ICal::Entry and accepts all of its methods.
This module is not yet useful, because every time zone declaration needs to contain at least one STANDARD or DAYLIGHT component, and these have not yet been implemented.
Download (0.10MB)
Added: 2007-01-15 License: Perl Artistic License Price:
1013 downloads
Bonita 3.0
Bonita is a flexible cooperative workflow system. more>>
Bonita is a flexible cooperative workflow system, compliant to WfMC specifications, based on the workflow model proposed by the ECOO Team, which incorporates the anticipation of activities as a more flexible mechanism of workflow execution.
Main features:
- A comprehensive set of integrated graphical tools for performing the process conception and definition, the instantiation and control of this process, and the interaction with the users and other applications
- 100% browser-based environment with Web Services integration that uses SOAP and XML Data binding technologies in order to encapsulate existing workflow business methods and publish them as a J2EE-based web services.
- A Third Generation Worflow engine based in the activity anticipation model. This flexibility allows a considerable increase of speed in the design and development phases of cooperative applications.
Enhancements:
- This version adds a fully integrated set of applications targeting graphical workflow definition, execution, administration, and monitoring.
- The following tools are part of this platform: Workflow Console, ProEd XPDL workflow editor, and xFormEditor.
<<lessMain features:
- A comprehensive set of integrated graphical tools for performing the process conception and definition, the instantiation and control of this process, and the interaction with the users and other applications
- 100% browser-based environment with Web Services integration that uses SOAP and XML Data binding technologies in order to encapsulate existing workflow business methods and publish them as a J2EE-based web services.
- A Third Generation Worflow engine based in the activity anticipation model. This flexibility allows a considerable increase of speed in the design and development phases of cooperative applications.
Enhancements:
- This version adds a fully integrated set of applications targeting graphical workflow definition, execution, administration, and monitoring.
- The following tools are part of this platform: Workflow Console, ProEd XPDL workflow editor, and xFormEditor.
Download (MB)
Added: 2007-02-26 License: LGPL (GNU Lesser General Public License) Price:
573 downloads
tinybind 0.1
tinybind is a library for serializing and deserializing C++ structs to XML. more>>
tinybind is an add-on library for the tinyxml XML parser that makes it easy to "bind" a C++ struct definition to an XML file format for easy serializing and deserializing. It supports nested structs and STL containers.
<<less Download (0.031MB)
Added: 2005-10-07 License: GPL (GNU General Public License) Price:
1478 downloads
Flatworm 1.2
Flatworm is a Java library intended to allow a developer to describe the format of a flat file using an XML definition file. more>>
Flatworm project is a Java library intended to allow a developer to describe the format of a flat file using an XML definition file, and then to be able to automatically read lines from that file, and have one or more beans be instantiated for each logical record.
There are a few powerful features in Flatworm worth mentioning. For one thing, a record may consist of one or more physical lines in the file. A record may contain more than one bean once decoded. A flat file may contain more than one type of record, and Flatworm can use line length and substring matching to determine which type of record a line begins.
Besides fielded buffer flat files, Flatworm also supports text files where the different fields are separated by a separator character, e.g. CSV (comma separated values) files.
Last but not least, Flatworm is able to produce flat files from beans and the same definition file.
<<lessThere are a few powerful features in Flatworm worth mentioning. For one thing, a record may consist of one or more physical lines in the file. A record may contain more than one bean once decoded. A flat file may contain more than one type of record, and Flatworm can use line length and substring matching to determine which type of record a line begins.
Besides fielded buffer flat files, Flatworm also supports text files where the different fields are separated by a separator character, e.g. CSV (comma separated values) files.
Last but not least, Flatworm is able to produce flat files from beans and the same definition file.
Download (0.044MB)
Added: 2007-08-07 License: LGPL (GNU Lesser General Public License) Price:
808 downloads
Word Inspector 0.1a
Word Inspector project is a GTK frontend to Dict dictionary program. more>>
Word Inspector project is a GTK frontend to Dict dictionary program.
The dict program allows you to search through one or more dictionary-like reference books for a word, then displays its definition.
Word Inspector expands that by allowing you to enter words to look up more easily, easily look up words that appear in the definition for another word, and automatically look up a word in the X Windows selection.
<<lessThe dict program allows you to search through one or more dictionary-like reference books for a word, then displays its definition.
Word Inspector expands that by allowing you to enter words to look up more easily, easily look up words that appear in the definition for another word, and automatically look up a word in the X Windows selection.
Download (0.054MB)
Added: 2006-10-31 License: GPL (GNU General Public License) Price:
1092 downloads
SJPT: Simple Java Parsing Toolkit
SJPT: Simple Java Parsing Toolkit is a simple Java parser toolkit. more>>
SJPT is parsing toolkit that supports both top-down (LL(1) and Simple Precedence) and bottom-up parsing (LR(0), SLR(1), LR(1) and LALR(1)).
The toolkit also supports generating Java parsers for all the bottom-up parsing methods, based on a CUP definition (similar to Yacc and CUP, but not restricted to LALR parsers only). I worked alone on this project for the laboratory on Compilers.
SJPT is free software under the terms of the GNU GPL.
<<lessThe toolkit also supports generating Java parsers for all the bottom-up parsing methods, based on a CUP definition (similar to Yacc and CUP, but not restricted to LALR parsers only). I worked alone on this project for the laboratory on Compilers.
SJPT is free software under the terms of the GNU GPL.
Download (0.26MB)
Added: 2005-04-22 License: GPL (GNU General Public License) Price:
1650 downloads
Geometry Description Markup Language 2.9.0
Geometry Description Markup Language workpackage is primarly ment to provide geometry data exchange format for the LCG apps. more>>
Geometry Description Markup Language (GDML) workpackage is primarly ment to provide geometry data exchange format for the LCG applications. The workpackage consists of the GDML Schema part, which is a fully self-consistent definition of the GDML syntax and the GDML I/O part which provides means for writing out and reading in GDML files.
The GDML Schema does not depend in any way on the GDML I/O packages. In particular, new extensions to the GDML I/O packages can be implemented (interfaces to new application, like for instance visualisation, editors, etc), while the GDML Schema definition remains unchanged.
Enhancements:
- The loop machinery was improved so that any volume can be used in a loop.
- An installation script was added along with support for auxiliary volume information.
- A SimpleExtension example that shows how to extend GDML with custom elements was added.
- The obsolete PyGDML package was removed.
<<lessThe GDML Schema does not depend in any way on the GDML I/O packages. In particular, new extensions to the GDML I/O packages can be implemented (interfaces to new application, like for instance visualisation, editors, etc), while the GDML Schema definition remains unchanged.
Enhancements:
- The loop machinery was improved so that any volume can be used in a loop.
- An installation script was added along with support for auxiliary volume information.
- A SimpleExtension example that shows how to extend GDML with custom elements was added.
- The obsolete PyGDML package was removed.
Download (2.6MB)
Added: 2007-03-17 License: GPL (GNU General Public License) Price:
954 downloads
Kate cppdevelop plugin 0.1.3
Kate cppdevelop plugin is a replacement of the katecppsymbolviewer plugin for Kate. more>>
Kate cppdevelop plugin is a replacement of the katecppsymbolviewer plugin for Kate. Kate cppdevelop plugin supports C ++, C, Perl autogeneration doxy document for element definition if the documentation exists that shows in the form of the help it is not required to pass to a line with definition of an element and search element match name
<<less Download (0.61MB)
Added: 2007-07-19 License: GPL (GNU General Public License) Price:
827 downloads
Physics::Lorentz::Transformation 0.01
Physics::Lorentz::Transformation Perl module contains representation of poincare transformations. more>>
Physics::Lorentz::Transformation Perl module contains representation of poincare transformations.
SYNOPSIS
use Physics::Lorentz;
my $rotation = Physics::Lorentz::Transformation->rotation_euler(
$alpha, $beta, $gamma
);
my $vector = Physics::Lorentz::Vector->new([$t, $x, $y, $z]);
my $rotated = $rotation->apply($vector);
# or: $rotated = $rotation * $vector;
...
This class represents a Poincare transformation. That is a proper or improper Lorentz transformation plus a shift by some 4-vector. (x = lamda*x + a)
Yes, the class name might be misleading, but honestly, when most non-physicists talk about Lorentz transformations, they mean Poincare transformations anyway. (Pun intended.)
To sum this up, the set of Poincare transformations contains, among others
Boosts
Rotations
Space Inversions / Parity
Time Inversion
Shifts by a constant vector
Combinations thereof
OVERLOADED INTERFACE
Stringification is overloaded with the stringify method.
Multiplication (*) is overloaded with the merge method for other transformations: $t3 = $t1 * $t2 corresponds to the following application on a vector: t1 * ( t2 * vec ). (I.e. t2 first, then t1) Of course, Poincare transformations do not commute!
The assignment form of multiplication is supported for merging transformations but its use is discouraged unless youre into obfuscation.
Multiplication is also overloaded for application to vectors, but only if the vector is on the right of the transformation: $t * $v is okay, but $v * $t is not.
<<lessSYNOPSIS
use Physics::Lorentz;
my $rotation = Physics::Lorentz::Transformation->rotation_euler(
$alpha, $beta, $gamma
);
my $vector = Physics::Lorentz::Vector->new([$t, $x, $y, $z]);
my $rotated = $rotation->apply($vector);
# or: $rotated = $rotation * $vector;
...
This class represents a Poincare transformation. That is a proper or improper Lorentz transformation plus a shift by some 4-vector. (x = lamda*x + a)
Yes, the class name might be misleading, but honestly, when most non-physicists talk about Lorentz transformations, they mean Poincare transformations anyway. (Pun intended.)
To sum this up, the set of Poincare transformations contains, among others
Boosts
Rotations
Space Inversions / Parity
Time Inversion
Shifts by a constant vector
Combinations thereof
OVERLOADED INTERFACE
Stringification is overloaded with the stringify method.
Multiplication (*) is overloaded with the merge method for other transformations: $t3 = $t1 * $t2 corresponds to the following application on a vector: t1 * ( t2 * vec ). (I.e. t2 first, then t1) Of course, Poincare transformations do not commute!
The assignment form of multiplication is supported for merging transformations but its use is discouraged unless youre into obfuscation.
Multiplication is also overloaded for application to vectors, but only if the vector is on the right of the transformation: $t * $v is okay, but $v * $t is not.
Download (0.011MB)
Added: 2007-07-30 License: Perl Artistic License Price:
820 downloads
ProGuard 3.9 / 4.0 Beta
ProGuard is a Java class file shrinker and obfuscator. more>>
ProGuard is a free Java class file shrinker, optimizer, and obfuscator. ProGuard project can detect and remove unused classes, fields, methods, and attributes. It can then optimize bytecode and remove unused instructions.
Finally, it can rename the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer.
More compact jar files also means smaller storage requirements, faster transfer of applications across networks, faster loading, and smaller memory footprints.
ProGuards main advantage compared to other Java obfuscators is probably its compact template-based configuration. A few intuitive command line options or a simple configuration file are usually sufficient. For instance, the following configuration option preserves all applets in a jar:
-keep public class * extends java.applet.Applet
The user manual explains all available options and shows more examples of this powerful configuration style.
ProGuard is fast. It only takes seconds to process programs and libraries of several megabytes. The results section presents actual figures for a number of applications.
ProGuard is a command-line tool with an optional graphical user interface. It also comes with plugins for Ant and for the J2ME Wireless Toolkit.
ProGuard is a Java class file shrinker, optimizer, and obfuscator. The shrinking step detects and removes unused classes, fields, methods, and attributes. The optimization step analyzes and optimizes the bytecode of the methods. The obfuscation step renames the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer.
ProGuard can also be used to list unused fields and methods in an application, and to print out the internal structure of class files.
ProGuard typically reads the input jars (or wars, ears, zips, or directories). It then shrinks, optimizes, and obfuscates them. It then writes the results to one or more output jars (or wars, ears, zips, or directories). The input jars can optionally contain resource files. ProGuard copies all non-class resource files from the input jars to the output jars. Their names and contents remain unchanged.
ProGuard requires the library jars (or wars, ears, zips, or directories) of the input jars to be specified. It can then reconstruct class hierarchies and other class dependencies, which are necessary for proper shrinking, optimization, and obfuscation. The library jars themselves always remain unchanged. You should still put them in the class path of your final application.
In order to determine which code has to be preserved and which code can be discarded or obfuscated, you have to specify one or more entry points to your code. These entry points are typically classes with main methods, applets, midlets, etc.
- In the shrinking step, ProGuard starts from these seeds and recursively determines which classes and class members are used. All other classes and class members are discarded.
- In the optimization step, ProGuard further optimizes the code. Among other optimizations, classes and methods that are not entry points can be made final, and some methods may be inlined.
- In the obfuscation step, ProGuard renames classes and class members that are not entry points. In this entire process, keeping the entry points ensures that they can still be accessed by their original names.
Any classes or class members of your code that are created or invoked dynamically (that is, by name) have to be specified as entry points too. It is generally impossible to determine these cases automatically, but ProGuard will offer some suggestions if keeping some classes or class members appears necessary. For proper results, you should at least be somewhat familiar with the code that you are processing.
ProGuard does handle Class.forName("SomeClass") and SomeClass.class constructs automatically. The referenced classes are preserved in the shrinking phase, and the string arguments are properly replaced in the obfuscation phase. With variable string arguments, it is generally impossible to determine their possible values (they might be read from a configuration file, for instance).
However, as mentioned, ProGuard will note constructs like "(SomeClass)Class.forName(variable).newInstance()". These might be an indication that the class or interface SomeClass and/or its implementations may need to be preserved. You can then adapt your configuration accordingly.
Whats New in 3.9 Stable Release:
- This release fixes a number of bugs.
- Notably, ".class" constructs compiled in Java 6 are now handled correctly.
- The optimization step now avoids a possible division by 0 and correctly processes local variables with indices larger than 255.
- The documentation and examples have been updated.
Whats New in 4.0 Beta Development Release:
- Added preverifier for Java 6 and Java Micro Edition, with new option -dontpreverify.
- Added new option -target to modify java version of processed class files.
- Made -keep options more orthogonal and flexible, with option modifiers allowshrinking, allowoptimization, and allowobfuscation.
- Added support for configuration by means of annotations.
- Improved shrinking of unused annotations.
- Added check on modification times of input and output, to avoid unnecessary processing, with new option -forceprocessing.
- Added new options -flattenpackagehierarchy and -repackageclasses (replacing -defaultpackage) to control obfuscation of packages names.
- Added new options -adaptresourcefilenames and -adaptresourcefilecontents, with file filters, to update resource files corresponding to obfuscated class names.
- Now respecting naming rule for nested class names (EnclosingClass$InnerClass) in obfuscation step, if InnerClasses attributes or EnclosingMethod attributes are being kept.
- Added new inter-procedural optimizations: method inlining and propagation of constant fields, constant arguments, and constant return values.
- Added optimized local variable allocation.
- Added over 250 new peephole optimizations.
- Improved making classes and class members public or protected.
- Now printing notes on suspiciously unkept classes in parameters of specified methods.
- Now printing notes for class names that dont seem to be fully qualified.
- Added support for uppercase filename extensions.
- Rewritten class file I/O code.
- Updated documentation and examples.
<<lessFinally, it can rename the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer.
More compact jar files also means smaller storage requirements, faster transfer of applications across networks, faster loading, and smaller memory footprints.
ProGuards main advantage compared to other Java obfuscators is probably its compact template-based configuration. A few intuitive command line options or a simple configuration file are usually sufficient. For instance, the following configuration option preserves all applets in a jar:
-keep public class * extends java.applet.Applet
The user manual explains all available options and shows more examples of this powerful configuration style.
ProGuard is fast. It only takes seconds to process programs and libraries of several megabytes. The results section presents actual figures for a number of applications.
ProGuard is a command-line tool with an optional graphical user interface. It also comes with plugins for Ant and for the J2ME Wireless Toolkit.
ProGuard is a Java class file shrinker, optimizer, and obfuscator. The shrinking step detects and removes unused classes, fields, methods, and attributes. The optimization step analyzes and optimizes the bytecode of the methods. The obfuscation step renames the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer.
ProGuard can also be used to list unused fields and methods in an application, and to print out the internal structure of class files.
ProGuard typically reads the input jars (or wars, ears, zips, or directories). It then shrinks, optimizes, and obfuscates them. It then writes the results to one or more output jars (or wars, ears, zips, or directories). The input jars can optionally contain resource files. ProGuard copies all non-class resource files from the input jars to the output jars. Their names and contents remain unchanged.
ProGuard requires the library jars (or wars, ears, zips, or directories) of the input jars to be specified. It can then reconstruct class hierarchies and other class dependencies, which are necessary for proper shrinking, optimization, and obfuscation. The library jars themselves always remain unchanged. You should still put them in the class path of your final application.
In order to determine which code has to be preserved and which code can be discarded or obfuscated, you have to specify one or more entry points to your code. These entry points are typically classes with main methods, applets, midlets, etc.
- In the shrinking step, ProGuard starts from these seeds and recursively determines which classes and class members are used. All other classes and class members are discarded.
- In the optimization step, ProGuard further optimizes the code. Among other optimizations, classes and methods that are not entry points can be made final, and some methods may be inlined.
- In the obfuscation step, ProGuard renames classes and class members that are not entry points. In this entire process, keeping the entry points ensures that they can still be accessed by their original names.
Any classes or class members of your code that are created or invoked dynamically (that is, by name) have to be specified as entry points too. It is generally impossible to determine these cases automatically, but ProGuard will offer some suggestions if keeping some classes or class members appears necessary. For proper results, you should at least be somewhat familiar with the code that you are processing.
ProGuard does handle Class.forName("SomeClass") and SomeClass.class constructs automatically. The referenced classes are preserved in the shrinking phase, and the string arguments are properly replaced in the obfuscation phase. With variable string arguments, it is generally impossible to determine their possible values (they might be read from a configuration file, for instance).
However, as mentioned, ProGuard will note constructs like "(SomeClass)Class.forName(variable).newInstance()". These might be an indication that the class or interface SomeClass and/or its implementations may need to be preserved. You can then adapt your configuration accordingly.
Whats New in 3.9 Stable Release:
- This release fixes a number of bugs.
- Notably, ".class" constructs compiled in Java 6 are now handled correctly.
- The optimization step now avoids a possible division by 0 and correctly processes local variables with indices larger than 255.
- The documentation and examples have been updated.
Whats New in 4.0 Beta Development Release:
- Added preverifier for Java 6 and Java Micro Edition, with new option -dontpreverify.
- Added new option -target to modify java version of processed class files.
- Made -keep options more orthogonal and flexible, with option modifiers allowshrinking, allowoptimization, and allowobfuscation.
- Added support for configuration by means of annotations.
- Improved shrinking of unused annotations.
- Added check on modification times of input and output, to avoid unnecessary processing, with new option -forceprocessing.
- Added new options -flattenpackagehierarchy and -repackageclasses (replacing -defaultpackage) to control obfuscation of packages names.
- Added new options -adaptresourcefilenames and -adaptresourcefilecontents, with file filters, to update resource files corresponding to obfuscated class names.
- Now respecting naming rule for nested class names (EnclosingClass$InnerClass) in obfuscation step, if InnerClasses attributes or EnclosingMethod attributes are being kept.
- Added new inter-procedural optimizations: method inlining and propagation of constant fields, constant arguments, and constant return values.
- Added optimized local variable allocation.
- Added over 250 new peephole optimizations.
- Improved making classes and class members public or protected.
- Now printing notes on suspiciously unkept classes in parameters of specified methods.
- Now printing notes for class names that dont seem to be fully qualified.
- Added support for uppercase filename extensions.
- Rewritten class file I/O code.
- Updated documentation and examples.
Download (MB)
Added: 2007-06-27 License: GPL (GNU General Public License) Price:
905 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above obfuscation definition search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed