Hands Off!破解笔记
wx 31C0FFC0C390 @0x1000037a1

wx 0F85 @0x1000038be

Demo注册码:
HDOF4-00416E746F3274E65204D6973736F2018-01B2674DAC6F2D5CA1529B318C3014E36D331CA45458DA92-8E090D1B5E105F716CF0A2A44EE05F261E45C80C257E8C86
注册码前缀:
HDOF1 HDOF2 HDOF3 HDOF4
int sub_100009973(int arg0, int arg1, int arg2, int arg3) {
rbx = arg3;
r15 = arg2;
r12 = arg1;
r14 = arg0;
if (((arg2 != 0x0) && (rbx != 0x0)) && ([rbx isEqual:@"User-Agent"] != 0x0)) {
rax = [NSDictionary dictionaryWithContentsOfFile:@"/Library/Handsoff/Preferences.plist"];
if (rax != 0x0) {
rax = [rax objectForKey:@"a_serials"];
if (rax != 0x0) {
r13 = rax;
if ([rax count] != 0x0) {
var_50 = rbx;
var_48 = r14;
rax = [r13 objectAtIndex:0x0];
r13 = rax;
rax = [rax rangeOfString:@"HDOF1-"];
if (rax == 0x7fffffffffffffff) {
rax = [r13 rangeOfString:@"HDOF2-"];
if (rax == 0x7fffffffffffffff) {
rax = [r13 rangeOfString:@"HDOF3-"];
if (rax == 0x7fffffffffffffff) {
rax = [r13 rangeOfString:@"HDOF4-"];
if (rax != 0x7fffffffffffffff) {
r14 = [r13 substringFromIndex:rax + 0x6];
rdx = [NSCharacterSet whitespaceCharacterSet];
rax = [r14 stringByTrimmingCharactersInSet:rdx];
r14 = rax;
if ([rax length] != 0x0) {
var_58 = r12;
rax = [r14 UTF8String];
var_40 = intrinsic_movaps(var_40, 0x0);
CC_MD5(rax, strlen(rax), &var_40);
rax = [NSMutableString stringWithString:r15];
r15 = rax;
[rax appendString:@" ["];
r12 = 0x0;
do {
[r15 appendFormat:@"%02X", *(int8_t *)(rbp + (r12 - 0x40)) & 0xff];
r12 = r12 + 0x1;
} while (r12 != 0x10);
[r15 appendString:@"]"];
r12 = var_58;
}
}
}
else {
r14 = [r13 substringFromIndex:rax + 0x6];
rdx = [NSCharacterSet whitespaceCharacterSet];
rax = [r14 stringByTrimmingCharactersInSet:rdx];
r14 = rax;
if ([rax length] != 0x0) {
var_58 = r12;
rax = [r14 UTF8String];
var_40 = intrinsic_movaps(var_40, 0x0);
CC_MD5(rax, strlen(rax), &var_40);
rax = [NSMutableString stringWithString:r15];
r15 = rax;
[rax appendString:@" ["];
r12 = 0x0;
do {
[r15 appendFormat:@"%02X", *(int8_t *)(rbp + (r12 - 0x40)) & 0xff];
r12 = r12 + 0x1;
} while (r12 != 0x10);
[r15 appendString:@"]"];
r12 = var_58;
}
}
}
else {
r14 = [r13 substringFromIndex:rax + 0x6];
rdx = [NSCharacterSet whitespaceCharacterSet];
rax = [r14 stringByTrimmingCharactersInSet:rdx];
r14 = rax;
if ([rax length] != 0x0) {
var_58 = r12;
rax = [r14 UTF8String];
var_40 = intrinsic_movaps(var_40, 0x0);
CC_MD5(rax, strlen(rax), &var_40);
rax = [NSMutableString stringWithString:r15];
r15 = rax;
[rax appendString:@" ["];
r12 = 0x0;
do {
[r15 appendFormat:@"%02X", *(int8_t *)(rbp + (r12 - 0x40)) & 0xff];
r12 = r12 + 0x1;
} while (r12 != 0x10);
[r15 appendString:@"]"];
r12 = var_58;
}
}
}
else {
r14 = [r13 substringFromIndex:rax + 0x6];
rdx = [NSCharacterSet whitespaceCharacterSet];
rax = [r14 stringByTrimmingCharactersInSet:rdx];
r14 = rax;
if ([rax length] != 0x0) {
var_58 = r12;
rax = [r14 UTF8String];
var_40 = intrinsic_movaps(var_40, 0x0);
CC_MD5(rax, strlen(rax), &var_40);
rax = [NSMutableString stringWithString:r15];
r15 = rax;
[rax appendString:@" ["];
r12 = 0x0;
do {
[r15 appendFormat:@"%02X", *(int8_t *)(rbp + (r12 - 0x40)) & 0xff];
r12 = r12 + 0x1;
} while (r12 != 0x10);
[r15 appendString:@"]"];
r12 = var_58;
}
}
r14 = var_48;
rbx = var_50;
}
}
}
}
var_30 = **___stack_chk_guard;
(*qword_100055570)(r14, r12, r15, rbx);
rax = *___stack_chk_guard;
rax = *rax;
if (rax != var_30) {
rax = __stack_chk_fail();
}
return rax;
}
__int64 __fastcall sub_100009973(__int64 a1, __int64 a2, void *a3, void *a4)
{
void *v4; // rbx
void *v5; // r15
__int64 v6; // r12
__int64 v7; // r14
void *v8; // rax
void *v9; // rax
void *v10; // r13
void *v11; // rax
void *v12; // r13
char *v13; // rax
void *v14; // r14
void *v15; // rax
void *v16; // r14
const char *v17; // rax
__int64 v18; // r14
unsigned int v19; // eax
__int64 v20; // r12
__int128 v22; // [rsp+20h] [rbp-40h]
v4 = a4;
v5 = a3;
v6 = a2;
v7 = a1;
if ( a3 )
{
if ( a4 )
{
if ( (unsigned __int8)objc_msgSend(a4, "isEqual:", CFSTR("User-Agent")) )
{
v8 = objc_msgSend(
&OBJC_CLASS___NSDictionary,
"dictionaryWithContentsOfFile:",
CFSTR("/Library/Handsoff/Preferences.plist"));
if ( v8 )
{
v9 = objc_msgSend(v8, "objectForKey:", CFSTR("a_serials"));
if ( v9 )
{
v10 = v9;
if ( objc_msgSend(v9, "count") )
{
v11 = objc_msgSend(v10, "objectAtIndex:", 0LL);
v12 = v11;
v13 = (char *)objc_msgSend(v11, "rangeOfString:", CFSTR("HDOF1-")); //序列号以HDOF1-,HDOF2-,HDOF3-,HDOF4-开头
if ( v13 != (char *)0x7FFFFFFFFFFFFFFFLL
|| (v13 = (char *)objc_msgSend(v12, "rangeOfString:", CFSTR("HDOF2-")),
v13 != (char *)0x7FFFFFFFFFFFFFFFLL)
|| (v13 = (char *)objc_msgSend(v12, "rangeOfString:", CFSTR("HDOF3-")),
v13 != (char *)0x7FFFFFFFFFFFFFFFLL)
|| (v13 = (char *)objc_msgSend(v12, "rangeOfString:", CFSTR("HDOF4-")),
v13 != (char *)0x7FFFFFFFFFFFFFFFLL) )
{
v14 = objc_msgSend(v12, "substringFromIndex:", v13 + 6); //从序列号第六位开始取字符串值赋值给v14
v15 = objc_msgSend(&OBJC_CLASS___NSCharacterSet, "whitespaceCharacterSet");
v16 = objc_msgSend(v14, "stringByTrimmingCharactersInSet:", v15); //去掉字符串中除数字以外的字符赋值给v16
if ( objc_msgSend(v16, "length") ) //取v16的长度
{
v17 = (const char *)objc_msgSend(v16, "UTF8String"); //将v16的unicode值赋值给v17
v18 = (__int64)v17; //将v17转换成整形
v22 = 0LL;
v19 = strlen(v17); //取v17的长度
CC_MD5(v18, v19, (__int64)&v22); //CC_MD5(v18,v19,0)
v5 = objc_msgSend(&OBJC_CLASS___NSMutableString, "stringWithString:", v5);
objc_msgSend(v5, "appendString:", CFSTR(" ["));
v20 = 0LL;
do
objc_msgSend(v5, "appendFormat:", CFSTR("%02X"), *((unsigned __int8 *)&v22 + v20++));
while ( v20 != 16 );
objc_msgSend(v5, "appendString:", CFSTR("]"));
v6 = a2;
}
}
v7 = a1;
}
}
}
}
}
}
qword_100055570(v7, v6, v5, v4);
return __stack_chk_guard;
}
wx 90 @0x10000b49a

wx eb59 @0x10000A01B

浙公网安备 33010602011771号