Skip to content

Commit

Permalink
Work around fishhook bug where the hooked function is only called onc…
Browse files Browse the repository at this point in the history
…e if it hasn't been bound already facebook/fishhook#36

Fixes #48
  • Loading branch information
coolstar committed Jan 22, 2018
1 parent a0fe59a commit 25fe75d
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion basebinaries/amfid_payload/amfid_payload.m
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <mach/error.h>
#include <errno.h>
#include <stdlib.h>
#include <dlfcn.h>

#import <Foundation/Foundation.h>
#include <CommonCrypto/CommonDigest.h>
Expand Down Expand Up @@ -105,6 +106,7 @@ uint32_t swap_uint32(uint32_t val) {
}

int (*old_MISValidateSignatureAndCopyInfo)(NSString* file, NSDictionary* options, NSMutableDictionary** info);
int (*old_MISValidateSignatureAndCopyInfo_broken)(NSString* file, NSDictionary* options, NSMutableDictionary** info);

int fake_MISValidateSignatureAndCopyInfo(NSString* file, NSDictionary* options, NSMutableDictionary** info) {
// NSString *file = (__bridge NSString *)fileStr;
Expand Down Expand Up @@ -137,8 +139,10 @@ int fake_MISValidateSignatureAndCopyInfo(NSString* file, NSDictionary* options,
}

void rebind_mis(void) {
void *libmis = dlopen("/usr/lib/libmis.dylib",RTLD_NOW); //Force binding now
old_MISValidateSignatureAndCopyInfo = dlsym(libmis, "MISValidateSignatureAndCopyInfo");
struct rebinding rebindings[] = {
{"MISValidateSignatureAndCopyInfo", (void *)fake_MISValidateSignatureAndCopyInfo, (void **)&old_MISValidateSignatureAndCopyInfo},
{"MISValidateSignatureAndCopyInfo", (void *)fake_MISValidateSignatureAndCopyInfo, (void **)&old_MISValidateSignatureAndCopyInfo_broken},
};

rebind_symbols(rebindings, 1);
Expand Down

0 comments on commit 25fe75d

Please sign in to comment.