In
computer programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
, an opaque predicate is a
predicate, an expression that evaluates to either "true" or "false", for which the outcome is known by the programmer ''a priori'', but which, for a variety of reasons, still needs to be evaluated at
run time. Opaque predicates have been used as
watermark
A watermark is an identifying image or pattern in paper that appears as various shades of lightness/darkness when viewed by transmitted light (or when viewed by reflected light, atop a dark background), caused by thickness or density variations i ...
s, as they will be identifiable in a program's executable.
They can also be used to prevent an overzealous
optimizer from optimizing away a portion of a program. Another use is in
obfuscating the
control or
dataflow
In computing, dataflow is a broad concept, which has various meanings depending on the application and context. In the context of software architecture, data flow relates to stream processing or reactive programming.
Software architecture
Dat ...
of a program to make
reverse engineering
Reverse engineering (also known as backwards engineering or back engineering) is a process or method through which one attempts to understand through deductive reasoning how a previously made device, process, system, or piece of software accompl ...
harder.
External links
"A Method for Watermarking Java Programs via Opaque Predicates"
Computer programming
References
{{compu-prog-stub