`
auauau
  • 浏览: 172149 次
社区版块
存档分类
最新评论

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

    博客分类:
  • iOS
阅读更多
//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 0x21
struct encryption_info_command {
    uint32_t cmd;
    uint32_t cmdsize;
    uint32_t cryptoff;
    uint32_t cryptsize;
    uint32_t cryptid;
};
#endif

int 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_SIMULATOR
int 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 statment
NSString* 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 first
		NSString *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 Method
NSString* 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 Method
NSString* bundlePath = [[NSBundle mainBundle] bundlePath];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:(@"%@/_CodeSignature", bundlePath)];
if (!fileExists) {
	//Pirated
	NSLog(@"Pirated");
}
BOOL fileExists2 = [[NSFileManager defaultManager] fileExistsAtPath:(@"%@/CodeResources", bundlePath)];
if (!fileExists2) {
	//Pirated
	NSLog(@"Pirated2");
}
BOOL fileExists3 = [[NSFileManager defaultManager] fileExistsAtPath:(@"%@/ResourceRules.plist", bundlePath)];
if (!fileExists3) {
	//Pirated
	NSLog(@"Pirated3");
}

//Covert exits
close(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");
分享到:
评论

相关推荐

    清理系统内无用的进程

    当我们谈论"清理系统内无用的进程"时,我们实际上是在讨论如何管理和优化系统资源,确保计算机运行更加高效。这涉及到多个方面,包括了解什么是进程、如何查看当前运行的进程、如何判断哪些是无用的以及如何安全地...

    SQL 防攻击方法

    SQL防攻击方法主要关注的是如何保护SQL Server数据库系统免受恶意攻击,确保数据安全。以下是一些关键的防护措施和解决方案: 1. **加强SQL Server安全设置**:在安装SQL Server时,应设置复杂的sa(系统管理员)...

    FPGA密码芯片改进掩码防护方法研究.pdf

    这样的改进方法虽然在理论上能够提高安全性,但在实际应用中需要进一步的验证和评估。 为了验证所提出的改进方法的有效性,文中通过实验分析了DES伪随机掩码算法的安全性。实验结果表明,该算法能够有效抵抗一阶差...

    智能关闭无用服务

    综上所述,这个压缩包可能包含了一个用于自动关闭系统中无用服务和有害端口的批处理脚本。用户可以通过运行这个脚本来优化系统性能,减少资源消耗,同时提高系统的安全水平。然而,值得注意的是,任何服务的关闭都...

    无用资源无用资源无用资源

    在本资源包中,"无用资源无用资源无用资源"的标题可能是一个错误或者重复的表述,实际上应当是关于操作系统的学习资料集合。这个压缩包包含了“计算机操作系统 视频+考点精讲+课件.txt”,这暗示了里面包含的内容...

    [精选]企业精益生产培训教材之防错技术.pptx

    因此,防错策略不仅仅是对操作员进行培训和惩罚,而是要从源头上解决问题,避免错误的发生。防错技术强调的是预防而非事后补救,它包括两个主要方面:一是让操作员在操作过程中能直接发现错误,二是确保只有满足特定...

    传染病的消毒隔离防护.doc

    消毒是消除或减少传播媒介上的病原微生物,以达到无害化的过程。根据目的,消毒可以分为预防性和疫源地消毒。预防性消毒是在没有明确传染源的情况下,对可能被污染的环境和物品进行消毒;疫源地消毒则针对已知的传染...

    CCleaner C盘清理工具

    - 在使用CCleaner之前,确保已经备份了重要的个人数据和系统设置,以防意外情况。 - 定期更新CCleaner到最新版本,以获得最新的清理规则和安全补丁。 - 清理注册表时要谨慎,不要随意删除未知项,以免影响系统稳定。...

    无线路由wifi密码设置方法有哪些.doc

    无线路由器(Wifi)设置很简单,一般产品说明书上就有详细设置方法,但也有很多特殊情况下,设置无线路由器就需要动点心思了。比如:说明书丢失、使用或平板电脑设置无线路由器、路由器下挂无线路由器、MAC 地址或 ...

    一个简单的游戏循环,一个非常基础的塔防游戏逻辑代码

    总之,这个基础塔防游戏逻辑代码示例是一个很好的学习起点,通过它你可以了解到游戏循环的基本结构和游戏逻辑的设计思路。随着技能的提升,你可以逐步添加更多功能,打造更加丰富和有趣的游戏体验。

    javascript 代码 简单加密的几个方法.docx

    值得注意的是,尽管这些方法可以在一定程度上保护JS代码不被轻易篡改或盗用,但由于JS的运行机制决定了其完全加密是不可能的。因此,在进行代码保护的同时,还应采取其他措施,如服务器端验证、数据加密传输等,以...

    大数据时代计算机网络信息安全及防护策略研究 (6).pdf

    这些数据来源于网络上的各种活动,包括社交媒体互动、在线交易、物联网设备产生的实时信息等。大数据的特点在于其海量、多样性和复杂性。内容涵盖多种类型,如文本、图像、音频和视频,这些信息来源广泛,涵盖了社会...

    文件误删恢复

    6. **防患于未然**:养成良好的文件管理习惯,定期清理不再需要的文件,避免在重要文件附近存储临时或无用的文件,这样即使误删,也不会造成太大影响。同时,保持操作系统和安全软件的更新,可以防止恶意软件导致的...

    Web应用防火墙绕过技术.pdf

    在Web服务器层面上,也可以找到绕过WAF的方法。例如,在IIS服务器上,利用ASP或ASPX编程语言的特性,如“%”字符在不同阶段的解析差异,可以构造出绕过WAF的请求。在Apache服务器上,畸形的请求方法(如非标准HTTP...

    关于电子功用-便携式电子装置及该便携式电子装置的使用方法的说明分析.rar

    《便携式电子装置及该便携式电子装置的使用方法》 电子设备在现代社会中的应用日益广泛,尤其是便携式电子装置,如智能手机、平板电脑、笔记本电脑等,它们以其小巧便携、功能强大等特点,极大地改变了人们的生活...

    办公室7S管理的内容与要求.doc

    办公桌上只保留基本的办公用品,如文件架、电脑、键盘、鼠标、水杯和绿植。办公桌下的空间应保持整洁,不堆放杂物。抽屉内的物品应按类别分层存放,公私物品分开,电脑电源等设备应定位摆放。 3. 清扫:每位员工...

    病毒知识 病毒防范 病毒特征

    4. **磁盘空间异常消耗**:某些病毒会在硬盘上产生大量无用文件,导致磁盘空间迅速减少。例如,一个10GB大小的磁盘在安装了正常的Win98或WinNT4.0操作系统后,剩余空间不多,此时如果发现磁盘空间突然减少,则可能是...

    Win7开机提示“配置Windows请勿关机”怎么办?.docx

    安全模式是一种诊断模式,可以排除驱动程序和其他非基本服务的影响。 3. **方法三**:在安全模式下执行系统还原。如果之前有设置系统还原点,那么在安全模式下可以找到“系统还原”工具,选择一个之前的还原点来...

    电脑基本知识

    1. **WINXP优化精髓.txt**:Windows XP是一款经典的微软操作系统,其优化主要包括清理无用文件、关闭不必要的启动项、调整系统设置以提高运行速度。例如,通过“控制面板”管理启动程序,减少开机启动时间,或者利用...

    飞鱼星路由器设置教程.doc

    飞鱼星路由器设置教程主要涵盖了路由器的基本信息解读和正确使用方法,同时也涉及到了故障排查和QoS流量控制的设定。 首先,了解路由器背面铭牌上的关键信息至关重要。产品型号如VE982,是一个厂商自定义的标识,不...

Global site tag (gtag.js) - Google Analytics