mrmign
(mrmign)
1
如图所示,在cycript里动态查看时打印出的类名里包含 . 号,这里没搞明白是如何 添加这样的类的,自己尝试在工程里添加包含 .号的 类似类时,无法添加成功,而且在hopper里看到的也不是正确的类名,与cycript里看到的也不一致,
hopper里的如下所示
在尝试 编译 tweak时候 %hook Wanqu.WQLatestIssueViewController 不允许,不识别这样的类,
尝试runtime想在该类的 扩展中替换原来的方法时,同样类名找不到。
请问这样的类名是如何 添加的,对于这样的类该如何 进行hook ,谢谢。
mrmign
(mrmign)
3
class-dump 无法用,因为 项目是用swift写的,期间也尝试用BBC改善的支持swift版的class-dump依然报错,我看到的类名都是通过’cycript’打印出来 的。
如果 狗神有时间可以看下该应用 叫 「湾区日报」
mrmign
(mrmign)
4
今天继续研究了一番,发现遇到的类名里带 . 是swift的特性,反编译后拿到的类是经过mangle的,但是swift代码在运行的时候又会demangle, 因此 就得到了带有 . 的类,
然而,目前Theos 编写的Tweak还不支持这种特性,不知道Theos有没有更新到支持swift的计划呢?
直接当成OC函数是可以hook的,
void __cdecl -[Wanqu.WQPayment paymentQueue:removedTransactions:](_TtC5Wanqu9WQPayment *self, SEL a2, id a3, id a4)
用这个:_TtC5Wanqu9WQPayment 代替类名 其实就是你Hooper里面看到类名,那个是可以hook的