2

さまざまな理由から、これらの関数をフックする必要があります。特にopen. だから私はテストするためにtheosでこのコードを書いた:

#import <CoreFoundation/CoreFoundation.h> 
#include <substrate.h>

static int (*orig_open)(const char * pathname,int oflag,...);

int new_open(const char * pathname,int oflag,...)
{                   
  printf("-------------------I have success hook the C function open");
  //static int crashed = 0;
  va_list va;
  mode_t mode = 0;
  va_start(va, oflag);
  if (oflag & O_CREAT) mode = va_arg(va, int);
  va_end(va);
  int ret = orig_open(pathname, oflag, mode);
  if (strcmp(pathname, "/dev/dlci.spi-baseband.sms") == 0) 
  {
     printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!@@@@@@@@@@@@@@@@@@@@~~~~~~~~~~~~~~~~~~~~~");
  }
  else
  {
     printf("~~%%");
  }
  return ret;
}
%ctor
{
   NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];    
   MSHookFunction((void *)open, (void *)new_open, (void **)&orig_open);   
   [pool drain];
}

しかし、何も起こらなかったようです。それで、私のコードに何か問題がありますか?

4

0 に答える 0