求教theos中的变量问题

int a=10;

%hook class1
functionA{
do something
NSLog(@"inclass1= %ld",a);
}
%end

%hook class2
functionB{
do something;
NSLog(@"inclass2= %ld",a);
a=20;
}
%end

在第一个HOOK里永远都是打印出inclass1=10?感觉是有2个a变量一样。或者说怎么写才能使得俩个HOOK可以操作一个变量的值。新手一个,谢谢大家。

个人建议你先看看这个 Home · AloneMonkey/MonkeyDev Wiki · GitHub
用这个很方便
你就要用oc 共享出一个静态实例 存放共享数据

不能给你hook的class1动态添加一个属性?

好的,我先看看

class1里添加一个属性,在hook class2的时候能访问到这个属性吗?

具体看怎么用了,如果不考虑多线程问题以及特殊数据问题可以使用 NSUserDefault也可以解决。

这个可行吗?我的目的的是两个hook通过一个中间变量来进行交互。

能不能求教一下,具体要怎么写呢?

求教一下,这个添加属性的代码具体要怎么写?

http://www.cocoachina.com/ios/20190107/26018.html

还是不行,以为成功了,现象就跟问题中一样,还是各管各的,跟有2个变量一样。。。

你确定in class 2被调用了吗

另外有没有可能你在某个地方声明了一个局部的同名变量所以赋值没有成功

  1. 两个方法是否都被调用了?
  2. 是否Hook的是不同进程(目标)里的两个类?

你现在用的是什么写你插件

嗯,被调用了,打印出结果的,class1和class2属于不同的程序,class1属于SpringBoard,class2属于一个用户程序,这样的情况下,有办法让这两个HOOK交互吗?主要是第一个hook根据第二个hook里的判断做出相应。

确实是不同进程,前面忘记说了。class1属于SpringBoard,class2属于一个用户程序,这样的情况下,有办法让这两个HOOK交互吗?主要是第一个hook根据第二个hook里的判断做出相应。

THEOS,目前新手,正向逆向一起学。

如果是THEOS的话 先配置 Makefile


然后就是OC了 自己生成你要的类

比如我 存放数据 的类是Tweak_Data
直接在Tweak.xm 里面调用 #import “Tweak_Data.h”
至于 Tweak_Data.h 静态实例 是oc了 你自己写了

有ipc机制。。不是你这么简单的。不过跨进程通讯比较复杂,最简单的方式是直接写到plist让另一个读取