I'm using a linear disassembler (beaEngine), and whenever I get to a jump table section, I get an error (or an incorrect decode since beaEngine mistakenly thinks it is code).
How can I recognize this section as a jump table? What is the characteristic of a jump table?
An example of a jump table which was found via a 3rd party application:
.text:600F49CB dd offset loc_600F496E .text:600F49CB dd offset loc_600F4984 .text:600F49CB dd offset loc_600F4979 .text:600F49CB dd offset loc_600F4979 .text:600F49CB dd offset loc_600F4984 .text:600F49CB dd offset loc_600F499E .text:600F49CB dd offset loc_600F499E .text:600F49CB dd offset loc_600F498F .text:600F49CB dd offset loc_600F498F
In order to clarify and to answer a question raised in a comment: this executable does have a relocation table. beaEngine does not seem to use it, though, since I feed it a stream of bytes and not the whole binary.
Can I use the relocation table to comprehend whether it's a jump table and calculate its length? For a single example I've checked, it does seem to work.