One of the major hurdles of x86 disassembly is separating code from data. All available open-source disassembly library only perform a straight line disassembly (starts from the top and skips errors by 1 byte), compared with OllyDBG which apparently uses a control flow disassembly (using opcodes like CALL and JMP) or IDA using heuristics and emulation. However these two aren't open-source.My question is, is there any open-source library or project that uses a better technique than simple straight line disassembly (control flow or heuristics based) ?I stumbled upon a paper using a machine learning approach ? is there an open-source implementation of this approach ?
Open-Source library for Complete Binary Disassembly
disassembly;x86
Radare 2 is a GPL software, with a good API, and is not using linear disassembling.See visual mode (Vp command) example: