Reverse Engineering Systems to Identify Flaws and Understand Behaviour