读书人

基本下已经无用的防破解方法

发布时间: 2012-08-21 13:00:21 作者: rapoo

基本上已经无用的防破解方法

//First Method#import <dlfcn.h>#import <mach-o/dyld.h>#import <TargetConditionals.h>/* The encryption info struct and constants are missing from the iPhoneSimulator SDK, but not from the iPhoneOS or * Mac OS X SDKs. Since one doesn't ever ship a Simulator binary, we'll just provide the definitions here. */#if TARGET_IPHONE_SIMULATOR && !defined(LC_ENCRYPTION_INFO)#define LC_ENCRYPTION_INFO 0x21struct encryption_info_command {    uint32_t cmd;    uint32_t cmdsize;    uint32_t cryptoff;    uint32_t cryptsize;    uint32_t cryptid;};#endifint main (int argc, char *argv[]);static BOOL is_encrypted () {    const struct mach_header *header;    Dl_info dlinfo;    /* Fetch the dlinfo for main() */    if (dladdr(main, &dlinfo) == 0 || dlinfo.dli_fbase == NULL) {        NSLog(@"Could not find main() symbol (very odd)");        return NO;    }    header = dlinfo.dli_fbase;    /* Compute the image size and search for a UUID */    struct load_command *cmd = (struct load_command *) (header+1);    for (uint32_t i = 0; cmd != NULL && i < header->ncmds; i++) {        /* Encryption info segment */        if (cmd->cmd == LC_ENCRYPTION_INFO) {            struct encryption_info_command *crypt_cmd = (struct encryption_info_command *) cmd;            /* Check if binary encryption is enabled */            if (crypt_cmd->cryptid < 1) {                /* Disabled, probably pirated */                return NO;            }            /* Probably not pirated? */            return YES;        }        cmd = (struct load_command *) ((uint8_t *) cmd + cmd->cmdsize);    }    /* Encryption info not found */    return NO;}//Second Method#if !TARGET_IPHONE_SIMULATORint root = getgid();if (root == 0) {exit(0);}#endif//Third Method#import <dlfcn.h>#import <sys/types.h>#import <Foundation/Foundation.h>#import <TargetConditionals.h>// The iPhone SDK doesn't have <sys/ptrace.h>, but it does have ptrace, and it// works just fine.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)void ZNDebugIntegrity() {// If all assertions are enabled, we're in a legitimate debug build.#if TARGET_IPHONE_SIMULATOR || defined(DEBUG) || (!defined(NS_BLOCK_ASSERTIONS) && !defined(NDEBUG))return;#endif// Lame obfuscation of the string "ptrace".char* ptrace_root = "socket";char ptrace_name[] = {0xfd, 0x05, 0x0f, 0xf6, 0xfe, 0xf1, 0x00};for (size_t i = 0; i < sizeof(ptrace_name); i++) {ptrace_name[i] += ptrace_root[i];}void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);ptrace_ptr_t ptrace_ptr = dlsym(handle, ptrace_name);ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);dlclose(handle);}//Fourth Method#define kInfoSize 500//Place your NSLog Plist Size into the above Define statmentNSString* bundlePath = [[NSBundle mainBundle] bundlePath];NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath ];NSDictionary *fileInfo = [[NSBundle mainBundle] infoDictionary];NSFileManager *fileManager = [NSFileManager defaultManager];NSDictionary *fileAttributes = [fileManager fileAttributesAtPath:path traverseLink:YES];if (fileAttributes != nil) {NSNumber *fileSize;if(fileSize = [fileAttributes objectForKey:NSFileSize]){NSLog(@"File Size:  %qi\n", [fileSize unsignedLongLongValue]);//Best to see the File Size and change it accordingly firstNSString *cSID = [[NSString alloc] initWithFormat:@"%@%@%@%@%@",@"Si",@"gne",@"rIde",@"ntity",@""];BOOL checkedforPir = false;if([fileInfo objectForKey:cSID] == nil || [fileInfo objectForKey:cSID] != nil) {if([fileSize unsignedLongLongValue] == kInfoSize) {checkedforPir = true;}}if(!checkedforPir){//Pirated}[cSID release];}}//Fifth MethodNSString* bundlePath = [[NSBundle mainBundle] bundlePath];NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath];NSString* path2 = [NSString stringWithFormat:@"%@/AppName", bundlePath];NSDate* infoModifiedDate = [[[NSFileManager defaultManager] fileAttributesAtPath:path traverseLink:YES] fileModificationDate];NSDate* infoModifiedDate2 = [[[NSFileManager defaultManager] fileAttributesAtPath:path2 traverseLink:YES] fileModificationDate];NSDate* pkgInfoModifiedDate = [[[NSFileManager defaultManager] fileAttributesAtPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"PkgInfo"] traverseLink:YES] fileModificationDate];if([infoModifiedDate timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) {//Pirated}if([infoModifiedDate2 timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) {//Pirated}//Sixth MethodNSString* bundlePath = [[NSBundle mainBundle] bundlePath];BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:(@"%@/_CodeSignature", bundlePath)];if (!fileExists) {//PiratedNSLog(@"Pirated");}BOOL fileExists2 = [[NSFileManager defaultManager] fileExistsAtPath:(@"%@/CodeResources", bundlePath)];if (!fileExists2) {//PiratedNSLog(@"Pirated2");}BOOL fileExists3 = [[NSFileManager defaultManager] fileExistsAtPath:(@"%@/ResourceRules.plist", bundlePath)];if (!fileExists3) {//PiratedNSLog(@"Pirated3");}//Covert exitsclose(0);[[UIApplication sharedApplication] terminate];[[UIApplication sharedApplication] terminateWithSuccess];UIWebView *a = [UIWebView alloc];UIWindow *b = [UIWindow alloc];UIView *c = [UIView alloc];UILabel *d = [UILabel alloc];UITextField *e = [UITextField alloc];UIImageView *f = [UIImageView alloc];UIImage *g = [UIImage alloc];UISwitch *h = [UISwitch alloc];UISegmentedControl *i = [UISegmentedControl alloc];UITabBar *j = [UITabBar alloc];[a alloc];[b alloc];[c alloc];[d alloc];[e alloc];[f alloc];[g alloc];[h alloc];[i alloc];[j alloc];system("killall SpringBoard");

读书人网 >移动开发

热点推荐