layout: post title: "Software Security Notes 7 Disassembly and Binary Analysis Properties " date: 2021-3-9 07:00:00 +0800
Called directly by the $call$ instruction.
Indirect all is hard to dectect.
We only discuss about C code in this course
Automatic data struction detection in stripped binaries is a notoriouly difficult problem
Some codes can be compiled into similar instructions
Guessing function signatures and local variables
Recovering control flows and function calls
Intermediate Representation
Interprocedural and intraprocedural
Flow sensitivity
Context sensitivity
Code within a single function at a time
Consider entire program as a whole
Take the order of the instructions into account.
Either flow-sensitive or flow-insensitive.
Take the order of the function invocation into account.
Implemented using $jump$ instructions.
Most execution time is spent in loops.
Buffer overflow tends in occur in loops.
Compilers use dominance trees to determine natural loops.
Reachable data definitions from this point.
CFG level.
Which can reach at the start. Which can still be alive after.
Find irrelevant slices and remove them.