Reverse Engineering Objective-C

Languages that have dynamic introspection provide powerful meta-programming capabilities. This is generally done at runtime with additional memory used for storing metadata - such as types and method signatures. But they also provide the same power for people reverse engineering your code. Let’s look at Objective-C, a simple code snippet: @interface MyObject : NSObject @end @implementation MyObject { NSInteger _number; } - (void)doSomething { _number++; NSLog(@"The %@", [self _doSomethingSpecial:_number]); } - (NSString *)_doSomethingSpecial:(NSInteger)number { return [NSString stringWithFormat:@"Number: %d", number]; } @end Simple enough, but what if we don’t have the source? Let’s step back to how Objective-C works… ...

July 26, 2014 · 4 min