2016-11-06 114 views
1

我已經瞭解到swift實際上會創建一個名爲「mangling」的命名方法,用於所有對象的內部。如何獲得swift mangled對象名稱

所有主題都討論了demangling,,但是如何真正獲得重名的名稱?

我試過
1- object_getClass(個體經營)
2- NSStringFromClass(MyClass.self)
,但他們回到正常的類名。

我發現這個還原函數項目.. https://github.com/mattgallagher/CwlDemangle/blob/master/CwlDemangle/CwlDemangle.swift
是有忙玲項目可能?

注:進出口使用SWIFT 3.0.1

+0

你需要改名的目的是什麼?也許可以用另一種方式來實現。 – werediver

+0

將swift iOS框架綁定到xamarin iOS的解決方法,其中swift和C#之間的橋樑需要實際的類名稱。 –

+1

也許像[this](https://owensd.io/2015/01/14/compiling-individual-files/)可以幫助你。 – werediver

回答

0

Xcode中附帶了一個命令行工具,它來過濾名稱。

式中: swift demangle

然後找到你的錯位類的名稱.. __TMaC17find_the_treasure15YD_Secret_Class

然後看着它吐出的名字.. find_the_treasure.YD_Secret_Class

如果你想觀察錯位的名稱,如您所問,您可以將生成的Swift iOS或macOS二進制文件放入類似Hopper,iDAProradare2的反彙編程序中。

自動解壓縮名稱的工具已在此處(請參閱Hopper v4.0 Dissassembler)。