Steps to duplicate
Paste the following hex into binja's hex view and make an x86 function at 0:
Now patch the first instruction to be xor ebx, ebx, causing ebx to be evaluated by dataflow to be ConstantValue: 0.
Now, you can undo that, patch in another one, nop it out, whatever, but binja will now think that ebx is ConstantPointerValue: 0 (not even ConstantValue: 0). You can even undefine/recreate the function at 0 and it will still happen.
I first saw this issue pop up in an x68 PE (it manifested without any patching), but the end result of the above example is the same.
Steps to duplicate
Paste the following hex into binja's hex view and make an x86 function at 0:
Now patch the first instruction to be
xor ebx, ebx, causingebxto be evaluated by dataflow to beConstantValue: 0.Now, you can undo that, patch in another one, nop it out, whatever, but binja will now think that
ebxisConstantPointerValue: 0(not evenConstantValue: 0). You can even undefine/recreate the function at 0 and it will still happen.I first saw this issue pop up in an x68 PE (it manifested without any patching), but the end result of the above example is the same.