The concept is as follows. If a variable “a” is tainted at some statement “a = b + c”, the predecessor is the taint on “b” or “c” that existed before and that lead to “a” being tainted. In case both “b” and “c” were tainted before, we have one of them as predecessor and the taint on “a” has a neighbor with the other one as a predecessor. Essentially, neighbors capture non-unique predecessor relationships.
FlowDroid implements modular classes of parseAppResources and createEntryPoint
Setup IntelliJ IDEA
Import as Maven project
Run configuration — select the right MainClass
soot-inforflow-android
SetupApplication: the analyzer state
runInfoflow: start the data flow analysis, returns InfoflowResults