Undefine Then Make Function Doesn't Entirely Wipe Away Old Analysis
Version and Platform (required):
- Binary Ninja Version: 5.3.8760-dev Ultimate, fba98d3c
- OS: macos
- OS Version: 26.1.0
- CPU Architecture: arm64
Bug Description:
If I undefine a function and then create a function in the same location, something somewhere is being retained from the old analysis. If I undefine the function at 0x18001b498 and then use "P" to make a new function at that location, there is something wrong with the way the types and offset pointers are being applied. There were two big bug fixes recently that made the analysis of this function way better:
https://github.com/Vector35/binaryninja-api/issues/7647 https://github.com/Vector35/binaryninja-api/issues/7648 https://github.com/Vector35/binaryninja-api/issues/7709
Look at the screenshots below for more details.
Steps To Reproduce:
- Open the binary to make a new database.
- Navigate to
0x18001b498 - Observe how nice the annotations in HLIL are now.
- Open the database
pine plane takes finely - Navigate to
0x18001b498 - Undefine function
- Use "P" to make a new function.
- Compare the broken annotations compared to the new database.
Expected Behavior: Same analysis and annotations in both cases.
Screenshots:
This is the database after undefine. Note the offset pointer at the top with the old 0x8 size (this is 32bit). Notice that there is also another offset pointer below it. Both are highlighted in this screenshot.
Here is what the end of the function looks like. This is not correct.
Here is what the fresh database results in. Everything looks super nice:
Binary:
Binary: cascading avatar compresses hierarchically
Database: pine plane takes finely