刚接触iOS逆向,问个小白问题,Tweak的动态库注入后,是通过 Objective-C 的Runtime来实现代码hook的么?
是的。。。。。
好的,谢谢,那如果工程是用Swift来写的,Teweak还有效果么?
感觉hook 的原理是方法替换,不知道对不对
Method m1 = class_getClassMethod([vc class], @selector(count));
Method m2 = class_getClassMethod([vc class], @selector(wxscount));
method_exchangeImplementations(m1, m2);
BOOL isSuccess = class_addMethod([vc class], @selector(count), method_getImplementation(m2), method_getTypeEncoding(m2));
if (isSuccess) {
// 添加成功:将源方法的实现替换到交换方法的实现
// count方法实现被m2实现替换
class_replaceMethod([vc class], @selector(wxscount), method_getImplementation(m2), method_getTypeEncoding(m2));
}else {
//添加失败:说明源方法已经有实现,直接将两个方法的实现交换即
}
你说的这个就是 Objective-C 的Runtime
机制,Tweak就是利用此实现的hook的,但是现在Swift编写的应用可以这样用Tweak么?
个人感觉是可以的
继承自NSObject的类,纯swift的用@objc声明的属性和方法,方法参数类型能在OC中有对应的类型就可以