Consider the following piece of code:
.text:00F74B42 call sub_12D1130
.text:00F74B47 mov eax, dword_15A0C80
Now, I want to add a sanity check but as I don't have enough space to do that I remove "useless" call instruction and move everything up by 5 bytes. So I end up with:
.text:00F74B42 mov eax, dword_15A0C80
.text:00F74B47 test eax, eax
.text:00F74B49 jz loc_xyz
Unfortunately when my program gets rebased to different virtual address, dword_15A0C80
is not correctly updated, instead, bytes at B47
- B4B
are.
I understand that dword_15A0C80
's offset at 00F74B47
is stored somewhere so when .data
segment gets a new virtual address it's updated.
The question is where and how to search for it quickly using IDA for instance?
nop
?