1. 程式人生 > >OD+IDA6.1破解HideWizard v9.29(無憂隱藏)【附下載】

OD+IDA6.1破解HideWizard v9.29(無憂隱藏)【附下載】

http://pan.baidu.com/s/1jGIdxzg
《視窗、檔案、程序隱藏工具——無憂隱藏》(HideWizard_v9.29)最新版含破解補丁.rar

以前搞過一些破解,但都是一些軟柿子,前幾天有隱藏木馬這麼個需求,包括程序、視窗、硬碟檔案等,非要用HideWizard出手不可。HideWizard6.4有破解版但功能不夠,只好拿HideWizard最新版9.29開刀了。感覺還是比較麻煩的,也許是我水平有限,哈哈,下面進入正題

0)先對程式的情況說明一下,程式總共有三處驗證,有些可以觀察到,有些是破解過程中發現
1.對註冊碼在客戶端進行初步判斷,輸入不正確的話什麼提示都沒有,否則進入第二步伺服器啟用驗證;
2.與伺服器通訊,在static控制元件顯示返回結果;
3.使用imagehlp進行EXE校驗,如果發現二進位制被修改則自動退出
下面詳細闡述哈


1)首先是PEiD查殼,啥也沒發現,事實上到最後我也不知道是什麼殼,也沒學過脫殼,汗一個,哪位大大知道不妨告知哈。IDA6.1開啟EXE,可以判斷是MFC程式

2)OD載入程式後,自帶的7E42xxxx斷點一定要清除,否則會導致系統假死,狂按F9過一分鐘能緩回來,緩不回來只好重啟了。載入成功後窗口切換焦點時也是一頓一頓的,不知是不是有意為之,除錯過程中儘量不要切換焦點。頓的程度好像與系統和OD也有關係,具體作用關係不明,最好找個能自動清除debug標誌位的。OD換了好幾個

才碰上個順手的,我用的ODbyDYK v1.10裡的Pza74.exe,能自動清除debug標誌位,對call jmp等指令能高亮顯示,Pza74缺點是外掛不如OllyICE多,但OllyICE沒高亮,看的很頭疼。


3)正式進入除錯步驟,首先需要在啟用按鈕處下斷,因為沒有任何提示,只好在CCmdTarget::OnCmdMsg處下斷,在IDA記下地址在OD直接bp。OnCmdMsg第四個引數即為消

息響應函式。函式如下,程式在0042AB9B處檢查註冊碼位數,只要讓輸入的註冊碼為17位就不會跳到函式末尾,在末尾處可以看出SendMessageA是進入下一步的關鍵,因

此中間的演算法就不用看了,直接找跳轉,把該nop的nop掉。

<pre name="code" class="plain" style="color: rgb(69, 69, 69); font-size: 14px; line-height: 21px;">0042AB5F   /.  55             push ebp
0042AB60   |.  8BEC           mov ebp,esp
0042AB62   |.  83EC 14        sub esp,14
0042AB65   |.  56             push esi
0042AB66   |.  8BF1           mov esi,ecx
0042AB68   |.  8975 EC        mov dword ptr ss:[ebp-14],esi
0042AB6B   |.  FF15 C4D14600  call dword ptr ds:[<&KERNEL32.GetTickCount>]     ; [GetTickCount
0042AB71   |.  8BC8           mov ecx,eax
0042AB73   |.  2B0D A4F44800  sub ecx,dword ptr ds:[48F4A4]
0042AB79   |.  81F9 2C010000  cmp ecx,12C
0042AB7F   |.  0F82 40010000  jb HideWiza.0042ACC5
0042AB85   |.  6A 01          push 1
0042AB87   |.  8BCE           mov ecx,esi
0042AB89   |.  A3 A4F44800    mov dword ptr ds:[48F4A4],eax
0042AB8E   |.  E8 B0530000    call HideWiza.0042FF43
0042AB93   |.  81C6 10040000  add esi,410
0042AB99   |.  8B06           mov eax,dword ptr ds:[esi]
0042AB9B   |.  8378 F4 11     cmp dword ptr ds:[eax-C],11 ////////////////////
0042AB9F   |.  8BCE           mov ecx,esi
0042ABA1   |.  0F85 14010000  jnz HideWiza.0042ACBB ////////////////不成立則跳到0042ACC5處,不能跳,需要nop掉
...
0042AC9B   |. /75 1C          jnz short HideWiza.0042ACB9 /////////////////不能跳,需要nop掉
0042AC9D   |. |394D F0        cmp dword ptr ss:[ebp-10],ecx
0042ACA0   |. |75 17          jnz short HideWiza.0042ACB9 /////////////////不能跳,需要nop掉
0042ACA2   |. |8B45 EC        mov eax,dword ptr ss:[ebp-14]
0042ACA5   |. |6A 0A          push 0A                                          ; /lParam = A
0042ACA7   |. |6A 01          push 1                                           ; |wParam = 1
0042ACA9   |. |68 CA040000    push 4CA                                         ; |Message = MSG(4CA)
0042ACAE   |. |FF70 20        push dword ptr ds:[eax+20]                       ; |hWnd
0042ACB1   |. |FF15 84D54600  call dword ptr ds:[<&USER32.SendMessageA>]       ; \SendMessageA
0042ACB7   |. |EB 0C          jmp short HideWiza.0042ACC5
0042ACB9   |> \8BCE           mov ecx,esi
0042ACBB   |>  68 F2DC4600    push HideWiza.0046DCF2
0042ACC0   |.  E8 1B7BFDFF    call HideWiza.004027E0
0042ACC5   |>  5E             pop esi
0042ACC6   |.  C9             leave
0042ACC7   \.  C3             retn

4)用ue把exe改掉後發現程式自動退出,猜測是某種校驗,這時程式不會彈出視窗,判斷是在CXXDlg建構函式或OnInitialDialog等處。直接在入口處跟進,這裡有個取巧的辦法,直接od同時載入未修改和已修改的一起debug,比較哪裡不一樣,如果過程中哪個call直接把視窗彈出來或是退出,就需要重新載入跟進這個call。最後發現下面的程式碼,終於找到了,就是imagehlp.MapFileAndCheckSumA這個東西做的怪。查了一下imagehlp,的確是進行二進位制校驗的一個東東。0041E36E處可以看出[ebp-2C]與[ebp-28]一個是編譯時生成的,一個是現算的。後面jnz判斷是否一致,後面的OpenMutexA啥的應該是保證程式單例,是程式後面的邏輯,因此把jnz nop掉即可。

0041E349    .  E9 AD030000    jmp HideWiza.0041E6FB
0041E34E    >  8D45 D8        lea eax,dword ptr ss:[ebp-28]
0041E351    .  50             push eax
0041E352    .  8D45 D4        lea eax,dword ptr ss:[ebp-2C]
0041E355    .  33FF           xor edi,edi
0041E357    .  50             push eax
0041E358    .  47             inc edi
0041E359    .  68 40EA4800    push HideWiza.0048EA40
0041E35E    .  897D D4        mov dword ptr ss:[ebp-2C],edi
0041E361    .  895D D8        mov dword ptr ss:[ebp-28],ebx
0041E364    .  FF15 FCD74600  call dword ptr ds:[<&imagehlp.Ma>;  imagehlp.MapFileAndCheckSumA 
/////////////////////////////////////////////Checksum!!!
0041E36A    .  85C0           test eax,eax
0041E36C    .  75 0C          jnz short HideWiza.0041E37A
0041E36E    .  8B45 D4        mov eax,dword ptr ss:[ebp-2C]
0041E371    .  3B45 D8        cmp eax,dword ptr ss:[ebp-28]
0041E374    .  0F85 81030000  jnz HideWiza.0041E6FB ////////////////////////////////should not jmp, so nop it
0041E37A    >  68 6C3E4700    push HideWiza.00473E6C           ;  ASCII "SEAN_U_HIDE_WIZARD"
0041E37F    .  8D4D E0        lea ecx,dword ptr ss:[ebp-20]
0041E382    .  E8 604BFEFF    call HideWiza.00402EE7
0041E387    .  FF75 E0        push dword ptr ss:[ebp-20]       ; /MutexName
0041E38A    .  895D FC        mov dword ptr ss:[ebp-4],ebx     ; |
0041E38D    .  53             push ebx                         ; |Inheritable
0041E38E    .  57             push edi                         ; |Access
0041E38F    .  FF15 2CD44600  call dword ptr ds:[<&KERNEL32.Op>; \OpenMutexA
0041E395    .  8B7D DC        mov edi,dword ptr ss:[ebp-24]
0041E398    .  8987 A4000000  mov dword ptr ds:[edi+A4],eax
0041E39E    .  3BC3           cmp eax,ebx
0041E3A0    .  0F84 97000000  je HideWiza.0041E43D



5)終於到最後一步,這時執行程式隨便輸入註冊碼註冊,發現還有伺服器驗證,IDA裡發現程式網路通訊用的是CHttpFile,繼承於CInternetFile,結合IDA6.1的hex rays進行反編譯,CInternetFile有四個方法,Read ReadString Write WriteString,我們主要關心的是讀取,記下地址在OD裡下斷,發現程式呼叫的是CInternetFile::Read函式。一般人寫通訊程式都會把建立連線、傳送、接受、關閉連線自己封裝一下,因此可以順便在IDA裡把周圍的關於網路通訊的函式沒名字的都命名一下,找呼叫者就結合OD,這麼比較方便檢視。
用OD在CInternetFile::Read往上導,發現一個可疑函式,IDA反編譯一下:

signed int __thiscall sub_42BFB4(void *this, int a2, int a3)
{
  int v3; // [email protected]
  void *v4; // [email protected]
  int v6; // [email protected]
  int v7; // [email protected]
  int v8; // [email protected]
  int v9; // [email protected]
  const CHAR *v10; // [email protected]
  int v11; // [email protected]
  int v12; // [email protected]
  int v13; // [email protected]
  int v14; // [email protected]
  int v15; // [email protected]
  int v16; // [email protected]
  int v17; // [email protected]
  int v18; // [email protected]
  int v19; // [email protected]
  int v20; // [email protected]
  int v21; // [email protected]
  int v22; // [sp+Ch] [bp-20h]@11
  const CHAR *v23; // [sp+10h] [bp-1Ch]@3
  char *v24; // [sp+14h] [bp-18h]@15
  int v25; // [sp+18h] [bp-14h]@3
  int v26; // [sp+1Ch] [bp-10h]@3
  int v27; // [sp+28h] [bp-4h]@1
  char v28; // [sp+2Ch] [bp+0h]@1
  char Src; // [sp+82Ch] [bp+800h]@15
  char v30; // [sp+82Dh] [bp+801h]@15
  unsigned int v31; // [sp+C2Ch] [bp+C00h]@1
  v31 = (unsigned int)&v28 ^ __security_cookie;
  v3 = a3;
  v4 = this;
  v27 = 0;
  if ( !WaitForSingleObject(hHandle, 0) )
    goto LABEL_2;
  unknown_libname_115(v3);
  v6 = sub_435E86(v26);
  unknown_libname_113(v6);
  v7 = sub_435E86(v26);
  unknown_libname_113(v7);
  LOBYTE(v27) = 2;
  sub_402793(&a2);
  sub_42BF09(&v25, &v23);
  LOBYTE(v27) = 3;
  v8 = (int)_LN34_4(v4, 0, 0, 0, 0);
  v9 = v8;
  if ( !v8 )
  {
    ATL::CStringData::Release(v23 - 16);
    ATL::CStringData::Release(v25 - 16);
LABEL_2:
    ATL::CStringData::Release(a2 - 16);
    return -20;
  }
  v10 = v23;
  v27 = 2;
  LOBYTE(v27) = 5;
  v11 = (int)sub_4415E2(v8, 0, v23, 0, 1u, 0, 0, 0x20000000u);
  if ( !v11 )
    goto LABEL_6;
  v27 = 2;
  LOBYTE(v27) = 7;
  if ( !CHttpFile::SendRequest(v11, 0, 0, 0, 0) ) ///////////////////////////////////////傳送訊息
  {
    (*(void (__thiscall **)(int))(*(_DWORD *)v11 + 76))(v11);
    v13 = *(_DWORD *)v11;
    v25 = 1;
    (*(void (__thiscall **)(int, signed int))(v13 + 4))(v11, 1);
    (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 12))(v9);
    v14 = *(_DWORD *)v9;
    v25 = 1;
    (*(void (__thiscall **)(int, signed int))(v14 + 4))(v9, 1);
LABEL_6:
    ATL::CStringData::Release(v10 - 16);
    ATL::CStringData::Release(v25 - 16);
    v25 = -20;
LABEL_7:
    v12 = v25;
LABEL_8:
    ATL::CStringData::Release(a2 - 16);
    return v12;
  }
  v27 = 2;
  if ( !CHttpFile::QueryInfoStatusCode(&v22) )
  {
    (*(void (__thiscall **)(int))(*(_DWORD *)v11 + 76))(v11);
    v15 = *(_DWORD *)v11;
    v25 = 1;
    (*(void (__thiscall **)(int, signed int))(v15 + 4))(v11, 1);
    (*(void (__thiscall **)(int))(*(_DWORD *)v9 + 12))(v9);
    v16 = *(_DWORD *)v9;
    v25 = 1;
    (*(void (__thiscall **)(int, signed int))(v16 + 4))(v9, 1);
    ATL::CStringData::Release(v10 - 16);
    ATL::CStringData::Release(v25 - 16);
    v25 = -21;
    goto LABEL_7;
  }
  if ( v22 != 200 )
  {
    (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 76))(v11);
    v17 = *(_DWORD *)v11;
    v25 = 1;
    (*(void (__thiscall **)(int, signed int))(v17 + 4))(v11, 1);
    (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 12))(v9);
    v18 = *(_DWORD *)v9;
    v25 = 1;
    (*(void (__thiscall **)(int, signed int))(v18 + 4))(v9, 1);
    v12 = v22;
    ATL::CStringData::Release(v10 - 16);
    ATL::CStringData::Release(v25 - 16);
    goto LABEL_8;
  }
  Src = 0;
  memset(&v30, 0, 0x3FFu);
  sub_4027E0(Caption);
  v19 = *(_DWORD *)v11;
  v25 = 1000;
  v24 = &Src;
  (*(void (__thiscall **)(int, char *, signed int))(v19 + 52))(v11, &Src, 1000); ////////////////CInternetFile_Read 此處地址00440915 一共兩次read,
呼叫CInternet::Read
  sub_4027E0(&Src); ///////////////////// -->呼叫sub_402466 Src返回的c字串 此處地址為0042C1F3 寫了2個byte的記憶體,後面都不用看了
  (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v11 + 76))(v11); ////////////////////////////CInternetFile::Close
  v20 = *(_DWORD *)v11;
  v25 = 1;
  (*(void (__thiscall **)(int, signed int))(v20 + 4))(v11, 1); ////////////////////////////CHttpFile::_scalar_deleting_destructor_
  (*(void (__thiscall **)(_DWORD))(*(_DWORD *)v9 + 12))(v9); ////////////////////////////CInternetFile::Close
  v21 = *(_DWORD *)v9;
  v25 = 1;
  (*(void (__thiscall **)(int, signed int))(v21 + 4))(v9, 1); ////////////////////////////sub_440C6D一些字串釋放
  ATL::CStringData::Release(v10 - 16);
  ATL::CStringData::Release(v25 - 16);
  ATL::CStringData::Release(a2 - 16);
  return 1;
}

6)可以發現乾貨就在最後幾行,00440915內部呼叫CInternet::Read,整個函式一共呼叫了兩次,用ethereal截報文發現客戶端向www.seapsoft.com傳送兩個HTTP請求,

伺服器回的都是很簡單的字串1,存在Src裡,sub_4027E0(&Src)處理一下,寫了兩個2byte的記憶體,位置不固定。
7)明顯的思路是在Src處下記憶體訪問斷點,發現到了strtoxl這麼個函式,是C的一個內部使用的函式,往上導,到strtol,最後到atol,後來發現這個地址被讀了十幾次

,於是乾脆換了另一個方法。程式在請求返回後會設定static字串,於是在SetWindowTextA處下API斷點。往上倒騰,功夫不負有心人,發現了程式的驗證邏輯:

0042B1F5    > \FF75 DC        push dword ptr ss:[ebp-24]
0042B1F8    .  E8 46620200    call HideWiza.00451443
0042B1FD    .  83F8 1E        cmp eax,1E
0042B200    .  59             pop ecx
0042B201    .  7D 77          jge short HideWiza.0042B27A //////////////////////////////////jump it
0042B203    .  83F8 02        cmp eax,2
0042B206    .  75 21          jnz short HideWiza.0042B229
0042B208    .  51             push ecx
0042B209    .  8BCC           mov ecx,esp
0042B20B    .  8965 F0        mov dword ptr ss:[ebp-10],esp
0042B20E    .  68 24534700    push HideWiza.00475324
0042B213    .  E8 CF7CFDFF    call HideWiza.00402EE7
0042B218    .  8D45 F0        lea eax,dword ptr ss:[ebp-10]
0042B21B    .  50             push eax
0042B21C    .  E8 EFEEFFFF    call HideWiza.0042A110
0042B221    .  59             pop ecx
0042B222    .  59             pop ecx
0042B223    .  C645 FC 0A     mov byte ptr ss:[ebp-4],0A
0042B227    .^ EB 9D          jmp short HideWiza.0042B1C6 ////////////////////////////jump back to death
0042B229    >  3BC7           cmp eax,edi
0042B22B    .  74 29          je short HideWiza.0042B256
0042B22D    .  83F8 14        cmp eax,14
0042B230    .  74 24          je short HideWiza.0042B256
0042B232    .  51             push ecx
0042B233    .  8BCC           mov ecx,esp
0042B235    .  8965 F0        mov dword ptr ss:[ebp-10],esp
0042B238    .  68 E4524700    push HideWiza.004752E4
0042B23D    .  E8 A57CFDFF    call HideWiza.00402EE7
0042B242    .  8D45 F0        lea eax,dword ptr ss:[ebp-10]
0042B245    .  50             push eax
0042B246    .  E8 C5EEFFFF    call HideWiza.0042A110
0042B24B    .  59             pop ecx
0042B24C    .  59             pop ecx
0042B24D    .  C645 FC 0C     mov byte ptr ss:[ebp-4],0C
0042B251    .^ E9 70FFFFFF    jmp HideWiza.0042B1C6 ////////////////////////////jump back to death
0042B256    >  51             push ecx
0042B257    .  8BCC           mov ecx,esp
0042B259    .  8965 F0        mov dword ptr ss:[ebp-10],esp
0042B25C    .  68 0C534700    push HideWiza.0047530C
0042B261    .  E8 817CFDFF    call HideWiza.00402EE7
0042B266    .  8D45 F0        lea eax,dword ptr ss:[ebp-10]
0042B269    .  50             push eax
0042B26A    .  E8 A1EEFFFF    call HideWiza.0042A110
0042B26F    .  59             pop ecx
0042B270    .  59             pop ecx
0042B271    .  C645 FC 0B     mov byte ptr ss:[ebp-4],0B
0042B275    .^ E9 4CFFFFFF    jmp HideWiza.0042B1C6 ////////////////////////////jump back to death
0042B27A    >  8B4D E4        mov ecx,dword ptr ss:[ebp-1C]
0042B27D    .  8BD1           mov edx,ecx
0042B27F    .  6BD2 0D        imul edx,edx,0D
0042B282    .  81EA 2E160000  sub edx,162E
0042B288    .  3BD0           cmp edx,eax
0042B28A    .  74 46          je short HideWiza.0042B2D2 //////////////////////////////////jump it
0042B28C    .  51             push ecx
0042B28D    .  8BCC           mov ecx,esp
0042B28F    .  8965 F0        mov dword ptr ss:[ebp-10],esp
0042B292    .  68 E4524700    push HideWiza.004752E4
0042B297    .  E8 4B7CFDFF    call HideWiza.00402EE7
0042B29C    .  8D45 F0        lea eax,dword ptr ss:[ebp-10]
0042B29F    .  50             push eax
0042B2A0    .  E8 6BEEFFFF    call HideWiza.0042A110
0042B2A5    .  59             pop ecx
0042B2A6    .  59             pop ecx
0042B2A7    .  FF30           push dword ptr ds:[eax]               ; /Arg1
0042B2A9    .  8B4D E0        mov ecx,dword ptr ss:[ebp-20]         ; |
0042B2AC    .  C645 FC 0D     mov byte ptr ss:[ebp-4],0D            ; |
0042B2B0    .  E8 2A1F0000    call HideWiza.0042D1DF                ; \HideWiza.0042D1DF
0042B2B5    .  8B4D F0        mov ecx,dword ptr ss:[ebp-10]
0042B2B8    .  83C1 F0        add ecx,-10
0042B2BB    .  C645 FC 07     mov byte ptr ss:[ebp-4],7
0042B2BF    .  E8 DF5DFDFF    call HideWiza.004010A3
0042B2C4    .  8B4D EC        mov ecx,dword ptr ss:[ebp-14]
0042B2C7    .  57             push edi                              ; /Arg1
0042B2C8    .  E8 F61F0000    call HideWiza.0042D2C3                ; \HideWiza.0042D2C3
0042B2CD    .  E9 B8020000    jmp HideWiza.0042B58A
0042B2D2    >  6BC9 0B        imul ecx,ecx,0B
0042B2D5    .  81F1 07060000  xor ecx,607
0042B2DB    .  8BC1           mov eax,ecx
0042B2DD    .  894D EC        mov dword ptr ss:[ebp-14],ecx
0042B2E0    .  B9 10270000    mov ecx,2710
0042B2E5    .  3BC1           cmp eax,ecx
0042B2E7    .  7D 0A          jge short HideWiza.0042B2F3 //////////////////////////////////auto jump it
0042B2E9    >  6BC0 0A        imul eax,eax,0A
0042B2EC    .  3BC1           cmp eax,ecx
0042B2EE    .^ 7C F9          jl short HideWiza.0042B2E9
0042B2F0    .  8945 EC        mov dword ptr ss:[ebp-14],eax
0042B2F3    >  3D A0860100    cmp eax,186A0
0042B2F8    .  7C 15          jl short HideWiza.0042B30F //////////////////////////////////auto jump it
0042B2FA    .  EB 03          jmp short HideWiza.0042B2FF
0042B2FC    >  8B45 EC        mov eax,dword ptr ss:[ebp-14]
0042B2FF    >  6A 0A          push 0A
0042B301    .  99             cdq
0042B302    .  59             pop ecx
0042B303    .  F7F9           idiv ecx
0042B305    .  3D A0860100    cmp eax,186A0
0042B30A    .  8945 EC        mov dword ptr ss:[ebp-14],eax
0042B30D    .^ 7D ED          jge short HideWiza.0042B2FC
0042B30F    >  893D 40F04800  mov dword ptr ds:[48F040],edi
0042B315    .  E8 6CAB0000    call HideWiza.00435E86
0042B31A    .  50             push eax
0042B31B    .  8D4D E4        lea ecx,dword ptr ss:[ebp-1C]
0042B31E    .  E8 816DFDFF    call HideWiza.004020A4
0042B323    .  FF75 EC        push dword ptr ss:[ebp-14]
0042B326    .  8D45 E4        lea eax,dword ptr ss:[ebp-1C]
0042B329    .  68 F0EF4600    push HideWiza.0046EFF0                ;  ASCII "%d"

8)0042D21B是CWnd::SetWindowText,他呼叫SetWindowTextA顯示序列號無效字串0042D21B的呼叫者為0042B1CB,找通向0042B1CB的跳轉,有三處,還都在後邊,分別是227 251 275,分析一下這段程式碼,0042B201處判斷eax是不是不小於1e,如果小於1e,再判斷是不是2,如果是2,進入227玩完;不是2,判斷是不是14,不是的話進入251玩完,是的話進入275玩完。自己修改一下返回值發現2是序列號已存在,14沒看,1也就是其它情況是序列號無效。因此需要在0042B201處jmp掉。隨後在0042B28A處發現一個je,一般相等情況只有一種,肯定是好的,不用看直接jmp掉,最後什麼都沒改,程式已經crack掉了,記錄一下中間沒改的跳轉,0042B2E7和0042B2F8,為保險起見,可以jmp一下。

這時就已經破解完成了,歡迎探討!

相關推薦

OD+IDA6.1破解HideWizard v9.29(隱藏)下載

http://pan.baidu.com/s/1jGIdxzg《視窗、檔案、程序隱藏工具——無憂隱藏》(HideWizard_v9.29)最新版含破解補丁.rar 以前搞過一些破解,但都是一些軟柿子,前幾天有隱藏木馬這麼個需求,包括程序、視窗、硬碟檔案等,非要用Hid

子元件向父元件傳值 --呼叫父的參方法必看

我上次寫過一篇關於父元件向子元件傳值 參考地址為:https://blog.csdn.net/weixin_43814195/article/details/84892753 所以今天我在寫一篇關於子元件向父元件傳值的文章 首先 ,子元件是無法直接改變父元件的資料的,只能通過父元件改

#10012. 「一本通 1.2 例 2」Best Cow Fences 二分答案 巧妙

樣例輸入: 10 6 6 4 2 10 3 8 5 9 4 1 樣例輸出: 6500 將原問題轉化為: 判定 " 是否存在一個長度不小於L 的區間,區間的平均數不小於二分的值 " 精度

讀西瓜書:6.1/6.2/6.3/6.4章 未完成

讀西瓜書:6.1/6.2/6.3/6.4章 6.1 間隔與支援向量 如果訓練樣本是線性可分的,那麼線性分類器就是在樣本空間中尋找一個超平面,將不同類別的樣本分開 但能將訓練樣本分開的超平面可能有很多,哪一個更好? 上圖中判別函式的訓練誤差都為0,但

原始碼下載JIT指令碼引擎:CMinus 0.1版開放下載

說明:CMinus是一個讀入修改過語法的C源程式,然後編譯成x86指令集寫入記憶體,最後用__stdcall呼叫約定跟C++互相交流的指令碼引擎。目標:CMinus的定位是中間語言,用於將其他語言編譯到CMinus上,享受本地指令帶來的好處。進度:完成所有功能,但是由於指令集生成的演算法不好,打算

重大更新IntelliJ IDEA v2017.1釋出,功能大量更新,先睹為快!|下載

IntelliJ IDEA v2017.1到來!功能大量更新!本次更新圖文較多,部分功能詳細內容請點選文章末尾連結詳細檢視! Java java9支援(檢視詳情)java8功能改進升級至JUnit 5檢查egexp語法高亮顯示 JVM偵錯程式 Async異常堆疊更新

CCF201803-1 跳一跳(100分)序列處理

試題編號: 201803-1 試題名稱: 跳一跳 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述   近來,跳一跳這款小遊戲風靡全國,受到不少玩家的喜愛。   簡化後的跳一跳規則如下

redhat linux 6.1/6.0 映象資源下載高速下載

紅帽在5月19日宣佈釋出其企業級Linux 6.1的正式版(RHEL 6.1)。該版本的Beta已經在今年3月23日放出。 RHEL 6.1是紅帽企業級Linux 6.0系列的第一次更新(注:RHEL 6.0在2010年11月釋出),除了效能改進之外,還包含如

7-1 列出葉結點(25 分) 資料結構

7-1 列出葉結點(25 分) 對於給定的二叉樹,本題要求你按從上到下、從左到右的順序輸出其所有葉節點。 輸入格式: 首先第一行給出一個正整數 N(≤10),為樹中結點總數。樹中的結點從 0 到 N−1 編號。隨後 N 行,每行給出一個對應結點左右孩子的編

億圖圖示 mac破解edraw max 註冊機 v9.1破解教程

億圖圖示EdrawMax Mac中文破解版是mac上一款非常強大的綜合圖示繪製軟體,不僅僅是思維導圖,還可以很方便的繪製各種專業的流程圖、組織結構圖、網路拓撲圖、商業圖表、科學設計圖等等。幫助使用者在短時間內掌握各類圖形的繪製,完成工作任務。 億圖圖示 mac 破解版 破解教程

edraw max mac版v9.1破解教程

如果您需要一款強大的圖形圖表設計軟體,那麼億圖圖示 mac 破解版是您的不錯選擇!億圖圖示EdrawMax Mac中文破解版不僅僅是思維導圖,還可以很方便的繪製各種專業的流程圖、組織結構圖、網路拓撲圖、商業圖表、科學設計圖等等。幫助使用者在短時間內掌握各類圖形的繪製,完成工作任務。 &

樹莓派系列教程:1.環境與系統,顯示器鍵盤網線聯網並使用PuTTy與VNC圖形界面遠程登錄

工具 樹莓派 分享 clas http dev vnc圖形界面 gpo 遠程連接 本文所需物品清單: Raspberry Pi 3 Model B 主板、SD卡與讀卡器(用於燒錄系統) 資料整理來源在文尾 需要下載的資源與工具: 推薦系統-Raspbian 樹莓

概率機器人3.1 卡爾曼濾波、擴展卡爾曼濾波和跡卡爾曼濾波

取出 嘗試 bar return tar 簡化 exp 回顧 clas 這一章將介紹卡爾曼濾波、擴展卡爾曼濾波以及無跡卡爾曼濾波,並從貝葉斯濾波的角度來進行分析並完成數學推導。如果您對貝葉斯濾波不了解,可以查閱相關書籍或閱讀 【概率機器人 2 遞歸狀態估計】。 這三種濾波方

AutoCAD 2019.0.1破解版|Autodesk AutoCAD 2019.0.1中文破解

adobe 2019Autodesk AutoCAD 2019.0.1中文破解版請添加鏈接描述AutoCAD 2019.0.1安裝教程 安裝AutoCAD 2019.0.1版本之前,請先安裝AutoCAD 2019版本,若無此版本請自行下載並安裝1、下載數據包後解壓,鼠標雙擊“AutoCAD_2019.0.1

IntelliJ IDEA 2018.2.1破解

最近安裝了最新版的idea,用了很多網上的破解方法都不行,不是破解jar包不能用就是註冊碼無效,然後通過各個版本的idea安裝嘗試發現需要安裝最新的idea和最新的破解jar包才可以 首先進入下面網址: http://idea.lanyus.com/ 然後點選破解補丁下載地址,下載

迅雷U享版 v3.2.1 破解限制版

迅雷U享版是迅雷公司為迅雷會員推出的一款專用客戶端,與其他版本不同的是,該版本主打尊貴、輕量和智慧。官方宣稱會員專享客戶端更輕量,把頁面上所有跟下載無關的部分全部去掉,安裝包進行精簡過,啟動快,佔用記憶體小;更智慧,所有任務,新建完成就開始自動加速,不用點選確認,會員會自動進入組隊加速;更專注,聚焦

MAMP PRO for mac 4.1.1 破解

windows 上我們懶人一般使用phpstudy配置php環境。可是作為一個果粉而言,phper們該怎麼辦? 其實,mac 有一款自動配置PHP環境的工具,叫:MAMP。 收費版是MAMP PRO。 配置很簡單,百度也是一大堆 現在給大家獻上pro 的破解版

TeamViewer 13破解版|TeamViewer 13商業限制破解下載 v13.2(解決商業5分鐘限制/更換ID許可證)

下載來源處:TeamViewer 13無商業限制破解版 TeamViewer 13是一款功能強大、使用方便、並且非常知名的遠端桌面控制工具軟體,同時也是該系列軟體目前更新的最新的版本,新版本現在通過整合的TeamViewer按鈕即可直接在Outlook日程表中安排線上會議,簡單地將現有預

CleanMyMac X for mac破解版|cleanmymac x4.1破解版(啟用碼)

CleanMyMacx4.1是一款功能強大的Mac系統優化清理工具,使用旨在幫助使用者更加方便的清理您系統中的所有垃圾,從而加快電腦執行速度,保持最佳效能,更加穩定、流暢、快速!!!隨著10週年紀念版的推出,CleanMyMacx已經完成了向全面清理,優化和管理工具的轉變。它的演算法和功能變得更加智慧,但

輕輕鬆鬆背單詞下載|輕輕鬆鬆背單詞v7.1破解下載

以前下的輕輕鬆鬆背單詞都有聲音,但是突然就沒聲音了,我又下載了新的,把舊的給刪除了。但是新的開啟還是沒有聲音,哪位高人指點下輕輕鬆鬆背單詞下載連結輕輕鬆鬆背單詞是一款英語單詞強化記憶的軟體,這款軟體適用於各個階段的英語學習者,不管你是小學生初中生,還是研究生或者是考雅思託福都可以用這款軟體來進行學習,並且輕輕