Reversing and Exploiting Embedded Devices (Walking the software and hardware stack)