Objective-C 代码混淆

11

有没有方法可以混淆Objective-C代码?

谢谢


6
这个问题没有动词。 - Greg Hewgill
5
我认为Biranchi意外地错了一个问题。 - Dave DeLong
疯狂 +1。我希望你不会向客户销售一个“足够安全”的解决方案 ;) - avocade
2
混淆只有在安全方面才很少使用。它更多地涉及知识产权盗窃和使代码难以逆向工程(大大减缓了尝试黑客攻击、作弊游戏和/或盗版的速度)。 - Dave Dopson
还要注意的是,对于备受关注的应用程序,爱好者们经常会扫描所有可见的符号,寻找有关正在进行但尚未发布的未来功能的线索。 - Baxissimo
显示剩余3条评论
2个回答

6
选择器仍然是纯文本 - otool -o将会输出所有对象及其定义的方法。您还可以使用以下一行代码转储代码中访问的所有内部和外部选择器。在源代码级别上混淆方法和参数名称可能是最容易的,尽管在对象级别上进行混淆也将以一种与语言无关的方式进行混淆,但这将牺牲一些链接器表操作。
otool -s __TEXT __objc_methname yourapp.app/executable_file |expand -8 | cut -c17- | sed -n '3,$p' | perl -n -e 'print join("\n",split(/\x00/,scalar reverse (reverse unpack("(a4)*",pack("(H8)*",split(/\s/,$_))))))'|less

3

Objective-C是C语言的一个直接超集,因此所有正常的C语言混淆技术都可以使用。然而,如果你想使用Cocoa,可能会遇到一些障碍,因为方法名通常都是自我记录的。

对于自己的方法,您只需不正确地记录方法即可,例如:

-(void) doSomethingInnocent:(BOOL)animated withObject:passwords;

当你通常会写的时候:

-(void) sendObjectToMyServer:(BOOL)coverupAnimation;

2
一个开始。但仍然无法帮助很多。 - bbum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接