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

isFallThrough function seems incorrect #13

Open
thaddywu opened this issue Sep 22, 2021 · 2 comments
Open

isFallThrough function seems incorrect #13

thaddywu opened this issue Sep 22, 2021 · 2 comments
Labels
enhancement New feature or request

Comments

@thaddywu
Copy link

Hi~Happy Chinese Mid-Autumn Festival!
SOK sometimes recursively disassembles data bytes and even never terminates. I think isFallThrough is responsible for it.
When isFallThrough considers instructions of CALL nonreturn-function as fall-through, it may go into data parts to disassemble them (see here)!

@bin2415 bin2415 added the enhancement New feature or request label Sep 22, 2021
@bin2415
Copy link
Collaborator

bin2415 commented Sep 22, 2021

Hello, Happy festival! The identification of nonreturn functions is too simple(it only checks some instructions) in recursive disassembly and it may leads to false positives when disassembling data bytes.

We could enhance it by identifying the nonreturn functions following the idea of bap or dyninst.

Thanks!

@thaddywu
Copy link
Author

Thanks for your reply! You're right. Definitely, fine-grained methods could be taken to improve the results. But sure, there's some workload on the implementation side. If we wanna do some simple modification on existing codes, it seems better to take CALL functions as non-fallthrough by default rather than fall-through, in that disassembling data bytes do incur fatal errors. In this case, we'd better adopt a conservative way. We could at least avoid fatal errors this way (though we get false negatives).

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

No branches or pull requests

2 participants