微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Objective C 类方法`(unsigned long long)`

如何解决Objective C 类方法`(unsigned long long)`

我目前正在对一个用于渗透测试的应用进行逆向工程。

我遇到了一个名为“hash”的方法名称,但我很难理解这个函数的类型。

/* @class SearchRequest */

-(unsigned long long)hash {
    r0 = [self terms];
    r0 = [r0 retain];
    r20 = r0;
    r22 = [r0 hash];
    r0 = [self searchFilters];
    r0 = [r0 retain];
    r23 = r0;
    r22 = [r0 hash] ^ r22;
    r0 = [self categoryFilters];
    r0 = [r0 retain];
    r21 = r22 ^ [r0 hash];
    [r0 release];
    [r23 release];
    [r20 release];
    r0 = r21;
    return r0;
}

我能够拆卸的东西。

它似乎调用了 searchFilters、categoryFilters、terms 方法

我不确定什么是 release,retain 代表什么。而且我也不太明白 -(unsigned long long)hash,是 unsgined long long 方法类型吗?全面了解此功能要实现的目标或输出的目标会很有帮助。我几乎没有使用 Objective-C 进行上下文工作的背景。

使用 Frida,我已经看到这个函数的返回值通常是 0x0,我认为这意味着 nil

解决方法

retain/release 是编译器插入的调用,用来增加对象的自动引用计数,知道什么时候应该是- [NSObject dealloc],本来retain/release/autorelease是程序员手动做的,但是我没有认为很少有人再手动操作了。 - [NSObject hash] 是所有对象从它们最终继承的基 NSObject 类获取的方法,默认情况下我认为它只使用对象地址,您可以覆盖它,- [NSObject isEqual:] 如果您想更改两个对象相等是什么意思。像NSSetNSDictionary这样的对象,使用- [NSObject hash]来加速- [NSObject isEqual:]比较并将它们插入到哈希表中,- [NSObject hash]的值用于查找对象和 - [NSObject isEqual:] 的位置用于进一步区分具有相同 - [NSObject hash] 值但可能仍然或可能不相等的两个对象,两个对象可能不相等但仍然具有相同的哈希值,但不可能有对象相等但具有不同的哈希值,这将是一个错误,所有被认为相等的对象都应该具有相同的哈希值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。