Combining static and dynamic data flow analysis: a hybrid approach for detecting data leaks in java applications