-
Notifications
You must be signed in to change notification settings - Fork 6
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
Poor performance on function boundary detection. #1
Comments
Your implementation looks good to me. The poor accuracy could be caused by a bug in my code, or overfitting, but I’m on vacation and cannot look into this issue immediately. I’ll keep you updated when I get home. It would also help a lot if you could share one of your binaries. Happy Holidays! |
Also, we test on the master branch, it seems that the interface on the release branch is very different. I tried to test on the release branch but always get |
On SPEC 2006, which is one of the datasets you have tested.
That‘s strange... Maybe we can discuss this later 🤨 Happy Holidays! |
Thanks for providing the binary! I briefly went over the assembly code, and I think the The master branch is sort of obsolete, and it is CPU-only. The release branch is for Artifact Evaluation and it should offer the same performance as reported in the paper.
Unfortunately, we don't currently have a timeline for the CPU-only version. Happy New Year! |
@Nifury Hi! Thanks for providing the artifact code. May I know whether any Linux-based version would be provided? I saw from the README that "Native support for Windows and Linux", but it seems Windows-only? |
@Nifury Hi, I also encounter the issue about low precision and recall. I attached the non-stripped binary at the end of this post. Before running DeepDi, the binary will be stripped. I use the code proposed by @ucasqsl and the library from the master branch. I cannot run DeepDi with the release branch since my Windows laptop does not have a GPU. My GCC version is 7.5.0. If I understand correctly, the function boundaries should match the output of |
@BinMl Thanks for your interest in DeepDi, and thanks for providing your binary! It seems that the library from the master branch is indeed buggy. I also tested the code from the release branch, and it gave a more reasonable result: 5 false positives and 1 false negatives.
Currently only the Windows library is provided. I could try to fix the code in the master branch or port it to Linux in my free time, but I may not be able to do it in a timely manner. |
@Nifury Thanks for your prompt reply!
It sounds great! I found the APIs of the master branch and the release branch are a bit different. Would you mind sharing your code so that I can make sure the correctness of my demo (although I know the coding is simple, lol)? But on the other hand it is sad that I cannot play with DeepDi for a while since I can hardly find a Windows machine with cuda enabled ;(. I also noticed that DeepDi is a commercial tool (https://www.deepbitstech.com/deepdi.html). May I know whether the personal edition has the bug-free CPU-only version? I am considering to buy it but a bit hesitate due to the issues of the CPU-only version. |
Okay I'm working on releasing a Docker image so that it will be easier for everyone to evaluate it. The image will contain both CPU and GPU version, and will be free for non-commercial use. If everything goes well, it will be released in the next few days 😀 |
Just committed the new version. Feel free to test it and report any issues. |
Could you please explain in more detail about how to detect the function boundary with DeepDi? I don't know how to do, and I really need it. |
We evaluated the function boundary detection accuracy of DeepDi on our dataset with the following code:
The result is much worse than what you claimed in your paper, with average precision at 0.19743204989853363 and average recall at 0.10910939236737424. We also test the accuracy of ddisasm, which is much better. Both precision and recall are close to 1.0.
Is there anything wrong with my implementation? If so, could you please give an example of the right way to detect the function boundary with DeepDi? Or is this just because your model is overfitting and cannot generalize well?
The text was updated successfully, but these errors were encountered: