1. A method of scanning an item of executable binary code prepared from a program written in a programming language, the method employing a model checker and executing on a host computer processor, the method comprising: preparing a data structure corresponding to the item of executable binary code, the data structure comprising executable elements parsed from the item of executable binary code; creating a composite model of the executable binary code by supplementing the data structure with metadata comprising at least security rules defined by a specification of the programming language and rules defining the format of instructions in the programming language, the composite model having a format for processing by the model checker; segmenting the composite model into a plurality of segments, segmenting comprising the steps of: dividing the composite model into a plurality of initial, consecutive segments, including at least a first segment; and changing a distribution of instructions among the segments by, for each segment after the first segment, assessing at least the first instruction in each segment, and moving the at least first instruction to an immediately preceding segment if that at least first instruction is not a transfer instruction; analyzing each of the plurality of segments individually, and analyzing boundaries of the segments, with the model checker to assess whether the executable binary code violates a rule defined by the programming language; and generating an output based on a result produced by the model checker, the output including an indication of whether the binary code possibly contains malware.