#import <substrate.h>
#define libmis "/usr/lib/libmis.dylib"

//方式1
uintptr_t (*MISCopySignerCertificateData)(NSString *path, NSData **data);
uintptr_t (*MISValidateSignatureAndCopyInfo)(NSString *path, uintptr_t b, NSDictionary **info);

uintptr_t MyMISValidateSignatureAndCopyInfo(NSString *path, uintptr_t b, NSDictionary **info)
{
    NSLog(@"inject success!!!!");
    NSData *data;
    MISCopySignerCertificateData(path, &data);
    *(uintptr_t *)info = 0;
    return 0;
}

%ctor {
    MSImageRef image = MSGetImageByName(libmis);
    if (image)
    {
        MISValidateSignatureAndCopyInfo = reinterpret_cast<uintptr_t (*)(NSString *path, uintptr_t b, NSDictionary **info)>(MSFindSymbol(image, "_MISValidateSignatureAndCopyInfo"));
        
        MISCopySignerCertificateData = reinterpret_cast<uintptr_t (*)(NSString *path, NSData **data)>(MSFindSymbol(image, "_MISCopySignerCertificateData"));
        
        if(MISValidateSignatureAndCopyInfo)
        {
            MSHookFunction(MISValidateSignatureAndCopyInfo, &MyMISValidateSignatureAndCopyInfo);
        }else
        {
            NSLog(@"未找到函数 MISValidateSignatureAndCopyInfo");
        }
    }else{
        NSLog(@"AppSync: 加载libmis.dylib失败...");
        return;
    }
}

//方式2
/*
static uintptr_t (*kernel_MISValidateSignatureAndCopyInfo)(NSString *path, uintptr_t b, NSDictionary **info);

uintptr_t MyMISValidateSignatureAndCopyInfo(NSString *path, uintptr_t b, NSDictionary **info)
{
    NSLog(@"inject success!!!!");
    kernel_MISValidateSignatureAndCopyInfo(path, b, info);
    return 0;
}

%ctor {
    MSImageRef image = MSGetImageByName(libmis);
    if (image)
    {
        void *_MISValidateSignatureAndCopyInfo = MSFindSymbol(image, "_MISValidateSignatureAndCopyInfo");

        if(_MISValidateSignatureAndCopyInfo)
        {
            MSHookFunction(_MISValidateSignatureAndCopyInfo, (void *)MyMISValidateSignatureAndCopyInfo, (void **)&kernel_MISValidateSignatureAndCopyInfo);
        }else
        {
            NSLog(@"未找到函数 MISValidateSignatureAndCopyInfo");
        }
    }else{
        NSLog(@"AppSync: 加载libmis.dylib失败...");
        return;
    }
}
*/
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Filter</key>
	<dict>
		<key>Executables</key>
		<array>
			<string>installd</string>
		</array>
	</dict>
</dict>
</plist>

你可能感兴趣的文章

评论区

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。