Reverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation. http://en.wikipedia.org/wiki/Reverse_engineering
Mach-O • __TEXT segment contains executable code and other read-only data • __objc* sections contain data used by the Objective-C runtime Mach-O is the standard used to store programs and libraries on disk in the Mac app binary interface (ABI) http://developer.apple.com/documentation/DeveloperTools/Conceptual/MachORuntime/
Relative addressing Relative to the next instruction’s address: 0x100000de7 + 0x5e1 = 0x1000013c8 otool -l – indicates all sections with their addresses
How to improve • Don’t use Objective-C in critical parts • Check the license in non-obvious places • inline (GCC does not inline any functions when not optimizing) • __attribute__((always_inline)) inline http://gcc.gnu.org/onlinedocs/gcc/Inline.html