-
-
Notifications
You must be signed in to change notification settings - Fork 103
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
Separate databases per library and program. #15
Comments
The protocol doesn't specify the file hash when pulling metadata, so you would have to switch databases manually to accomplish that. Note that when lumina identifies functions from multiple files, it's because they have the same functions. The whole point of lumina is to make detection faster while reversing. The optimal solution would be to select a more general name for the function, or maybe increase IDA's |
I think it is not hard to be done by creating a simple Python plugin that when activated, after loading new IDA database or anytime later, to read ida.cfg to get lumina server information and then to comunicate with the lumina server. With custom commands it can read all available databases and to give you a menu to select the one you want to use from now on, or to create a new database. You can always reactivate this plugin to switch to another lumina database when needed. I did something similar replicating all IDA lumina functions but able to work with my custom processor modules that are not supported by the internal IDA Lumina. |
I think that it would require hooking a few IDA functions... What if someone hits "pull metadata", how would you select the correct database on the server without modifying the protocol on IDA's side? |
I'm talking only for one private server for just one user. Different users can be detected by their current IP and their last selected database. If found there is no information about a specific IP, the unknown users will all use one default database or something like that. |
I personally have multiple databases open simultaneously on the same PC... But for private use, I guess a lock IP on file md5 could be added to the http API |
During the hello communication I see there is a license information with user name and email. Enough to detect the user properly. The leaking licenses can be entered in a database and served by IP. |
The license isn't enough unfortunately... A company using floating licenses would result in identical hello messages from all clients (IP is more unique). |
I know about this project but it is not what I needed. In fact I started from Diaphora project and connected the local database file with a remote connection to a server with MySQL database. In Diaphora they keep the clean assembly of the function and many many other unique function parameters (not only hashes) in order to be able to find not only the best match but also close enough functions to the unknown one (in my case modified function from the previous version of the same firmware). So, now I have access to the exact match for all known functions and the best guess for the rest with ability to choose manually if more than one is close enough. For just one user I can collect all I needed. For public servers they have many limits what to collect and that restricts a lot the end result. |
Using Diaphora seems like a really cool idea! I'd like to see your project if you every decide to publicly release it. Thanks for using Lumen, It's nice to see people use your work :) |
Depending on how much metadata you have pushed into the database you can get the wrong results when pulling. For example, when pulling metadata for IDA's
QT5Gui.dll
I get metadata forCryptoPP
and7-zip
that I have uploaded into my database the past week.If each library and program has its own database, I could compile
QT5
and upload it into theQT5
database. Since I'm decompiling IDA'sQT5Gui.dll
I could select theQT5
database and pull metadata from it, without the possibility of getting metadata from unrelated programs and libraries.Maybe even create separate databases per OS/Architecture, maybe even compiler versions:
As far as switching between databases, I have no idea how it would work.
The text was updated successfully, but these errors were encountered: