The preceding examples demonstrate control flow analysis. Another form of flow analysis
examines the ways in which data transits a program. Reverse data tracking attempts
to locate the origin of a piece of data. This is useful in determining the source of data
supplied to a vulnerable function. Forward data tracking attempts to track data from its
point of origin to the locations in which it is used. Unfortunately, static analysis of data
through conditional and looping code paths is a difficult task at best. For more information
on data flow analysis techniques, please refer the Chevarista tool mentioned in
Chapter 12.
Memory Monitoring Tools
Some of the most useful tools for black box testing are those that monitor the way that a
program uses memory at runtime. Memory monitoring tools can detect the following
types of errors:
??? Accessing uninitialized memory
??? Access outside of allocated memory areas
??? Memory leaks
??? Multiple release (freeing) of memory blocks
PART IV
Chapter 14: Advanced Reverse Engineering
343
Figure 14-2
Cross-references
to the send
function
CAUTION Dynamic memory allocation takes place in a program??™s heap space.
Programs should return all dynamically allocated memory to the heap
manager at some point.
Pages:
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620