分析大厂热修复

465 阅读2分钟

0x01 分析定位淘宝最近的3.25弹窗

__int64 sub_10615F964()
{
  void *v0; // x0
  void *v1; // x19
  double v2; // d0
  double v3; // d8
  __int64 v4; // x1
  void *v5; // x0
  void *v6; // x19
  __int64 v7; // x1
  void *v8; // x0
  void *v9; // x20
  void *v10; // x0
  __int64 v11; // x0
  __int64 v12; // x21
  void *v13; // x0
  void *v14; // x20
  __int64 v15; // x1
  void *v16; // x0
  void *v17; // x21
  void *v18; // x0
  void *v19; // x0
  void *v20; // x22
  void *v21; // x0
  __int64 v22; // x23
  __int64 v23; // x1
  double v24; // d0
  __int64 v25; // x1
  double v26; // d0
  void *v27; // x0
  void *v28; // x24
  void *v29; // x0
  __int64 v30; // x0
  __int64 v31; // x26
  void *v32; // x0
  __int64 v33; // x25
  __int64 v34; // x1
  void *v35; // x0
  void *v36; // x26
  void *v37; // x0
  pid_t v38; // w0

  v0 = objc_msgSend(&OBJC_CLASS___NSDate, "date");
  v1 = (void *)objc_retainAutoreleasedReturnValue(v0);
  objc_msgSend(v1, "timeIntervalSince1970");
  v3 = v2;
  objc_release(v1);
  v5 = (void *)objc_alloc(&OBJC_CLASS___NSDateFormatter, v4);
  v6 = objc_msgSend(v5, "init");
  objc_msgSend(v6, "setDateFormat:", CFSTR("MMM d yyyy"));
  v8 = (void *)objc_alloc(&OBJC_CLASS___NSLocale, v7);
  v9 = objc_msgSend(v8, "initWithLocaleIdentifier:", CFSTR("en_US"));
  objc_msgSend(v6, "setLocale:", v9);
  objc_release(v9);
  v10 = objc_msgSend(&OBJC_CLASS___NSString, "stringWithFormat:", CFSTR("%s"), "Mar 13 2020");
  v11 = objc_retainAutoreleasedReturnValue(v10);
  v12 = v11;
  v13 = objc_msgSend(v6, "dateFromString:", v11);
  v14 = (void *)objc_retainAutoreleasedReturnValue(v13);
  objc_release(v12);
  v16 = (void *)objc_alloc(&OBJC_CLASS___NSDateComponents, v15);
  v17 = objc_msgSend(v16, "init");
  objc_msgSend(v17, "setDay:", 15LL);
  v18 = objc_msgSend(&OBJC_CLASS___NSCalendar, "currentCalendar");
  v19 = (void *)objc_retainAutoreleasedReturnValue(v18);
  v20 = v19;
  v21 = objc_msgSend(v19, "dateByAddingComponents:toDate:options:", v17, v14, 0LL);
  v22 = objc_retainAutoreleasedReturnValue(v21);
  objc_msgSend(v14, "timeIntervalSince1970");
  if ( v3 - v24 >= 1296000.0 )
  {
    v37 = (void *)objc_alloc(&OBJC_CLASS___UIAlertView, v23);
    v28 = objc_msgSend(
            v37,
            "initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:",
            CFSTR("您使用的程序是测试版本,目前已经过期,请更新到最新版本"),
            0LL,
            0LL,
            CFSTR("确定"),
            0LL);
    objc_msgSend(v28, "performSelectorOnMainThread:withObject:waitUntilDone:", "show", 0LL, 0LL);
    sleep(0xAu);
    v38 = getpid();
    kill(v38, 9);
    goto LABEL_5;
  }
  objc_msgSend(v14, "timeIntervalSince1970");
  if ( v3 - v26 >= 1036800.0 )
  {
    v27 = (void *)objc_alloc(&OBJC_CLASS___NSDateFormatter, v25);
    v28 = objc_msgSend(v27, "init");
    objc_msgSend(v28, "setDateFormat:", CFSTR("yyyy-MM-dd"));
    v29 = objc_msgSend(v28, "stringFromDate:", v22);
    v30 = objc_retainAutoreleasedReturnValue(v29);
    v31 = v30;
    v32 = objc_msgSend(
            &OBJC_CLASS___NSString,
            "stringWithFormat:",
            CFSTR("您使用的程序是内测版本,将于当地时间%@到期,到期后将无法使用,请尽快下载最新版本"),
            v30);
    v33 = objc_retainAutoreleasedReturnValue(v32);
    objc_release(v31);
    v35 = (void *)objc_alloc(&OBJC_CLASS___UIAlertView, v34);
    v36 = objc_msgSend(
            v35,
            "initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:",
            v33,
            0LL,
            0LL,
            CFSTR("确定"),
            0LL);
    objc_msgSend(v36, "performSelectorOnMainThread:withObject:waitUntilDone:", "show", 0LL, 0LL);
    objc_release(v36);
    objc_release(v33);
LABEL_5:
    objc_release(v28);
  }
  objc_release(v22);
  objc_release(v20);
  objc_release(v17);
  objc_release(v14);
  return objc_release(v6);
}