He estado tryign a implementar el siguiente código anti piratería de este wiki: http://theiphonewiki.com/wiki/index.php?title=Bugging_DebuggersLa implementación del código PT_DENY_ATTACH antipiratería
Pero a pesar de seguir a la letra mis salidas de aplicaciones con un
Program exited with status value:45.
Cuando lo pruebo. Si hago un comentario sobre la función, llamo disable_gdb(); la aplicación se ejecuta de forma normal.
¿Qué es lo que estoy haciendo mal? ¿O es que el código está funcionando como debería ... y sale mientras está conectado xcode?
#import <UIKit/UIKit.h>
#import <dlfcn.h>
#import <sys/types.h>
typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#if !defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif // !defined(PT_DENY_ATTACH)
int main(int argc, char *argv[])
{
NSLog(@"Main Called ");
disable_gdb();
NSLog(@"After cracker code");
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
void disable_gdb()
{
void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
dlclose(handle);
}
int main3(int argc, char *argv[])
{
return -1;
}
Kindest Regards, -Code
Por lo tanto, la respuesta es que no hay razón para tratar de evitar que un depurador de depuración de la aplicación? – Chicowitz