Objective c 使用动态库的目标C方法Swizzling
我正在努力学习旋转法。我在objective C中创建了一个程序,它只调用其类中的一个方法。现在我正在尝试使用DYLD_INSERT_库加载一个动态库,这样我就可以用动态库中定义的新方法覆盖我的方法实现。目的是修改参数,然后调用原始函数调用 程序代码可在 有关动态库的代码,请访问 我观察到,只要在动态库中执行行“if(self==[Encryption class]){”,代码就会显示类名,然后抛出奇怪的消息。 完整输出:Objective c 使用动态库的目标C方法Swizzling,objective-c,methods,swizzling,overriding,Objective C,Methods,Swizzling,Overriding,我正在努力学习旋转法。我在objective C中创建了一个程序,它只调用其类中的一个方法。现在我正在尝试使用DYLD_INSERT_库加载一个动态库,这样我就可以用动态库中定义的新方法覆盖我的方法实现。目的是修改参数,然后调用原始函数调用 程序代码可在 有关动态库的代码,请访问 我观察到,只要在动态库中执行行“if(self==[Encryption class]){”,代码就会显示类名,然后抛出奇怪的消息。 完整输出: Test-IPhone:~ root# DYLD_INSERT_LIBR
Test-IPhone:~ root# DYLD_INSERT_LIBRARIES="./evil7.dylib" ./new
objc[324]: Class Encryption is implemented in both /private/var/root/evil7.dylib and /private/var/root/./new. One of the two will be used. Which one is undefined.
Inside load function
objc[324]: Encryption:
Trace/BPT trap
我不确定代码出了什么问题。如有任何帮助,将不胜感激
目标是使用动态库(代码注入)重写目标C方法。这是因为两个类都有相同的名称。只需将其重命名为EncryptionDylib或类似名称即可
还要注意,ObjC方法应该以小写字母开始,而不是大写字母(即-Encrypt:应该是-Encrypt:)。因此,您有一个名为“Encrypt”的类,并且您正在尝试加载一个包含名为“Encrypt”的类的动态库。不能有两个同名的类。