【问题标题】:Replacing Methods by Memory Address用内存地址替换方法
【发布时间】:2011-09-13 02:32:25
【问题描述】:

我想知道是否有任何方法可以通过内存地址调配方法。 例如: 我有一个指向方法 0xFFFFFF 的指针。 我的应用程序中有一个方法。 我想用 my 方法替换指针。有没有办法可以在 Objective-C 中替换这个指针。谢谢。

【问题讨论】:

  • 您有没有想到特定的语言? COBOL? SQL? :-)
  • 你能解释一下你的意思吗?具体来说,什么是“指向方法的指针”?我们在谈论struct objc_method * 吗?你怎么会有一个值为 0xFFFFFF 的?这是一个相当不可能的值。 “替换指针”是什么意思?只需为变量分配一个新值还是什么?
  • 好的,指向方法的指针是我在 IDA Pro 中找到的。它是与函数关联的内存地址。我说的是'-(void)myMethod:(id)sender'。内存地址只是一个例子,实际上并不是那个值。通过替换指针,有什么方法可以用我自己的应用程序中的方法的内存地址替换方法的内存地址。

标签: objective-c memory swizzling


【解决方案1】:

你说的是注射。

看看mach_inject

还有Starruntime

和应用程序增强器。

【讨论】:

    【解决方案2】:

    您正在寻找method_setImplementation(Method m, IMP imp)

    您必须首先使用class_getInstanceMethodclass_getClasssMethod 为您的选择器解析方法

    【讨论】:

      【解决方案3】:

      你可以使用“performSelector”:

      [object performSelector:@selector(doSomething)];
      

      选择器可以存储在变量中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-30
        • 2011-10-15
        • 2011-02-05
        • 2012-03-21
        • 2011-10-31
        • 2020-04-19
        • 1970-01-01
        相关资源
        最近更新 更多