MrM*_*age 6 linker llvm debug-symbols swift
我需要在Swift中编写一些许可证检查代码。我知道Swift首先不是那种代码的最佳选择,因为它很难混淆。但是,如果需要知道应用程序是否已注册的代码是用Swift编写的,那还是比将许可证检查代码放在可以互换的单独框架中更好。
为了使攻击代码更加困难,我试图通过至少删除与代码相关的符号来使代码模糊。
为此,我有一些具有内部可见性的内联方法,如下所示:
@inline(__always) static func checkLicense() { /* license checking code */ }
Run Code Online (Sandbox Code Playgroud)
鉴于应始终内联该方法,因此无需在二进制文件的符号表中包括该方法的名称。(我知道inline注释通常仅是编译器的提示,但我有理由相信它们在这种情况下确实有效。)
与此nm MyApp.app/Contents/MacOS/MyApp相符,不包含对的引用checkLicense。但是,的输出strings MyApp.app/Contents/MacOS/MyApp仍然包含对checkLicense,而且恐怕攻击者可能会使用该信息来更容易地攻击许可证检查代码。
这是我的问题:
nm吗?)吗?我目前正在使用以下构建选项:
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |