The document discusses the differences between reverse engineering and secure coding, and provides tips to help secure software against reverse engineering attacks. It notes that cryptography and protectors in registration routines can be easily defeated. Packers may help but are still simple to overcome. Decompilation of .NET and Java applications is easy due to reliance on runtime environments. The author suggests using techniques like spaghetti code, polymorphism, and thinking like a reverse engineer to help tackle reverse engineering and secure software.