Lifting Binaries for Emulation and Fuzzing

Introduction Lifting binary code compiled to run on some computer architecture is a daunting task. It can be broken down into two steps: Decode a bit stream into an assembler instruction. Lifting - Describe the behavior of the instruction within the language of the target intermediate language (IL). The second step requires the definition of such an intermediate language first. A recent target required the PowerPC instruction set (including VLE instructions) to be added as a lifter front-end to our emulator and we shall use this architecture to illustrate the process of lifting. Given are the bytes below and the task of the lifter is to translate these bytes into one or more instructions in our IL: ...

July 24, 2024