由于我是逆向工程的新手,所以我不明白为什么v8 = objc_retain(a3, a2);
语句中的objc_retain()
函数有两个参数,甚至有一个返回值!据我所知,运行时库中的函数objc_retain
仅获得一个参数,没有返回值。 objc_retain
如何使用其两个参数?
char __cdecl -[NSString writeToAppFile:tag:userInfo:error:](NSString *self, SEL a2, id a3, id a4, id a5, id *a6)
{
NSString *v6; // r10
id v7; // r5
int v8; // r8
int v9; // r1
int v10; // r11
int v11; // r1
int v12; // r6
void *v13; // r0
void *v14; // r4
v6 = self;
v7 = a4;
v8 = objc_retain(a3, a2);
v10 = objc_retain(v7, v9);
v12 = objc_retain(a5, v11);
v13 = objc_msgSend(v6, "dataUsingEncoding:", 4);
v14 = (void *)objc_retainAutoreleasedReturnValue(v13);
LOBYTE(v7) = (unsigned int)objc_msgSend(v14, "writeToAppFile:tag:userInfo:error:", v8, v10, v12, a6);
objc_release(v12);
objc_release(v10);
objc_release(v8);
objc_release(v14);
return (char)v7;
}