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

 

posted @ 2019-08-27 07:26  heycomputer  阅读(182)  评论(0编辑  收藏  举报