我已经了解到,swift实际上创建了一个名为" mangling"内部用于所有对象。
所有主题都谈到了消解,但是如何真正得到错误的名字?
我试过了
1- object_getClass(self)
2- NSStringFromClass(MyClass.self)
但他们返回正常的班级名称。
我发现了这个demangle项目..
https://github.com/mattgallagher/CwlDemangle/blob/master/CwlDemangle/CwlDemangle.swift
可能有一个整修项目吗?
注意:我使用的是swift 3.0.1
答案 0 :(得分:1)
xcode附带一个命令行工具来解析名称。
输入:
swift demangle
然后找到你的错位类名..
__TMaC17find_the_treasure15YD_Secret_Class
然后看着它吐出的名字..
find_the_treasure.YD_Secret_Class
如果你想观察被破坏的名字,你可以把生成的Swift iOS或macOS二进制文件放到像Hopper
,iDAPro
或radare2
这样的反汇编程序中。
自动解除名称的工具已经在这里(参考Hopper v4.0 Dissassembler
)。