lecture: A Code Pirate's Cutlass
Recovering Software Architecture from Embedded Binaries
Large binaries produce giant call graphs and dividing up functionality in an automated way is difficult. This talk introduces the CodeCut problem: given the call graph of a large binary, segment the graph to recover the original object file boundaries. It also introduces local function affinity (LFA), a measurement representing the directionality of a function's relationship to nearby functions. It applies LFA to solve the CodeCut problem. It shows some useful applications, including automated module-to-module call graphs (extracting software architecture), and automated section naming based on common strings. Finally we'll discuss success metrics for CodeCut solutions.