Abstract: A static debugging tool for use with a computer and for debugging a binary program file includes an analyzer for causing the computer to statically analyze a representation of a binary program file to detect the presence of program errors and potential errors in the binary program file without executing the binary program file. The static debugging tool causes the computer to output an error list of the errors and potential errors detected by the analyzer. In a preferred embodiment, the analyzer detects the errors and potential errors in the representation of the binary program file by following all of the possible flow paths of the representation of the binary program file while tracking the use of various program parameters for any inconsistent use of the various program parameters. A method for statically debugging a binary program file is also described.
Abstract: An improved software metering system is disclosed. In one embodiment the metering system is in a hardware based "dongle" style meter that plugs into a port of the computer system on which the metered software is running, in software with the metering information being stored on the computer's non-volatile memory or even on a remote location that is attached to the computer system via a network. The disclosed invention utilizes a system of pointers and counter slots in order to prevent the loss of metering information due to non-volatile read/write memory wear out. Also, the invention utilizes a data structure of virtual counters and pointers to be able to keep track of numerous pieces of software with only one meter. The system is also capable of being updated and remotely without compromising meter security with the inclusion of an update code in the data structure. Both methods and apparatus for accomplishing these functions are disclosed.