]> granicus.if.org Git - file/commit
Use signed offsets to reduce false positives (Christoph Biedl)
authorChristos Zoulas <christos@zoulas.com>
Wed, 20 Jul 2016 11:28:40 +0000 (11:28 +0000)
committerChristos Zoulas <christos@zoulas.com>
Wed, 20 Jul 2016 11:28:40 +0000 (11:28 +0000)
commit8a667072e65294efa6a7b7d9a3bc417e145e0aea
tree6a026bcbc10255394427ee8fdf156b2f4fb6e80f
parent7d7187980263a206d37819f0da6d9520d5eccabc
Use signed offsets to reduce false positives (Christoph Biedl)

And here is your reward: Reduce the number of false-positive
detections of "DOS executable (COM)" big time, especially for small
files. In my case, modulo further checks, the number of files reported
that way went down from some 2500 to 35, with perhaps 6
false-positives.

The trick: The target of the JMP instruction at offset 0 must be valid
and sound: For 0xeb (8bit offset) the offset must be positive as
negative offsets would lead into the program segment prefix (PSP), and
the file must be long enough that jump target actually exists. Similar
for 0xe9 (16bit offset). Here negative offsets (wrapped around at
16bit) are acceptable as long as they don't lead into the PSP. Such
files do exist. And that's where I needed a signed indirect offset.
magic/Magdir/msdos