Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用动态库的目标C方法Swizzling_Objective C_Methods_Swizzling_Overriding - Fatal编程技术网

Objective c 使用动态库的目标C方法Swizzling

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

我正在努力学习旋转法。我在objective C中创建了一个程序,它只调用其类中的一个方法。现在我正在尝试使用DYLD_INSERT_库加载一个动态库,这样我就可以用动态库中定义的新方法覆盖我的方法实现。目的是修改参数,然后调用原始函数调用

程序代码可在 有关动态库的代码,请访问

我观察到,只要在动态库中执行行“if(self==[Encryption class]){”,代码就会显示类名,然后抛出奇怪的消息。 完整输出:

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”的类的动态库。不能有两个同名的类。