Covert Java - Techniques For Decompiling, Patching, And Reverse Engineering [IDM]