Writing Toolbox Analyzers

From AtlasWiki
Revision as of 17:51, 4 February 2015 by BenHolland (Talk | contribs) (Created page with "The [https://ensoftcorp.github.io/toolbox-commons/ Toolbox Commons] project defines an <code>Analyzer</code> interface that encapsulates the logic for traversing a program gra...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The Toolbox Commons project defines an Analyzer interface that encapsulates the logic for traversing a program graph to extract an "envelope" (a subgraph that is either empty if a property is satisfied or non-empty containing the necessary information to locate the violation of the property). Analyzers encapsulate their descriptions, assumptions, analysis context, and analysis logic. Of course you can define your own "Analyzer" simply by writing a program with your analysis logic, but we find this abstraction helps keep code organized when contributing to a toolbox project.

Let's user our Starter Toolbox to define a few Analyzer objects. Specifically let's write analyzers that detect uses of Java class loaders, reflection, native code, and native processes. We want to be able to detect the usage of these language features because these exotic features tend to break naive program analysis implementations. Depending on our implementation, without the ability to detect these features we may not be able to tell if our analysis is sound or complete.

Analyzing Class Loaders Usage

TODO

Analyzing Reflection Usage

TODO

Analyzing Native Code Usage

TODO

Analyzing Native Process Usage

TODO

Analyzing Analyzers

TODO


Back to Learning Atlas