第二版书中描述了如何在IDA中通过汇编代码找到 getTimelineDataItemOfIndex: 的调用者对象和参数. 其后在编写Tweak的过程中, 有一行代码是这样的:
通过谷歌了解到此处的 MMServiceCenter 是通过logos的%c在运行时赋值的.
然后我的问题是: 我在从微信class-dump出来的头文件中并没有找到MMServiceCenter的相关定义和描述. 请问这是什么机制, 然后我该如何去了解它?
第二版书中描述了如何在IDA中通过汇编代码找到 getTimelineDataItemOfIndex: 的调用者对象和参数. 其后在编写Tweak的过程中, 有一行代码是这样的:
你这样操作一下:
cycript -p WeChat
choose(MMServiceCenter)
然后把结果贴出来看看
这不是有这个类吗?
你class-dump的过程可能有点问题,我这边class-dump出来是有这个类的
嗯, 请问您class-dump出来是9723个文件吗?
你是哪个版本 我这9754
系统版本: iOS 9.3
软件版本: WeChat 6.5.13
我试了一下,最新版本的微信中,确实class-dump不出这个类了,@Akko 知道是怎么回事吗?
但是还是可以通过其他方式查看这个类的信息,
cy# [MMServiceCenter _shortMethodDescription].toString()
`<MMServiceCenter: 0x1041238d8>:
in MMServiceCenter:
\tClass Methods:
\t\t+ (id) defaultCenter; (0x1040c5d44)
\tInstance Methods:
\t\t- (void) callEnterBackground; (0x1040c6374)
\t\t- (void) callEnterForeground; (0x1040c61e0)
\t\t- (void) callTerminate; (0x1040c6508)
\t\t- (void) callServiceMemoryWarning; (0x1040c6838)
\t\t- (void) callClearData; (0x1040c6cfc)
\t\t- (void) callReloadData; (0x1040c6b68)
\t\t- (id) getService:(Class)arg1; (0x1040c5d50)
\t\t- (void) .cxx_destruct; (0x1040c6ed8)
\t\t- (void) dealloc; (0x1040c5bfc)
\t\t- (id) init; (0x1040c5a68)
\t\t- (void) removeService:(Class)arg1; (0x1040c6110)
(NSObject ...)`
我的是稍微低一点版本的
动态添加?手上没微信二进制
在IDA可以看到有[MMServiceCenter defaultCenter] 的调用, 如果是动态添加的话, 请问是如何编译的?编译的时候找不到类不会报错吗?
我现在也遇到这个问题了
这个在MMCommon.framework中,你需要dump这个库