Basics of Practical Software Reverse Engineering