请问下怎样hook一个dylib中的c++函数


#1

需求: 最近在做内存分析,由于工程是swift写的,所以想hook libswiftcore.dylib中的swift_retain/release函数来做一些事情。无奈试了各种方法也搞不定,fishhook/hookzz不知道是否有好的解决方案
操作步骤: fishhook似乎不支持c++的hook,由于无法获取swift_retain这个符号,所以hookzz也不能替换这个方法


#2

顶一下!!!


#3

有没有哪位大神清楚呀。。


#4

跟c c++符号没关系啊


#5

首先得越狱, 其次 swift_retain 是导出的, 不存在找不到


#6

另外为什么不考虑做编译时的内存分析呢


#7

嗯,明白,越狱情况下Hook是没问题


#8

张总说的编译时的内存分析,能提供一个思路么


#9

Swift emit到LLVM Assembly,把每个模块llvm-link到一起,然后自己写Analysis Pass搜索swift_retain的调用方


#10

大神就是厉害


#11

研究研究,看能不能搞


#12

不过静态分析似乎不太靠谱啊,,毕竟retain_release能配对,你也不能保证他在运行时能够调用呀


#13

???/


#14

意思就是调用了retain的对象,在某处能保证有调用release,但是在运行时无法保证release调用了。不知道这样描述能明白不。。


#15

????????
你是说release的控制流可能没有走到?