Patent
1997-12-23
2000-01-11
Hafiz, Tanq R.
395701, 395702, 395704, 395705, 395706, 395707, G06F 9445
Patent
active
060145137
ABSTRACT:
A computer software tool used for automatically identifying code portions and data portions of a binary executable software program in which the code portions include machine instructions that are of arbitrary length. Software products are typically distributed as binary, executable files, which comprise a string of binary values. In general, an executable file has no structure or meaning, except as determined by its behavior when dynamically executed, one instruction at a time, by a digital computer. The software tool determines a set of addresses for any known code and data portions. The tool is then used to disassemble machine instructions, beginning at a starting address for each known code portion, to identify the target addresses of other code portions and other data portions. Other sections of the binary executable software program that could be either code or data are then analyzed to identify additionAL code and data portions. As new portions are identified, the steps are repeated, until no further code or data portions are identifiable. The binary executable software program may include a plurality of executable modules. The entry addresses for each executable module and any addresses for code portions and data portions referenced and identified by any debug address, any export address, and any relocation address is added to the set of addresses. The binary executable software program is then executed to dynamically identify other executable modules so that the set of addresses can be further extended.
REFERENCES:
patent: 4937777 (1990-06-01), Flood et al.
patent: 5115500 (1992-05-01), Larsen
patent: 5151981 (1992-09-01), Westcott et al.
patent: 5214763 (1993-05-01), Blaner et al.
patent: 5216613 (1993-06-01), Head, III
patent: 5295249 (1994-03-01), Blaner et al.
patent: 5603043 (1997-02-01), Taylor et al.
patent: 5790856 (1998-08-01), Lillich
patent: 5930509 (1999-07-01), Yates et al.
Ramsey et al., "Specifying Representations of Machine Instructions", ACM, pp. 492-524, May 1997.
Ramsey, "Relocating Machine Instruction by Currying", ACM, pp. 226-236, May 1996.
Hannan, "Operational Semantics-directed Compliers and Machine Architectures", ACM, pp. 1215-1247, Jul. 1994.
Cifuentes et al., "Intraprocedural Static Slicing of Binary Executables", IEEE, pp. 188-195, Oct. 1997.
Nichols et al., Data Management and Control-flow Aspects of an SIMD/SPMD parallel Language/Complier, IEEE, pp. 222-234, Feb. 1993.
Aho et al., "Compilers Principles, Techniques, and Tools", Addison-Wesley Publishing, pp. 10-15, 513-518, 522-538, 1988.
Bershad Brian N.
Chen John Bradley
Lee Dennis Chua
Levy Henry M.
Romer Theodore H.
Anderson Ronald M.
Hafiz Tanq R.
University of Washington
Vo Ted T.
LandOfFree
Discovering code and data in a binary executable program does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Discovering code and data in a binary executable program, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Discovering code and data in a binary executable program will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-1468555