-
-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
database of symbols #123
Comments
on the implementation side I have a couple things:
|
My idea was to rebuild the program entirely as a tree, which includes all class, field and method references. This will allow the database to be loaded even if the original JAR file is lost. Another bonus of this is, if we were to use an efficient data storage algorithm, we could cut down 10-20mb input JARs in just a few hundred kilobytes, which is definitely a huge improvement. |
that's an interesting idea! |
There might be some potential legality issues regarding that |
in theory, but I can't see anyone actually getting mad at us over it |
It is up to the user to determine who can access their service, and subsequently who can access the JAR file served. |
The enigma core should construct a database of symbols, and their references for the program.
This will (in theory) enable the projects to load faster once the database has been built.
The database should store symbols for:
When a program is initially analyzed, the database is built.
Upon next launch, the program will load the symbol tree from the database into memory (lazily?)
This will cut down the unecassary computational costs when re-analyzing the program.
Some considerations for the file format:
We should use a constant-pool like approach, for example:
( denotes an 1 byte opcode)
<cls> java/lang/Object # entry 0
<name> equals # entry 1
<desc> (0)V # entry 2
<method> 0 1 2 # entry 3
This is done to save storage space when building the database, and it's also primarly how the JVM structures it's class-file constant pool.
The text was updated successfully, but these errors were encountered: