Skip to content
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

Add support for public signature server #41

Closed
ogre2007 opened this issue Oct 31, 2022 · 3 comments
Closed

Add support for public signature server #41

ogre2007 opened this issue Oct 31, 2022 · 3 comments

Comments

@ogre2007
Copy link

ogre2007 commented Oct 31, 2022

Rizin lacks support for public or private signatures server, and there is open implementation for lumina https://github.com/naim94a/lumen . Maybe we should implement support for this server? Obviously, it should be very optional feature, but I'm confident that it helps rizin become more popular in collaborated RE.

Describe the solution you'd like
Implementation of lumina client in rizin

Describe alternatives you've considered
Create some other public server/client, that will be based on open source rizin protocol.

@ret2libc
Copy link
Member

If that's going to be done, I'd start it as a separate Core plugin in rizin-extras that could be installed with rz-pm.

@ogre2007
Copy link
Author

ogre2007 commented Nov 2, 2022

I've did a little research on the topic, and found out the main problem with lumina - IDA's proprietary function hashing algo (see naim94a/lumen#2). And it is different from FLIRT signatures. Its simple, but yet very tricky to implement: bitmask is calculated for function bytes, mask's 1s is where variable code position dependent offsets is stored E.g. mask for bl printf will be FFFFFF00h (rizin analysis mask is 0000F0FFh - very different value), but for near jumps - eg ble $pc + x there is no such bits: 00000000h (rizin mask is 0000F0FFh again) . For data loading ldr r0, [str.Hello] from data it will be FF0F0000h (rizin analysis mask is once again 0000F0FFh). Then md5 is computed from FUNC_BYTES & (~MASK_BYTES) concatenation with MASK_BYTES which can be used for lumina protocol.
As you can see, difficult part is to create this function mask, which is impossible without IDA-like instruction processing.

@XVilka
Copy link
Member

XVilka commented Apr 24, 2023

Fixed by https://github.com/rizinorg/rz-silhouette
If you have any more suggestions/questions/etc - open an issue, PR, or discussion in that repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants