飄云閣(PYG官方)

 找回密碼
 加入論壇

QQ登錄

只需一步,快速開始

掃一掃,訪問微社區

查看: 279|回復: 3
打印 上一主題 下一主題

[macOS] 國慶獻禮---Mac上最強大的防火墻HandsOff!靜態分析筆記

[復制鏈接]
  • TA的每日心情
    開心
    3 小時前
  • 簽到天數: 104 天

    [LV.6]常住居民II

    跳轉到指定樓層
    樓主
    發表于 2019-10-1 19:29:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    本帖最后由 zyjsuper 于 2019-10-1 19:35 編輯

    這款軟件之前也分析過,但一直都沒有得到想要的結果,本文也是倉促成文,沒有經過驗證,希望測試過的朋友給個回復。有錯誤之處望見諒。
    破解使用到的工具為Hopper Disassember v4,IDA和radare不方便修改簽名,Mac上覺得Hopper最好用。
    1. 打開HandsOff!會提示Demo版具備和完整版本同樣都功能,只是每隔四個小時關閉5分鐘,如圖所示:



    2. HandsOff!打開4個小時以后,會提示"Demo has ended..."
    搜索此字符串,發現出現在文件"/Library/Handsoff/HandsOffAgent.app/Contents/MacOS/HandsOffAgent"中。
    如圖所示位置,將"je"改成"jmp",即可跳過"Demo has ended..."


    3. 再使用一段時間之后,軟件又會出現另外一個提示:"Your evaluation time for Hands Off! has expired......",修改如圖所示,即可跳過判斷。


    4. 用IDA找到疑似算法部分的代碼如下,小菜目前只會爆破,望大神賜教。
    [Asm] 純文本查看 復制代碼
    __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;
    }


    在祖國母親70華誕之際,祝國家繁榮富強,國泰民安。

    本帖子中包含更多資源

    您需要 登錄 才可以下載或查看,沒有帳號?加入論壇

    x

    評分

    參與人數 1威望 +1 飄云幣 +1 收起 理由
    飛天 + 1 + 1 PYG有你更精彩!

    查看全部評分

    分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友 微信微信
    收藏收藏 轉播轉播 分享分享 分享淘帖 頂 踩 掃碼贊助 微信分享
  • TA的每日心情
    開心
    1 小時前
  • 簽到天數: 938 天

    [LV.10]以壇為家III

    沙發
    發表于 2019-10-2 08:47:41 | 只看該作者
    支持分享過程,留個腳印。
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    昨天 09:31
  • 簽到天數: 80 天

    [LV.6]常住居民II

    藤椅
    發表于 2019-10-2 10:13:52 | 只看該作者
    支持分享過程,感謝大神無私奉獻
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    昨天 13:34
  • 簽到天數: 146 天

    [LV.7]常住居民III

    板凳
    發表于 2019-10-2 12:28:01 | 只看該作者
    溜溜溜~~  感謝分享
    回復 支持 反對

    使用道具 舉報

    您需要登錄后才可以回帖 登錄 | 加入論壇

    本版積分規則

    關閉

    站長推薦上一條 /1 下一條

    快速回復 返回頂部 返回列表
    北京pk10遗漏统计