自毁可可应用

时间:2012-12-21 13:15:28

标签: objective-c macos cocoa

我正在寻找设计自毁式Cocoa应用程序的方法。我们的想法是在启动时检测应用程序是否正在进行逆向工程(总是在多次尝试中完成)并在以下情况下删除/损坏它。当然,一个热心的黑客可以重新下载并重新设计破坏过程,但这会让它变得非常烦人和痛苦!

为了检查代码完整性,可执行文件上的hashsums应该可以解决问题。

关于腐败过程,我很确定应用程序在运行时无法编辑其捆绑包。 我有一个想法:

- 制作一个致力于破坏的“中间应用程序”,在退出第一个时启动它。它会起作用吗?

- 在退出之前是否会产生一个Shell脚本(等待应用程序终止)?

欢迎任何想法!

编辑:关于Cocoaster链接:

1.Stripping调试符号:即使没有显式方法名称,也很容易跟踪“验证”方法,主要是通过查找NSString调用(@“validated”,@“license”)

2.PT_DENY_ATTACH:无论如何都有方法可以附加,但是打破ptrace()并修改返回值(如果我能在基本的复古工程训练中找到这个,任何人都可以)。

3.检查校验和,否则退出:这正是我想要避免的事情:gdb很容易跟踪对[NSApplication shouldTerminate:]的调用并修改测试(或有效的MD5字符串)通过它。重点是,黑客不再需要重新加载gdb,而是需要再次下载/安装它(因此这个过程非常耗时)。

想象一下:

1.在启动时,mainApplication创建一个shell / bash脚本,类似于:

 wait(decent time)
 rm /*Dynamic Application Path*/Contents/MacOS/exe

或更好:

  sed -i 's/a/b/g' /*Dynamic Application Path*/Contents/MacOS/exe
//Will completly screw the code

2.如果校验和失败,请启动脚本并安静地终止应用程序。 我的问题是:是否依赖NSTask应用程序(我可以启动NSTask并退出启动它的应用程序)吗?