有什么办法可以检测到方法是否被method swizzle

正常app开发,用到了很多第三方lib,不知道有没有被swizzle的系统方法。
一般做统计的第三方lib应该都是会swizzle掉viewcontroller的一些方法,
还有nsurlconnection的一些方法吧。
要不怎么统计出来view跳转和网络请求信息的。
但是有些方法不想被swizzle掉,比如nsurlconnection的delegate中验证ssl证书这些。
这些要是被第三方搞了 那么什么数据 都不安全了。
所以想问问有没有检测指定类的方法有没有被swizzle。

1 个赞

getimplementation+dladdr

1 个赞

函數的前x個字節

gist on github
是上边这种方式么?我试了下并不能检测出来,func addr地址相同。

1 个赞

對的substrate是直接patch 匯編來實現hook,所以我告訴你檢測函數的前x字節

dladdr的方法適合不越獄的環境裡利用oc runtime進行hook