SiNTAX
December 13th, 2001, 09:04
Just wondering if somebody knows of a tool to circumvent the anti-disassembler tricks that are used f.ex. in sd
With anti-disassembler tricks, I'm referring to the following sort of code sequences:
<< snippet from ~df394b.dll >>
1000100c: 70 0d jo 0x1000101b
1000100e: 77 03 ja 0x10001013
10001010: 87 ff xchg %edi,%edi
10001012: 90 nop
10001013: 78 0b js 0x10001020
10001015: 87 ff xchg %edi,%edi
10001017: 77 00 ja 0x10001019
10001019: 79 05 jns 0x10001020
1000101b: 87 d2 xchg %edx,%edx
1000101d: eb ef jmp 0x1000100e
1000101f: 03 eb add %ebx,%ebp
10001021: 07 pop %es
The disassembler is confused and doesn't disassemble the 0x10001020 offset correctly. (note: this is an objdump disassembly).
This also fools: IDA, W32Dasm
It's easy to manually 'correct', but I don't like the 'manually' aspect ;-)
I'm sure somebody already worked on this kind of stuff, so instead of me re-inventing the wheel, I thought I'd ask here.
With anti-disassembler tricks, I'm referring to the following sort of code sequences:
<< snippet from ~df394b.dll >>
1000100c: 70 0d jo 0x1000101b
1000100e: 77 03 ja 0x10001013
10001010: 87 ff xchg %edi,%edi
10001012: 90 nop
10001013: 78 0b js 0x10001020
10001015: 87 ff xchg %edi,%edi
10001017: 77 00 ja 0x10001019
10001019: 79 05 jns 0x10001020
1000101b: 87 d2 xchg %edx,%edx
1000101d: eb ef jmp 0x1000100e
1000101f: 03 eb add %ebx,%ebp
10001021: 07 pop %es
The disassembler is confused and doesn't disassemble the 0x10001020 offset correctly. (note: this is an objdump disassembly).
This also fools: IDA, W32Dasm
It's easy to manually 'correct', but I don't like the 'manually' aspect ;-)
I'm sure somebody already worked on this kind of stuff, so instead of me re-inventing the wheel, I thought I'd ask here.