-
Notifications
You must be signed in to change notification settings - Fork 49
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
Instruction bytes change between versions of the executable #1
Comments
To be clear, when you say "changes" do you mean between an incremental/updated version of the same target executable? |
Yes. |
Therein lies the rub. To do this procedurally/programmatically I see a few possible solutions (more like research directions) depending on the use case.
For the first case, assuming one is still in IDA, we have the luxury of having all the disassembler data. For the 2nd use case, since we probably shooting for speed and probably don't want to take the time to do disassembly, dynamic code analysis, etc., then we're more restricted on a solution. The goal for a good tool is to automate as much of these things as possible. Practically, and for the time being until research is done on one of these solutions for the use cases: |
Sigmaker generates correct byte pattern but the byte sequence for the instruction itself changes. In my case byte sequence for the instruction
![ida64_1Mdcgvkuyz](https://user-images.githubusercontent.com/16989713/154344535-1cae0512-d16c-4e3c-8e06-a1023c622356.png)
mov rdx, rcx
changed from48 89 CA
to48 8B D1
:And so when I generate a signature in the version on the left, Sigmaker generates
48 89 CA C1 E8 04
pattern, and it won't find it in the version on the right.Don't know how often it happens in the wild.
An obvious fix would be to replace all bytes to
??
for instructions that can be represented by different byte sequences. Not sure if it's easy enough or possible to just ask some assembler "can this instruction be represented by multiple byte sequences?"The text was updated successfully, but these errors were encountered: