As far as my level of understanding goes, the only difference between a 32 bit and 64 bit dissasembler is that the produced assembler-code of a 32 bit dissasembler is only using 32 bit assemby instructions, while a 64 bit dessasember also makes use of 64 bit instructions and registers.

My questions is, what are the advatages of using a 64 bit dissasembler over a 32 bit dissasember?

Furthermore, if I want to disassemble a programm compiled for a 64 bit machine, can I use a 32 bit dissasembler like OllyDBG for that and what how would the output differ from a 64 bit disassembler like x64dbg?


There are no set definitions for "32-bit disassembler" and "64-bit disassembler". The terms are in fact ambiguous.

32-bit and 64-bit just refer to CPU architectures. Specifically to things such as register size and bus size. These can apply to many things.

Specifically, in the case of a disassembler, they can apply to two things:

  1. The CPU architecture for which the disassembler binary is compiled
  2. The CPU architecture which the disassembler is capable of disassembling.

Furthermore, there are multiple CPU families which come in both 32- and 64-bit flavours. The most relevant today are Intel & AMD, and ARM.

These are all independent. You could have a disassembler compiled to run on 32-bit Intel machines which is capable of disassembling binaries that are supposed to run on 64-bit ARM processors.

Now in the same CPU, a 64-bit architecture may or may not be an extension of a previous 32-bit architecture. This is the case with Intel.

So a 32-bit binary will typically be able to run on a 32-bit machine or a 64-bit machine, but a 64-bit binary will only be able to run on a 64-bit machine because it will use instructions, registers, addressing modes, etc than the 32-bit machine does not support.

Likewise if you try to disassemble a 64-bit binary using a disassember that is designed only to disassemble 32-bit binaries of the same CPU family, it will only recognize the 32-bit instructions, registers, addressing modes, etc. All of the 64-bit-specific stuff will just confuse the disassembler.

I'm not familiar with either OllyDBG or x64dbg so I don't know what they are capable of.

You seem to be under the impression that a "32 bit disassembler" will somehow convert or translate 64 bit code into 32 bit code. That is not possible. That would be in the realm of cross-compiling and emulation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.