-
Notifications
You must be signed in to change notification settings - Fork 2
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
Unable to run binsec-rel with XMSS due to _enum limit reached_
#6
Comments
Enumerations usually happen when there is an indirect jump. Is Basically, Binsec tries to enumerate jump targets and it seems that in your case the jump target is symbolic (and not well defined), meaning that the indirect jump can have an arbitrary target. |
Thanks for the fast reply! So the instruction 0x08049078 is a 8049078: ff 25 34 f0 4d 08 jmp *0x84df034 whereby Does this mean that I need to find a new implementation of XMSS or is there any way of circumventing this by any chance? |
If you know where the jump should go you can provide a DBA stub to replace the jump / or initialize the memory at address |
So I figured out that the issue came from a switch statement which (in my case) will always result in the same value, so I just removed it. However, I now get the error:
And the instruction is: 804a4f3: 0f 11 06 movups %xmm0,(%esi) I am guessing this is a dead end as this would require expanding binsec-rel? I would volunteer but I know nothing of OCaml... |
This seems to be solved if I compile with the Thanks |
Unfortunately, Binsec does not support floating point instructions and SSE. But if you can disable SSE it should be good :) |
(And adding support for this would probably be a lot of work, even if you know OCaml ^^) |
Makes sense! I managed to get rid of the other annoying dynamic jumps by passing
The address isn't in my assembly... I think I've spent too long looking at pointers, this is work for tomorrow me :) |
I guess your control-flow is going wild at some point. You can try to track where that happens by looking at the addresses of executed instructions. I would suggest to look at the debug trace and make sure that return instructions jump to the right target. Good luck for tomorrow 💪 |
Ok, I guess I looked at it a little earlier, the issue is that binsec says
and the instruction is 8049bea: f7 f6 div %esi Do you have any advice on tackling this? If not, I'll just close the issue as it seems to be more worthwhile to find another implementation :) |
Hi!
I am trying to run binsec-rel on a reference XMSS implementation and I'd just like to report that I cannot seem to do so.
I have made a fork of the XMSS implementation here: https://github.com/JoaoDDuarte/xmss-reference-binsec-rel
As far as I know, I labelled all the high and low inputs correctly and binsec-rel installed successfully. I also specified the esp pointer in the
memory.txt
. I also built the binary with these inputs with the static flag.When I run
binsec -relse xmss_binsec
, I get the following output:I am not certain why this is happening as I am relatively new to the tool, but it seems as if the inputs are currently too large for binsec-rel to handle. Is my intuition correct, please? Also, do you know if there is some way to increase the enum limit?
Thanks!
João
The text was updated successfully, but these errors were encountered: