xyz計算機等級考試系統(二級c) vb編寫
一個vb軟體的破解(新手請進)
軟體名稱:xyz計算機等級考試系統(二級c) vb編寫
難度係數: 容易
破解宣告: 只為技術而破解!這個軟體較為簡單,主要介紹一下vb程式破解的基本知識
作者: mejy
工具: smartCheck ,OD1.09漢化版 ,fi
第一 smartcheck的破解
首先我們看一下用smartCheck來對他進行破解,為什麼呢?因為對vb的軟體用smart分析一下有利於動態破解的思路?
可照看學第二版238頁的方法進行。。。。。。先用smart載入xyz,點選run,然後在註冊筐裡輸點什麼?六位(分析後可知註冊碼為6位)
試練碼 abcdef 我得序列號55555B
來到這:
__vbaStrVarMove(VARIANT:String:"ABCDEFGH...") returns DWORD:13406C
Arguments
--------------------
string (variant)
unsigned short * .bstrVal = 0013406C
= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789"
經過上面的計算得到了一勸字串!記下他的地址,後面的計算註冊碼就是根據這個字元表得來得
WideCharToMultiByte(unsigned int:00000000, FLAGS:00000000, LPWSTR:0E2D1F44, int:1, PTR:0012EDAA, DWORD:00000002, LPSTR:00000000, PTR:00000000) returns INT:1
Arguments
--------------------
unsigned long CodePage = 0 0x00000000
unsigned long dwFlags = 0 0x00000000
unsigned short * lpWideCharStr = 0E2D1F44
= "5"
signed long cchWideChar = 1 0x00000001
signed char * lpMultiByteStr = 0012EDAA
= "-
signed long cchMultiByte = 2 0x00000002
signed char * lpDefaultChar = NULL
signed long * lpUsedDefaultChar = NULL
這一函式是將這個字元轉化為十進位制53
計算他在上面的表中對應的位置 然後
從記憶體中1340d8處取得字元3 正確註冊碼的第一位
一下與輸入的假碼的第一位進行比較
__vbaVarTstEq(VARIANT:String:"3", VARIANT:String:"a") returns DWORD:0
Arguments
--------------------
lhs (variant)
unsigned short * .bstrVal = 001F6E94
= "3"
rhs (variant)
unsigned short * .bstrVal = 001B5DA4
= "a"
SysAllocStringByteLen(char *:001340E4, DWORD:00000002) returns LPVOID:E2D1F44
經過計算取得註冊碼的第二位(他的位置與基址相差72)
Arguments
--------------------
signed char * psz = 001340E4
= "9"
unsigned long len = 2 0x00000002
SysAllocStringByteLen(char *:001F6E6E, DWORD:00000002) returns LPVOID:1B5DA4
取得假碼的第二位
Arguments
--------------------
signed char * psz = 001F6E6E
= "b"
unsigned long len = 2 0x00000002
__vbaVarTstEq(VARIANT:String:"9", VARIANT:String:"b") returns DWORD:0
Arguments
--------------------
lhs (variant)
unsigned short * .bstrVal = 0E2D1F44
= "9"
rhs (variant)
unsigned short * .bstrVal = 001B5DA4
= "b"
進行比較
後面各位的比較方法類似這兒就不一一列出了
這兒我們能得出他的註冊碼,但是要明白他的演算法
第二部分 od的動態分析
我們來動態除錯一下,用od載入程式
載入後,先別急著執行,分析一下先,因為經過上面我們知道它採用的是變數比較的方法(見看學第二辦231頁) 斷點函式為 vbavarTstEq; 點選右鍵 搜尋DD》當前模組中的名稱DD》找到vbavarTstEqDD》右鍵,查詢參考,看見呼叫的地方了美,在這可以設斷點了,(你也可以在執行之後再設,應為這個程式啟動是也進行了註冊碼的比較,會妨礙你的分析)。執行f9
程式執行有異常,shift+f9繼續 (前面沒設斷點的話這就應該設了,如果設了的話f9鍵6次
每次你可分析儀下,程式其實就是進行6次比較)
用d edx+8 來看看記憶體中有什麼 -----172cdc中正確地註冊碼33
用d eax+8 因為剛啟動什麼也沒有,下面我們繼續
直到註冊礦出現
然後輸入假碼abcdef 點註冊,程式很快斷在0045FF4E . FF15 F0104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarTs>; MSVBVM60.__vbaVarTstEq
再來看看 d eax+8中的地址 18ce24----61 a的ascii碼
d edx+8處的地址 18a97c ----33 3的ascii碼
繼續!下面進入分析過程
0045FDC5 > 66:3BC8 CMP CX,AX //比較看看註冊碼的長度6結束否
0045FDC8 . 0F8F CD010000 JG XYZ_c271.0045FF9B如果比較結束跳出迴圈
0045FDCE . 0FBFD9 MOVSX EBX,CX 將i賦值給ebx 第一次i=1,第二次i=2,第三次i=3,第四次i=4。。。。。
0045FDD1 . 8D55 D8 LEA EDX,DWORD PTR SS:[EBP-28] ebp-28中儲存的是序列號
0045FDD4 . 8D45 BC LEA EAX,DWORD PTR SS:[EBP-44]
0045FDD7 . 8995 74FFFFFF MOV DWORD PTR SS:[EBP-8C],EDX
0045FDDD . 50 PUSH EAX
0045FDDE . 8D8D 6CFFFFFF LEA ECX,DWORD PTR SS:[EBP-94] 將4008--ecx中
0045FDE4 . 53 PUSH EBX
0045FDE5 . 8D55 AC LEA EDX,DWORD PTR SS:[EBP-54]
0045FDE8 . 51 PUSH ECX
0045FDE9 . 52 PUSH EDX
0045FDEA . C745 C4 010000>MOV DWORD PTR SS:[EBP-3C],1
0045FDF1 . C745 BC 020000>MOV DWORD PTR SS:[EBP-44],2
0045FDF8 . C785 6CFFFFFF >MOV DWORD PTR SS:[EBP-94],4008
0045FE02 . FF15 C4104000 CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar //這個函式是取字元函式
0045FE08 . 8D45 AC LEA EAX,DWORD PTR SS:[EBP-54] 這是取序列號的字元
0045FE0B . 50 PUSH EAX
0045FE0C . FF15 2C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVa>; MSVBVM60.__vbaStrVarMove移動字元可見是“5”
0045FE12 . 8BD0 MOV EDX,EAX
0045FE14 . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30]
0045FE17 . FF15 FC114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMo>; MSVBVM60.__vbaStrMove
0045FE1D . 8D4D AC LEA ECX,DWORD PTR SS:[EBP-54]
0045FE20 . 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
0045FE23 . 51 PUSH ECX //存的是ECX +8 35
0045FE24 . 52 PUSH EDX 2
0045FE25 . 6A 02 PUSH 2
0045FE27 . FFD7 CALL EDI
0045FE29 . 66:8B45 EC MOV AX,WORD PTR SS:[EBP-14] 取位數i
0045FE2D . 66:B9 0300 MOV CX,3 將3付給ecx的第位
0045FE31 . 66:99 CWD
0045FE33 . 66:F7F9 IDIV CX //i%3
0045FE36 . 83C4 0C ADD ESP,0C
0045FE39 . 66:85D2 TEST DX,DX
0045FE3C . 66:8995 12FFFF>MOV WORD PTR SS:[EBP-EE],DX 看看餘數是否為零
0045FE43 . 75 2F JNZ SHORT XYZ_c271.0045FE74 不為0跳 (有3種情況)
分支1
0045FE45 . 8B55 D0 MOV EDX,DWORD PTR SS:[EBP-30]
0045FE48 . 52 PUSH EDX
0045FE49 . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
0045FE4F .8B0D 64A04600 MOV ECX,DWORD PTR DS:[46A064 //存的是58 ; XYZ_c271.00460058
0045FE55 . 33C1 XOR EAX,ECX 將序列號對應位上的字元的ascii碼與之異或
0045FE57 . 66:B9 3D00 MOV CX,3D
0045FE5B . 66:99 CWD
0045FE5D . 66:F7F9 IDIV CX
0045FE6066:8BF2 mOV SI,DX dx為餘數
0045FE63 . 66:8B95 12FFFF>MOV DX,WORD PTR SS:[EBP-EE]
0045FE6A. 66:83C6 01 ADD SI,1 0045FE6E . 將餘數加1
0F80 90010000 JO XYZ_c271.00460004
分支2
0045FE74 > 66:83FA 01 CMP DX,1 dx為餘數 和1比較
0045FE78 . 75 2E JNZ SHORT XYZ_c271.0045FEA8
0045FE7A . 8B55 D0 MOV EDX,DWORD PTR SS:[EBP-30]
0045FE7D . 52 PUSH EDX
0045FE7E . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
0045FE84 . 66:3305 66A046>XOR AX,WORD PTR DS:[46A066] // [46A066 存的是 46
將序列號對應位上的字元的ascii碼與之異或
0045FE8B . 66:B9 3D00 MOV CX,3D //將3d十六進位制賦給ecx的低位
0045FE8F . 66:99 CWD
0045FE91 . 66:F7F9 IDIV CX
0045FE94 . 66:8BF2 MOV SI,DX 求餘後轉移
0045FE97 . 66:8B9512FFFF>MOV DX,WORD PTR SS:[EBP-EE]
0045FE9E . 66:83C6 01 ADD SI,1 餘數加1
0045FEA2 . 0F80 5C010000 JO XYZ_c271.00460004
分支3
0045FEA8 > 66:83FA 02 CMP DX,2 和2比較
0045FEAC . 75 27 JNZ SHORT XYZ_c271.0045FED5
0045FEAE . 8B55 D0 MOV EDX,DWORD PTR SS:[EBP-30] // 註冊碼的ascii
0045FEB1 . 52 PUSH EDX
0045FEB2 . FF15 44104000 CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
0045FEB8 . 66:3305 68A046>XOR AX,WORD PTR DS:[46A068] // [46A068] 中4c註冊碼的ascii異或
0045FEBF . 66:B9 3D00 MOV CX,3D
0045FEC3 . 66:99 CWD
0045FEC5 . 66:F7F9 IDIV CX
0045FEC8 . 66:8BF2 MOV SI,DX dx中為餘數
0045FECB . 66:83C6 01 ADD SI,1 si +1
0045FECF . 0F80 2F010000 JO XYZ_c271.00460004
經過三個分之後來到這進行處理
0045FED5 > 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18] //移入剛才的字元表
0045FED8 . 8D45 BC LEA EAX,DWORD PTR SS:[EBP-44]
0045FEDB . 0FBFCE MOVSX ECX,SI
0045FEDE . 8995 74FFFFFF MOV DWORD PTR SS:[EBP-8C],EDX
0045FEE4 . 50 PUSH EAX
0045FEE5 . 8D95 6CFFFFFF LEA EDX,DWORD PTR SS:[EBP-94]
0045FEEB . 51 PUSH ECX
0045FEEC . 8D45 AC LEA EAX,DWORD PTR SS:[EBP-54]
0045FEEF . 52 PUSH EDX
0045FEF0 . 50 PUSH EAX //這些是一些處理
0045FEF1 . C745 C4 010000>MOV DWORD PTR SS:[EBP-3C],1
0045FEF8 . C745 BC 020000>MOV DWORD PTR SS:[EBP-44],2
0045FEFF . C785 6CFFFFFF >MOV DWORD PTR SS:[EBP-94],4008
0045FF09 . FF15 C4104000 CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar //這個是關鍵跟進********
這個函式就是在這個地址上加上si+1de十進位制數 就是對應位的註冊碼,在這你就可以推出
註冊碼了,為了清楚我貼出了他的全部過程,沒興趣可以不看,不過想提高的話還是看下去
0017A504 UNICODE 別我們我
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789"
0045FF0F . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
0045FF12 . 8D55 9C LEA EDX,DWORD PTR SS:[EBP-64]
0045FF15 . 898D 54FFFFFF MOV DWORD PTR SS:[EBP-AC],ECX
0045FF1B . 52 PUSH EDX
0045FF1C . 8D85 4CFFFFFF LEA EAX,DWORD PTR SS:[EBP-B4]
0045FF22 . 53 PUSH EBX
0045FF23 . 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]
0045FF26 . 50 PUSH EAX
0045FF27 . 51 PUSH ECX
0045FF28 . C745 A4 010000>MOV DWORD PTR SS:[EBP-5C],1
0045FF2F . C745 9C 020000>MOV DWORD PTR SS:[EBP-64],2
0045FF36 . C785 4CFFFFFF >MOV DWORD PTR SS:[EBP-B4],4008
0045FF40 . FF15 C4104000 CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar //這個是取假註冊碼的函式
0045FF46 . 8D55 AC LEA EDX,DWORD PTR SS:[EBP-54]
0045FF49 . 8D45 8C LEA EAX,DWORD PTR SS:[EBP-74]
0045FF4C . 52 PUSH EDX 用d edx+8 可看見真碼的地址一次只能看見1位
0045FF4D . 50 PUSH EAX用d eax+8 可看見真碼的地址一次只能看見1位
因為vb程式的處理方式教特別所以用*+8
0045FF4E . FF15 F0104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarTs>; MSVBVM60.__vbaVarTstEq //斷點函式 關鍵比較
0045FF54 . 8D4D 8C LEA ECX,DWORD PTR SS:[EBP-74]
0045FF57 . 8BD8 MOV EBX,EAX
0045FF59 . 8D55 AC LEA EDX,DWORD PTR SS:[EBP-54]
0045FF5C . 51 PUSH ECX
0045FF5D . 8D45 9C LEA EAX,DWORD PTR SS:[EBP-64]
0045FF60 . 52 PUSH EDX
0045FF61 . 8D4D BC LEA ECX,DWORD PTR SS:[EBP-44]
0045FF64 . 50 PUSH EAX
0045FF65 . 51 PUSH ECX
0045FF66 . 6A 04 PUSH 4
0045FF68 . FFD7 CALL EDI
0045FF6A . 83C4 14 ADD ESP,14
0045FF6D . 66:85DB TEST BX,BX
0045FF70 . 74 11 JE SHORT XYZ_c271.0045FF83
0045FF72 . 66:8B55 E4 MOV DX,WORD PTR SS:[EBP-1C]
0045FF76 . 66:83C2 01 ADD DX,1
0045FF7A . 0F80 84000000 JO XYZ_c271.00460004
0045FF80 . 8955 E4 MOV DWORD PTR SS:[EBP-1C],EDX
0045FF83 > B8 01000000 MOV EAX,1
0045FF88 . 66:0345 EC ADD AX,WORD PTR SS:[EBP-14]
0045FF8C . 70 76 JO SHORT XYZ_c271.00460004
0045FF8E . 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
0045FF91 . 8BC8 MOV ECX,EAX
0045FF93 . 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
0045FF96 .^E9 2AFEFFFF JMP XYZ_c271.0045FDC5//結束沒有沒有的話跳
0045FF9B > 66:3945 E4 CMP WORD PTR SS:[EBP-1C],AX
0045FF9F . 75 07 JNZ SHORT XYZ_c271.0045FFA8 回去
上面那個Call
取記憶體中的序列號的第二位5計算正確地序列號
6A36B403 > 55 PUSH EBP
6A36B404 8BEC MOV EBP,ESP
6A36B406 83EC 10 SUB ESP,10
6A36B409 56 PUSH ESI
6A36B40A 57 PUSH EDI
6A36B40B FF35 C00E396A PUSH DWORD PTR DS:[6A390EC0]
6A36B411 FF15 B810286A CALL DWORD PTR DS:[<&KERNEL32.TlsGetValu>; KERNEL32.TlsGetValue
6A36B417 8D70 50 LEA ESI,DWORD PTR DS:[EAX+50]
6A36B41A 56 PUSH ESI
6A36B41B FF75 0C PUSH DWORD PTR SS:[EBP+C]
6A36B41E E8 5096F3FF CALL MSVBVM60.6A2A4A73
6A36B423 83F8 FF CMP EAX,-1
6A36B426 74 3A JE SHORT MSVBVM60.6A36B462
6A36B428 FF75 14 PUSH DWORD PTR SS:[EBP+14] 2
6A36B42B FF75 10 PUSH DWORD PTR SS:[EBP+10] 31上面計算的結果
6A36B42E 50 PUSH EAX
字串
0012ED70 0017A504 UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789"
6A36B42F E8 AB94F3FF CALL MSVBVM60.rtcMidCharBstr //關鍵call2跟進
6A36B434 66:833E 08 CMP WORD PTR DS:[ESI],8
6A36B438 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
6A36B43B 66:C745 F0 0800 MOV WORD PTR SS:[EBP-10],8
6A36B441 75 0D JNZ SHORT MSVBVM60.6A36B450
6A36B443 FF76 08 PUSH DWORD PTR DS:[ESI+8]
6A36B446 FF15 F019286A CALL DWORD PTR DS:[<&OLEAUT32.#6>] ; OLEAUT32.SysFreeString
6A36B44C 66:8326 00 AND WORD PTR DS:[ESI],0
6A36B450 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
6A36B453 8D75 F0 LEA ESI,DWORD PTR SS:[EBP-10]
6A36B456 8BF8 MOV EDI,EAX
6A36B458 A5 MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
6A36B459 A5 MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
6A36B45A A5 MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
6A36B45B A5 MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
6A36B45C 5F POP EDI
6A36B45D 5E POP ESI
6A36B45E C9 LEAVE
6A36B45F C2 1000 RETN 10
call2的程式碼
6A2A48DF > 55 PUSH EBP
6A2A48E0 8BEC MOV EBP,ESP
6A2A48E2 83EC 10 SUB ESP,10
6A2A48E5 8B45 10 MOV EAX,DWORD PTR SS:[EBP+10]
6A2A48E8 66:8338 0A CMP WORD PTR DS:[EAX],0A
6A2A48EC 75 26 JNZ SHORT MSVBVM60.6A2A4914
6A2A48EE 8178 08 04000280 CMP DWORD PTR DS:[EAX+8],80020004
6A2A48F5 75 1D JNZ SHORT MSVBVM60.6A2A4914
6A2A48F7 83C9 FF OR ECX,FFFFFFFF
6A2A48FA 66:85C9 TEST CX,CX
6A2A48FD 74 19 JE SHORT MSVBVM60.6A2A4918
6A2A48FF 50 PUSH EAX
6A2A4900 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C] eax為餘數
6A2A4903 8D4400 FF LEA EAX,DWORD PTR DS:[EAX+EAX-1] 2×eax-1
6A2A4907 50 PUSH EAX 字串
6A2A4908 FF75 08 PUSH DWORD PTR SS:[EBP+8]
6A2A490B E8 1E000000 CALL MSVBVM60.rtcMidBstr 跟進call3
6A2A4910 C9 LEAVE
6A2A4911 C2 0C00 RETN 0C
call3的程式碼
6A2A492E > 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8] 6A2A4932 53 PUSH EBX 字元所在的 位置 123456
6A2A4933 56 PUSH ESI
6A2A4934 57 PUSH EDI
6A2A4935 8D78 FF LEA EDI,DWORD PTR DS:[EAX-1]
6A2A4938 85FF TEST EDI,EDI eax-1 78
6A2A493A 0F8C B6290200 JL MSVBVM60.6A2C72F6
6A2A4940 81FF FFFFFF7F CMP EDI,7FFFFFFF
6A2A4946 0F8F AA290200 JG MSVBVM60.6A2C72F6
6A2A494C 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10]
6A2A4950 8BDF MOV EBX,EDI ebx=78
6A2A4952 85C0 TEST EAX,EAX
6A2A4954 0F84 A3290200 JE MSVBVM60.6A2C72FD
6A2A495A 8B70 FC MOV ESI,DWORD PTR DS:[EAX-4]
6A2A495D 3BFE CMP EDI,ESI
6A2A495F 0F87 9F290200 JA MSVBVM60.6A2C7304
6A2A4965 8B4C24 18 MOV ECX,DWORD PTR SS:[ESP+18]
6A2A4969 66:8339 0A CMP WORD PTR DS:[ECX],0A
6A2A496D 75 35 JNZ SHORT MSVBVM60.6A2A49A4
6A2A496F 8179 08 04000280 CMP DWORD PTR DS:[ECX+8],80020004
6A2A4976 75 2C JNZ SHORT MSVBVM60.6A2A49A4
6A2A4978 83C8 FF OR EAX,FFFFFFFF
6A2A497B 66:85C0 TEST AX,AX
6A2A497E 74 28 JE SHORT MSVBVM60.6A2A49A8
6A2A4980 2BF3 SUB ESI,EBX
6A2A4982 8BC6 MOV EAX,ESI
6A2A4984 50 PUSH EAX
6A2A4985 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]
6A2A4989 03D8 ADD EBX,EAX
6A2A498B 53 PUSH EBX 這個是關鍵
6A2A498C FF15 FC19286A CALL DWORD PTR DS:[<&OLEAUT32.#150>] ; OLEAUT32.SysAllocStringByteLen
6A2A4992 8BF0 MOV ESI,EAX
6A2A4994 85F6 TEST ESI,ESI
6A2A4996 0F84 76290200 JE MSVBVM60.6A2C7312
6A2A499C 8BC6 MOV EAX,ESI
6A2A499E 5F POP EDI
6A2A499F 5E POP ESI
6A2A49A0 5B POP EBX
6A2A49A1 C2 0C00 RETN 0C
唉終於寫完了!奮戰了幾個小時,寫的不太好,湊或著看吧!呵呵!
這個軟體很容易,大家拿來作為vb的練手吧,歡迎你的批評與指導!
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
----------------******---------------
--------------"歡迎交流"------------------
----------------******---------------
【BCG】【FCG】【DFCG】【NUKE】【IPB】
相關文章
- 計算機等級考試簡介、考試形式與等級要求 (轉)2008-06-16計算機
- 全國計算機等級考試問答 (轉)2008-06-16計算機
- 計算機等級考試的體會 (轉)2007-12-04計算機
- 明年起全國計算機等級考試軟體升級 (轉)2007-12-04計算機
- 國家計算機等級考試必讀 (轉)2008-05-24計算機
- 學友計算機等級考試試題彙編2002A+2003-03-01計算機
- 全國計算機等級考試二級教程--C語言程式設計(2018年版) 隨手筆記(二)2018-03-21計算機C語言程式設計筆記
- 全國計算機等級考試2008最新考試大綱2007-11-26計算機
- Python語言被列入全國計算機等級考試科目2017-12-11Python計算機
- 2000年4月全國計算機等級考試三級(B)筆試試卷(下) (轉)2007-12-06計算機筆試
- 【計算機二級Python】考試攻略及資料彙總2020-12-31計算機Python
- 程式設計師如何備戰全國計算機二級(Python)考試?2018-11-23程式設計師計算機Python
- 計算機會議排名等級2014-10-27計算機
- 1999年全國計算機等級考試三級(A)、(B)筆試試卷答案及評分標準一 (轉)2008-06-25計算機筆試
- 大學生熱門考試必備用書館配經典系列:計算機等級考試 二級Visual Basic語言程式設計考點精解及全真模擬 (上)pdf2018-08-02計算機C語言程式設計
- (計算機二級C語言)程式修改題<99>2024-03-02計算機C語言
- 是C語言、VB、VF還是哪個 我想問一下全國計算機二級考哪個比較好2008-10-20C語言計算機
- python加入等級考試幾年2021-09-11Python
- Java計算機二級(上機真題)2018-08-24Java計算機
- 計算機二級Java複習12018-10-22計算機Java
- 【計算機二級C++】題目與C++知識自檢2024-08-15計算機C++
- Python統計四六級考試的詞頻2018-09-10Python
- 計算機資訊系統整合企業資質等級評定條件(轉)2014-09-08計算機
- 青少年等級考試該怎麼選擇2024-08-27
- 天河二號:中國的超級計算機及其超級應用2014-05-14計算機
- 2020汽車修理工(中級)考試及汽車修理工(中級)模擬考試系統2020-09-26
- 中國計算機軟體水平考試測試系統2.0演算法分析2015-11-15計算機演算法
- SD卡速度等級參考2014-12-25SD卡
- 大一那會,我用QQ遠端幫同學考過計算機二級2021-04-28計算機
- 用VB寫計算器2017-10-03
- 計算機軟體水平考試測試系統3.0註冊演算法分析2015-11-15計算機演算法
- 通過 oracle 12c ocp 升級考試2014-09-21Oracle
- Python 計算機二級模擬題賞析2019-04-03Python計算機
- 英語四級考試2024-06-16
- 等級保護分為幾個等級?一級、二級、三級有什麼區別?2022-03-04
- 【等保小知識】等保一級二級三級哪個要求更高?2021-12-22
- 2020年焊工(初級)考試試題及焊工(初級)考試軟體2020-10-29
- 2020年二級鍋爐水質處理考試試卷及二級鍋爐水質處理模擬考試題庫2020-10-02