如何在应用程序内部找到iOS应用程序二进制文件

3
为了验证我的方法所在的地址空间,我需要知道我的应用程序二进制文件的位置,如何获取此位置。例如: /private/var/mobile/Containers/Bundle/Application/A866E404-88F4-4E2A-B387-4808064DF1AF/{AppName}.app/{AppName} 但是,在“Application/”后面的标识符会因每次安装而改变。是否有一个地方可以查询以获取此位置?

“验证地址空间”是什么意思?当应用程序通过AppStore分发时,你的方法还可以在哪里运行? - dreamzor
这是一种安全机制。如果黑客获取了设备的访问权限并越狱,他可以将不同的实现钩入您的代码。在这种情况下,实现可能存在于不同的地址空间,例如“/MobileSubstrate”或“/cyscript”。当然,黑客能够修改二进制文件,使地址空间仍然看起来有效,但这更加困难。这只是确保您的应用程序不受损害的众多步骤之一。 - Zack Liston
1个回答

4
"/private/var/mobile/Containers/Bundle/Application/A866E404-88F4-4E2A-B387-4808064DF1AF/{应用名称}.app" 这一部分应该简化为:
NSString *appPath = [[NSBundle mainBundle] bundlePath];

太好了,谢谢。你知道有没有办法在 C 语言中实现这个吗?我正在尝试保护我的应用程序,并使用 Obj-C 方法会让其他人更容易地切入并返回不同的值。 - Zack Liston
5年过去了,很抱歉... 这个问题已经得到很好的解决,但是当尝试访问应用程序文件时,即使以只读模式进行,仍会出现“权限被拒绝”的错误。有没有解决这个问题的方法? - Silas

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