用frida-ios-dump对某音进行dump,然后反汇编分析AwemeCore,发现这个框架里的objc_selrefs区域全是错误地址,导致一个OC类的方法都没解析成功,全是空的。因为AwemeCore是某音的一个framework,而frida-ios-dump只对text段做dump处理,而objc_selrefs的内容是在data段,这部分没dump下来,猜测是不是这个原因导致解析OC类方法名失败呢?这是某音的anti-dump手段?有人踩过坑吗
2 个赞
这个有解决吗?我也同求此解
你说的解决指解决到什么程度,完全恢复是吃力不讨好
静态没办法dump,但可以采取动态的方式。
+ (void)load {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[self classList:NSClassFromString(@"TTNetworkManager") recursion:YES keyWord:@""];
});
}
+ (void)classList:(Class)defaultClass recursion:(BOOL)recursion keyWord:(NSString *)keyword {
[self getClassMethods:defaultClass];
int count = objc_getClassList(NULL, 0);
Class *classes = (Class *)malloc(sizeof(Class) * count);
objc_getClassList(classes, count);
for (int i = 0; i < count; i++) {
if (defaultClass == class_getSuperclass(classes[i])) {
NSString * className = NSStringFromClass(classes[i]);
if (recursion) {
if ([keyword length] > 0 && ![className containsString:keyword]) {
return;
} else {
[self classList:classes[i] recursion: recursion keyWord: keyword];
}
}
}
}
free(classes);
}
+ (void)getClassMethods:(Class)defaultClass {
unsigned int count = 0;
Ivar *members = class_copyIvarList(defaultClass, &count);
for(int i = 0; i < count; i++) {
Ivar ivar = members[i];
const char *memberName = ivar_getName(ivar);
const char *memberType = ivar_getTypeEncoding(ivar);
printf("@property %s %s\n", memberType, memberName);
}
free(members);
NSString * className = NSStringFromClass(defaultClass);
Method *methodList = class_copyMethodList(defaultClass, &count);
for (int i = 0; i<count; i++) {
SEL name = method_getName(methodList[i]);
printf("-[%s %s] %p\n", className.UTF8String, NSStringFromSelector(name).UTF8String, method_getImplementation(methodList[i]));
}
free(methodList);
Class metaClass = object_getClass(defaultClass);
Method *classMethods = class_copyMethodList(metaClass, &count);
for (int i = 0; i < count; i++) {
SEL name = method_getName(classMethods[i]);
printf("+[%s %s] %p\n", className.UTF8String, NSStringFromSelector(name).UTF8String, method_getImplementation(classMethods[i]));
}
free(classMethods);
}
通过lldb的image lookup命令,查到IDA中具体对应哪个函数
如果你不嫌慢的话,可以直接传个NSObject进去。
1 个赞
他应该是想IDA分析
好代码 马上集成到frida 里去
已经有了啊。只不过在Aweme上不好使,应用启动会闪退
我这些日子研究终于搞明白 为什么 Aweme 系列不行。这代码我看过
为啥
删除就没意思了。
删了啥,你不是搞明白了吗
我是附和了一个 为啥.回复错人就删了.所以是为啥
这个怎么用啊
写个插件注入进去使用
求解,有人知道怎么实现的么。 现在等保很多使用class-dump扫描的