Search code examples
iphoneobjective-csecuritydecompiling

How safe is information contained within iPhone app compiled code?


I was discussing this with some friends and we began to wonder about this. Could someone gain access to URLs or other values that are contained in the actual objective-c code after they purchase your app?

Our initial feeling was no, but I wondered if anyone out there had definitive knowledge one way or the other?

I do know that .plist files are readily available.

Examples could be things like:

-URL values kept in a string

-API key and secret values


Solution

  • Yes, strings and information are easily extractable from compiled applications using the strings tool (see here), and it's actually even pretty easy to extract class information using class-dump-x (check here).

    Just some food for thought.

    Edit: one easy, albeit insecure, way of keeping your secret information hidden is obfuscating it, or cutting it up into small pieces.

    The following code:

    NSString *string = @"Hello, World!";
    

    will produce "Hello, World!" using the strings tool. Writing your code like this:

    NSString *string = @"H";
    string = [stringByAppendingString:@"el"];
    string = [stringByAppendingString:@"lo"];
    ...
    

    will show the characters typed, but not necessarily in order.

    Again: easy to do, but not very secure.