Obfuscate Objective-C code for a reusable iOS pack

2019-02-27 06:37发布

问题:

Possible Duplicate:
Objective-C Code Obfuscation

I am trying to put together an iOS package that can be reused in multiple apps. I would like to be able to bundle it up for others to easily plug in and use, and I would like to obfuscate the code so that no one can read it.

What would you recommend between building a framework, a static library, or another solution to accomplish this and why?

回答1:

A framework is the standard Cocoa approach to shared code. You can distribute a framework as a compiled code library and a collection of public headers without making any of the underlying Objective-C soure code visible. Of course, a dedicated hacker could still read the machine code, but this would be a big undertaking, and probably not worth the time they would have to spend on it.

If you are really concerned about sensitive code, you could consider an internet-based service, in which your library calls out to a remote server under your control to perform some business logic. This approach is quite a bit more involved, and does not offer as much flexibility for your customers.



回答2:

If you're distributing for iOS, you have two options:

  1. Distribute a precompiled binary and headers
  2. Distribute the source

Since you're asking about hiding stuff, I don't think #2 is what you're looking for.

As for #1, the best you can do is just not tell 3rd party users about more stuff. They'll still be able to use the runtime to find methods and properties and instance variables, etc. If you're doing everything in C-land (ie, no Objective-C classes), then they can still use things like otool to dump symbols.

In short:

It's probably not worth trying to "obfuscate" your code. Just tell them about the stuff they need to know about, then give them a .a file and the headers they need.