排课王2.6版算法分析
【破解作者】 jsliyangsj
【作者邮箱】 sjcrack@yahoo.com.cn
【使用工具】 peid OllyDbg1.10
【破解平台】 Winxp
【软件名称】 排课王2.6版
【软件地址】 网上搜索
【软件语言】VB
我单位用的一个软件,那时候可花了900元买的。
对付VB 的常用断点:rtcMidCharVar vbaMidstmtBstr rtcAnsiValueBstr rtcLeftCharVar rtcRightCharVar
输入学校名称,用户名,注册码,
……………………………………………………………………………………………………
0052CB3D > \8>mov eax,dword ptr ss:[ebp-CC]
0052CB43 . 8>lea edx,dword ptr ss:[ebp-C0]
0052CB49 . 5>push edx
0052CB4A . 5>push eax
0052CB4B . 8>mov ecx,dword ptr ds:[eax]
0052CB4D . 8>mov edi,eax
0052CB4F . F>call dword ptr ds:[ecx+A0] ; 得到输入的项目,注册名,注册码
0052CB55 . 8>test eax,eax
0052CB57 . D>fclex
0052CB59 . 7>jge short zxkcb.0052CB6D
0052CB5B . 6>push 0A0
0052CB60 . 6>push zxkcb.0041AC20
0052CB65 . 5>push edi
0052CB66 . 5>push eax
0052CB67 . F>call dword ptr ds:[<&MSVBVM60.__vbaHresultCheck>; MSVBVM60.__vbaHresultCheckObj
0052CB6D > 8>mov eax,dword ptr ss:[ebp-C0] ; 看到了
0052CB73 . 8>lea ecx,dword ptr ss:[ebp-F4]
0052CB79 . 8>mov dword ptr ss:[ebp-DC],eax
0052CB7F . 8>lea eax,dword ptr ss:[ebp-E4]
0052CB85 . 5>push eax ; /Arg2
0052CB86 . 5>push ecx ; |Arg1
0052CB87 . C>mov dword ptr ss:[ebp-C0],0 ; |
0052CB91 . C>mov dword ptr ss:[ebp-E4],8 ; |
0052CB9B . F>call dword ptr ds:[<&MSVBVM60.#520>] ; \rtcTrimVar
0052CBA1 . 8>lea edx,dword ptr ss:[ebp-F4]
0052CBA7 . 8>lea eax,dword ptr ss:[ebp-134]
0052CBAD . 5>push edx
0052CBAE . 5>push eax
0052CBAF . C>mov dword ptr ss:[ebp-12C],zxkcb.00416208
0052CBB9 . C>mov dword ptr ss:[ebp-134],8008
0052CBC3 . F>call dword ptr ds:[<&MSVBVM60.__vbaVarTstEq>] ; MSVBVM60.__vbaVarTstEq
0052CBC9 . 8>lea ecx,dword ptr ss:[ebp-CC]
0052CBCF . 8>lea edx,dword ptr ss:[ebp-C8]
0052CBD5 . 5>push ecx
……………………………省略…………………………
0052D9FF . F>call dword ptr ds:[<&MSVBVM60.__vbaHresultCheck>; MSVBVM60.__vbaHresultCheckObj
0052DA05 > 8>mov eax,dword ptr ss:[ebp-C0] ; 得到注册码
0052DA0B . 8>lea edx,dword ptr ss:[ebp-E4]
0052DA11 . 8>mov dword ptr ss:[ebp-DC],eax
0052DA17 . 8>lea eax,dword ptr ss:[ebp-F4]
0052DA1D . 5>push edx ; /Arg2
0052DA1E . 5>push eax ; |Arg1
0052DA1F . C>mov dword ptr ss:[ebp-C0],0 ; |
0052DA29 . C>mov dword ptr ss:[ebp-E4],8 ; |
0052DA33 . F>call dword ptr ds:[<&MSVBVM60.#520>] ; \rtcTrimVar
0052DA39 . 8>lea ecx,dword ptr ss:[ebp-F4]
0052DA3F . 8>lea edx,dword ptr ss:[ebp-104]
0052DA45 . 5>push ecx ; /Arg2
0052DA46 . 5>push edx ; |Arg1
0052DA47 . F>call dword ptr ds:[<&MSVBVM60.#528>] ; \rtcUpperCaseVar
0052DA4D . 8>lea edx,dword ptr ss:[ebp-104]
0052DA53 . 8>lea ecx,dword ptr ss:[ebp-8C]
0052DA59 . F>call esi
0052DA5B . 8>lea eax,dword ptr ss:[ebp-CC]
0052DA61 . 8>lea ecx,dword ptr ss:[ebp-C8]
0052DA67 . 5>push eax
0052DA68 . 5>push ecx
0052DA69 . 6>push 2
0052DA6B . F>call dword ptr ds:[<&MSVBVM60.__vbaFreeObjList>>; MSVBVM60.__vbaFreeObjList
0052DA71 . 8>lea edx,dword ptr ss:[ebp-F4]
0052DA77 . 8>lea eax,dword ptr ss:[ebp-E4]
0052DA7D . 5>push edx
0052DA7E . 5>push eax
0052DA7F . 6>push 2
0052DA81 . F>call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>>; MSVBVM60.__vbaFreeVarList
0052DA87 . 8>add esp,18
0052DA8A . 8>lea ecx,dword ptr ss:[ebp-8C]
0052DA90 . 8>lea edx,dword ptr ss:[ebp-E4]
0052DA96 . 6>push 2 ; /Arg3 = 00000002
0052DA98 . 5>push ecx ; |Arg2
0052DA99 . 5>push edx ; |Arg1
0052DA9A . F>call dword ptr ds:[<&MSVBVM60.#617>] ; \得到注册码的前2位
0052DAA0 . 8>mov edi,dword ptr ds:[<&MSVBVM60.__vbaVarTstEq>>; MSVBVM60.__vbaVarTstEq
0052DAA6 . 8>lea eax,dword ptr ss:[ebp-E4]
0052DAAC . 8>lea ecx,dword ptr ss:[ebp-134]
0052DAB2 . 5>push eax
0052DAB3 . 5>push ecx
0052DAB4 . C>mov dword ptr ss:[ebp-12C],zxkcb.00417904 ; UNICODE "HC"
0052DABE . C>mov dword ptr ss:[ebp-134],8008
0052DAC8 . F>call edi ; 比较前2位是否为HC; <&MSVBVM60.__vbaVarTstEq>
0052DACA . 8>lea ecx,dword ptr ss:[ebp-E4]
0052DAD0 . 6>mov si,ax
0052DAD3 . F>call ebx
0052DAD5 . 6>test si,si
0052DAD8 . 0>je zxkcb.0052DF43
0052DADE . 8>lea edx,dword ptr ss:[ebp-8C]
0052DAE4 . 8>lea eax,dword ptr ss:[ebp-BC]
0052DAEA . 5>push edx
0052DAEB . 5>push eax
0052DAEC . F>call edi ; 最关键的比较计算好的与我输入码比较
0052DAEE . 6>test ax,ax
0052DAF1 . 7>je short zxkcb.0052DAFC ; 不能跳
0052DAF3 . 6>mov word ptr ds:[56B054],1 ; 注册位标志!!
0052DAFC > A>mov eax,dword ptr ds:[56BD34]
0052DB01 . 8>test eax,eax
………………………………………………………………………………………………………………
上面只是一个比较的过程!真正的注册码,早就计算出来了 ,
重新CTRL+F2 下断rtcMidCharVar
………………………………………………………………………………………………………………
取其关键部分:
…………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………
00462D8B . /E>JMP zxkcb.00462E3B
00462D90 > |C>MOV DWORD PTR SS:[EBP-4],0C
00462D97 . |C>MOV DWORD PTR SS:[EBP-C0],1
00462DA1 . |C>MOV DWORD PTR SS:[EBP-C8],2
00462DAB . |8>LEA ECX,DWORD PTR SS:[EBP-C8]
00462DB1 . |5>PUSH ECX
00462DB2 . |8>LEA EDX,DWORD PTR SS:[EBP-30]
00462DB5 . |5>PUSH EDX
00462DB6 . |F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaI4Va>; 检查位数
00462DBC . |5>PUSH EAX
00462DBD . |8>LEA EAX,DWORD PTR SS:[EBP-78]
00462DC0 . |5>PUSH EAX
00462DC1 . |8>LEA ECX,DWORD PTR SS:[EBP-D8]
00462DC7 . |5>PUSH ECX
00462DC8 . |F>CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; 一个一个取C盘序列号
00462DCE . |8>LEA EDX,DWORD PTR SS:[EBP-D8]
00462DD4 . |8>LEA ECX,DWORD PTR SS:[EBP-98]
00462DDA . |F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00462DE0 . |8>LEA ECX,DWORD PTR SS:[EBP-C8]
00462DE6 . |F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaFree>; MSVBVM60.__vbaFreeVar
00462DEC . |C>MOV DWORD PTR SS:[EBP-4],0D
00462DF3 . |8>LEA EDX,DWORD PTR SS:[EBP-40]
00462DF6 . |5>PUSH EDX
00462DF7 . |8>LEA EAX,DWORD PTR SS:[EBP-98]
00462DFD . |5>PUSH EAX
00462DFE . |8>LEA ECX,DWORD PTR SS:[EBP-C8]
00462E04 . |5>PUSH ECX
00462E05 . |F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarA>; MSVBVM60.__vbaVarAdd
00462E0B . |8>MOV EDX,EAX
00462E0D . |8>LEA ECX,DWORD PTR SS:[EBP-40]
00462E10 . |F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00462E16 . |C>MOV DWORD PTR SS:[EBP-4],0E
00462E1D . |8>LEA EDX,DWORD PTR SS:[EBP-13C]
00462E23 . |5>PUSH EDX
00462E24 . |8>LEA EAX,DWORD PTR SS:[EBP-12C]
00462E2A . |5>PUSH EAX
00462E2B . |8>LEA ECX,DWORD PTR SS:[EBP-30]
00462E2E . |5>PUSH ECX
00462E2F . |F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarF>; MSVBVM60.__vbaVarForNext
00462E35 . |8>MOV DWORD PTR SS:[EBP-194],EAX
00462E3B > \8>CMP DWORD PTR SS:[EBP-194],0
00462E42 .^ 0>JNZ zxkcb.00462D90 ; 上面一段,把得到的符号反过来
00462E48 . C>MOV DWORD PTR SS:[EBP-4],0F
00462E4F . 8>LEA EDX,DWORD PTR SS:[EBP-40]
00462E52 . 5>PUSH EDX
00462E53 . 8>LEA EAX,DWORD PTR SS:[EBP-AC]
00462E59 . 5>PUSH EAX
00462E5A . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrV>; 已经把C盘序列号反过来了
00462E60 . 5>PUSH EAX
00462E61 . F>CALL DWORD PTR DS:[<&MSVBVM60.#581>] ; 反过来的序列号转化位实数
00462E67 . D>FADD QWORD PTR DS:[402918] ; 加上98579
00462E6D . D>FSTP QWORD PTR SS:[EBP-F0]
00462E73 . D>FSTSW AX
00462E75 . A>TEST AL,0D
00462E77 . 0>JNZ zxkcb.004636BC
00462E7D . C>MOV DWORD PTR SS:[EBP-F8],5
00462E87 . 8>LEA EDX,DWORD PTR SS:[EBP-F8]
00462E8D . 8>LEA ECX,DWORD PTR SS:[EBP-60]
00462E90 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00462E96 . 8>LEA ECX,DWORD PTR SS:[EBP-AC]
00462E9C . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaFree>; MSVBVM60.__vbaFreeStr
00462EA2 . C>MOV DWORD PTR SS:[EBP-4],10
00462EA9 . C>MOV DWORD PTR SS:[EBP-F0],3
00462EB3 . C>MOV DWORD PTR SS:[EBP-F8],2
00462EBD . 8>LEA ECX,DWORD PTR SS:[EBP-60]
00462EC0 . 5>PUSH ECX
00462EC1 . 8>LEA EDX,DWORD PTR SS:[EBP-F8]
00462EC7 . 5>PUSH EDX
00462EC8 . 8>LEA EAX,DWORD PTR SS:[EBP-C8]
00462ECE . 5>PUSH EAX
00462ECF . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarD>; 得到的数据除以3得到584385493.33333329920
00462ED5 . 5>PUSH EAX
00462ED6 . 8>LEA ECX,DWORD PTR SS:[EBP-D8]
00462EDC . 5>PUSH ECX
00462EDD . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarI>; 把上面的数取整数!
00462EE3 . 8>MOV EDX,EAX
00462EE5 . 8>LEA ECX,DWORD PTR SS:[EBP-60]
00462EE8 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00462EEE . C>MOV DWORD PTR SS:[EBP-4],11
00462EF5 . C>MOV DWORD PTR SS:[EBP-F0],3
00462EFF . C>MOV DWORD PTR SS:[EBP-F8],2
00462F09 . 8>LEA EDX,DWORD PTR SS:[EBP-60]
00462F0C . 5>PUSH EDX
00462F0D . 8>LEA EAX,DWORD PTR SS:[EBP-F8]
00462F13 . 5>PUSH EAX
00462F14 . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
00462F1A . 5>PUSH ECX
00462F1B . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarD>; 再除以3
00462F21 . 5>PUSH EAX
00462F22 . 8>LEA EDX,DWORD PTR SS:[EBP-D8]
00462F28 . 5>PUSH EDX
00462F29 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarI>; 把上面的数取整数!
00462F2F . 8>MOV EDX,EAX
00462F31 . 8>LEA ECX,DWORD PTR SS:[EBP-60]
00462F34 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00462F3A . C>MOV DWORD PTR SS:[EBP-4],12
00462F41 . C>MOV DWORD PTR SS:[EBP-F0],zxkcb.0056B04>
00462F4B . C>MOV DWORD PTR SS:[EBP-F8],4008
00462F55 . 8>LEA EAX,DWORD PTR SS:[EBP-F8]
00462F5B . 5>PUSH EAX
00462F5C . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
00462F62 . 5>PUSH ECX
00462F63 . F>CALL DWORD PTR DS:[<&MSVBVM60.#520>] ; MSVBVM60.rtcTrimVar
00462F69 . C>MOV DWORD PTR SS:[EBP-100],zxkcb.0056B0>
00462F73 . C>MOV DWORD PTR SS:[EBP-108],4008
00462F7D . 8>LEA EDX,DWORD PTR SS:[EBP-108]
00462F83 . 5>PUSH EDX
00462F84 . 8>LEA EAX,DWORD PTR SS:[EBP-D8]
00462F8A . 5>PUSH EAX
00462F8B . F>CALL DWORD PTR DS:[<&MSVBVM60.#520>] ; MSVBVM60.rtcTrimVar
00462F91 . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
00462F97 . 5>PUSH ECX
00462F98 . 8>LEA EDX,DWORD PTR SS:[EBP-D8]
00462F9E . 5>PUSH EDX
00462F9F . 8>LEA EAX,DWORD PTR SS:[EBP-E8]
00462FA5 . 5>PUSH EAX
00462FA6 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarA>; 得到用户名第一次并没有得到
00462FAC . 8>MOV EDX,EAX
00462FAE . 8>LEA ECX,DWORD PTR SS:[EBP-88]
00462FB4 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00462FBA . 8>LEA ECX,DWORD PTR SS:[EBP-D8]
00462FC0 . 5>PUSH ECX
00462FC1 . 8>LEA EDX,DWORD PTR SS:[EBP-C8]
00462FC7 . 5>PUSH EDX
00462FC8 . 6>PUSH 2
00462FCA . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaFree>; MSVBVM60.__vbaFreeVarList
00462FD0 . 8>ADD ESP,0C
00462FD3 . C>MOV DWORD PTR SS:[EBP-4],13
00462FDA . C>MOV DWORD PTR SS:[EBP-68],0
00462FE1 . C>MOV DWORD PTR SS:[EBP-64],0
00462FE8 . C>MOV DWORD PTR SS:[EBP-4],14
00462FEF . C>MOV DWORD PTR SS:[EBP-F0],1
00462FF9 . C>MOV DWORD PTR SS:[EBP-F8],2
00463003 . C>MOV DWORD PTR SS:[EBP-100],1
0046300D . C>MOV DWORD PTR SS:[EBP-108],2
00463017 . 8>LEA EAX,DWORD PTR SS:[EBP-F8]
0046301D . 5>PUSH EAX
0046301E . 8>LEA ECX,DWORD PTR SS:[EBP-88]
00463024 . 5>PUSH ECX
00463025 . 8>LEA EDX,DWORD PTR SS:[EBP-C8]
0046302B . 5>PUSH EDX
0046302C . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenV>; MSVBVM60.__vbaLenVar
00463032 . 5>PUSH EAX
00463033 . 8>LEA EAX,DWORD PTR SS:[EBP-108]
00463039 . 5>PUSH EAX
0046303A . 8>LEA ECX,DWORD PTR SS:[EBP-15C]
00463040 . 5>PUSH ECX
00463041 . 8>LEA EDX,DWORD PTR SS:[EBP-14C]
00463047 . 5>PUSH EDX
00463048 . 8>LEA EAX,DWORD PTR SS:[EBP-30]
0046304B . 5>PUSH EAX
0046304C . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarF>; MSVBVM60.__vbaVarForInit
00463052 . 8>MOV DWORD PTR SS:[EBP-198],EAX
00463058 . E>JMP zxkcb.00463145
0046305D > C>MOV DWORD PTR SS:[EBP-4],15
00463064 . C>MOV DWORD PTR SS:[EBP-C0],1
0046306E . C>MOV DWORD PTR SS:[EBP-C8],2
00463078 . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
0046307E . 5>PUSH ECX
0046307F . 8>LEA EDX,DWORD PTR SS:[EBP-30]
00463082 . 5>PUSH EDX
00463083 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaI4Va>; 用来比较的
00463089 . 5>PUSH EAX
0046308A . 8>LEA EAX,DWORD PTR SS:[EBP-88]
00463090 . 5>PUSH EAX
00463091 . 8>LEA ECX,DWORD PTR SS:[EBP-D8]
00463097 . 5>PUSH ECX
00463098 . F>CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar
0046309E . 8>LEA EDX,DWORD PTR SS:[EBP-D8]
004630A4 . 8>LEA ECX,DWORD PTR SS:[EBP-98]
004630AA . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
004630B0 . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
004630B6 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaFree>; MSVBVM60.__vbaFreeVar
004630BC . C>MOV DWORD PTR SS:[EBP-4],16
004630C3 . 8>LEA EDX,DWORD PTR SS:[EBP-98]
004630C9 . 5>PUSH EDX
004630CA . 8>LEA EAX,DWORD PTR SS:[EBP-AC]
004630D0 . 5>PUSH EAX
004630D1 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrV>; 看到上面得到的值
004630D7 . 5>PUSH EAX
004630D8 . F>CALL DWORD PTR DS:[<&MSVBVM60.#516>] ; 学校名和用户名的ASCII码一个一个汉字也是一样!
004630DE . 6>MOV WORD PTR SS:[EBP-10C],AX
004630E5 . 0>MOVSX ECX,WORD PTR SS:[EBP-10C]
004630EC . 8>MOV DWORD PTR SS:[EBP-1C4],ECX
004630F2 . D>FILD DWORD PTR SS:[EBP-1C4]
004630F8 . D>FSTP QWORD PTR SS:[EBP-1CC]
004630FE . D>FLD QWORD PTR SS:[EBP-68]
00463101 . D>FADD QWORD PTR SS:[EBP-1CC] ; 把得到加在一起
00463107 . D>FSTP QWORD PTR SS:[EBP-68]
0046310A . D>FSTSW AX
0046310C . A>TEST AL,0D
0046310E . 0>JNZ zxkcb.004636BC
00463114 . 8>LEA ECX,DWORD PTR SS:[EBP-AC]
0046311A . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaFree>; MSVBVM60.__vbaFreeStr
00463120 . C>MOV DWORD PTR SS:[EBP-4],17
00463127 . 8>LEA EDX,DWORD PTR SS:[EBP-15C]
0046312D . 5>PUSH EDX
0046312E . 8>LEA EAX,DWORD PTR SS:[EBP-14C]
00463134 . 5>PUSH EAX
00463135 . 8>LEA ECX,DWORD PTR SS:[EBP-30]
00463138 . 5>PUSH ECX
00463139 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarF>; MSVBVM60.__vbaVarForNext
0046313F . 8>MOV DWORD PTR SS:[EBP-198],EAX
00463145 > 8>CMP DWORD PTR SS:[EBP-198],0
0046314C .^ 0>JNZ zxkcb.0046305D
00463152 . C>MOV DWORD PTR SS:[EBP-4],18
00463159 . 8>MOV EDX,DWORD PTR SS:[EBP-68]
0046315C . 8>MOV DWORD PTR SS:[EBP-F0],EDX
00463162 . 8>MOV EAX,DWORD PTR SS:[EBP-64]
00463165 . 8>MOV DWORD PTR SS:[EBP-EC],EAX
0046316B . C>MOV DWORD PTR SS:[EBP-F8],5
00463175 . 8>LEA ECX,DWORD PTR SS:[EBP-60]
00463178 . 5>PUSH ECX
00463179 . 8>LEA EDX,DWORD PTR SS:[EBP-F8]
0046317F . 5>PUSH EDX
00463180 . 8>LEA EAX,DWORD PTR SS:[EBP-C8]
00463186 . 5>PUSH EAX
00463187 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarA>; 把上面相加得到的数据加上由C盘序列号得到的
0046318D . 8>MOV EDX,EAX
0046318F . 8>LEA ECX,DWORD PTR SS:[EBP-60]
00463192 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00463198 . C>MOV DWORD PTR SS:[EBP-4],19
0046319F . 8>LEA ECX,DWORD PTR SS:[EBP-60]
004631A2 . 5>PUSH ECX
004631A3 . 8>LEA EDX,DWORD PTR SS:[EBP-C8]
004631A9 . 5>PUSH EDX
004631AA . F>CALL DWORD PTR DS:[<&MSVBVM60.#613>] ; 转化为字符!
004631B0 . 8>LEA EAX,DWORD PTR SS:[EBP-C8]
004631B6 . 5>PUSH EAX
004631B7 . 8>LEA ECX,DWORD PTR SS:[EBP-D8]
004631BD . 5>PUSH ECX
004631BE . F>CALL DWORD PTR DS:[<&MSVBVM60.#520>] ; MSVBVM60.rtcTrimVar
004631C4 . 8>LEA EDX,DWORD PTR SS:[EBP-D8]
004631CA . 8>LEA ECX,DWORD PTR SS:[EBP-78]
004631CD . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
004631D3 . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
004631D9 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaFree>; MSVBVM60.__vbaFreeVar
004631DF . C>MOV DWORD PTR SS:[EBP-4],1A
004631E6 . 8>LEA EDX,DWORD PTR SS:[EBP-78]
004631E9 . 5>PUSH EDX
004631EA . 8>LEA EAX,DWORD PTR SS:[EBP-C8]
004631F0 . 5>PUSH EAX
004631F1 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaLenV>; MSVBVM60.__vbaLenVar
004631F7 . 8>MOV EDX,EAX
004631F9 . 8>LEA ECX,DWORD PTR SS:[EBP-50]
004631FC . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00463202 . C>MOV DWORD PTR SS:[EBP-4],1B
00463209 . C>MOV DWORD PTR SS:[EBP-F0],zxkcb.0041620>
00463213 . C>MOV DWORD PTR SS:[EBP-F8],8
0046321D . 8>LEA EDX,DWORD PTR SS:[EBP-F8]
00463223 . 8>LEA ECX,DWORD PTR SS:[EBP-40]
00463226 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarC>; MSVBVM60.__vbaVarCopy
0046322C . C>MOV DWORD PTR SS:[EBP-4],1C
00463233 . C>MOV DWORD PTR SS:[EBP-F0],-1
0046323D . C>MOV DWORD PTR SS:[EBP-F8],2
00463247 . C>MOV DWORD PTR SS:[EBP-100],1
00463251 . C>MOV DWORD PTR SS:[EBP-108],2
0046325B . 8>LEA ECX,DWORD PTR SS:[EBP-F8]
00463261 . 5>PUSH ECX
00463262 . 8>LEA EDX,DWORD PTR SS:[EBP-108]
00463268 . 5>PUSH EDX
00463269 . 8>LEA EAX,DWORD PTR SS:[EBP-50]
0046326C . 5>PUSH EAX
0046326D . 8>LEA ECX,DWORD PTR SS:[EBP-17C]
00463273 . 5>PUSH ECX
00463274 . 8>LEA EDX,DWORD PTR SS:[EBP-16C]
0046327A . 5>PUSH EDX
0046327B . 8>LEA EAX,DWORD PTR SS:[EBP-30]
0046327E . 5>PUSH EAX
0046327F . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarF>; MSVBVM60.__vbaVarForInit
00463285 . 8>MOV DWORD PTR SS:[EBP-19C],EAX
0046328B . E>JMP zxkcb.0046333B
00463290 > C>MOV DWORD PTR SS:[EBP-4],1D
00463297 . C>MOV DWORD PTR SS:[EBP-C0],1
004632A1 . C>MOV DWORD PTR SS:[EBP-C8],2
004632AB . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
004632B1 . 5>PUSH ECX
004632B2 . 8>LEA EDX,DWORD PTR SS:[EBP-30]
004632B5 . 5>PUSH EDX
004632B6 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaI4Va>; MSVBVM60.__vbaI4Var
004632BC . 5>PUSH EAX
004632BD . 8>LEA EAX,DWORD PTR SS:[EBP-78]
004632C0 . 5>PUSH EAX
004632C1 . 8>LEA ECX,DWORD PTR SS:[EBP-D8]
004632C7 . 5>PUSH ECX
004632C8 . F>CALL DWORD PTR DS:[<&MSVBVM60.#632>] ; 一个一个得到真正注册码一个一个反过来储存!
004632CE . 8>LEA EDX,DWORD PTR SS:[EBP-D8]
004632D4 . 8>LEA ECX,DWORD PTR SS:[EBP-98]
004632DA . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
004632E0 . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
004632E6 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaFree>; MSVBVM60.__vbaFreeVar
004632EC . C>MOV DWORD PTR SS:[EBP-4],1E
004632F3 . 8>LEA EDX,DWORD PTR SS:[EBP-40]
004632F6 . 5>PUSH EDX
004632F7 . 8>LEA EAX,DWORD PTR SS:[EBP-98]
004632FD . 5>PUSH EAX
004632FE . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
00463304 . 5>PUSH ECX
00463305 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarA>; MSVBVM60.__vbaVarAdd
0046330B . 8>MOV EDX,EAX
0046330D . 8>LEA ECX,DWORD PTR SS:[EBP-40]
00463310 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00463316 . C>MOV DWORD PTR SS:[EBP-4],1F
0046331D . 8>LEA EDX,DWORD PTR SS:[EBP-17C]
00463323 . 5>PUSH EDX
00463324 . 8>LEA EAX,DWORD PTR SS:[EBP-16C]
0046332A . 5>PUSH EAX
0046332B . 8>LEA ECX,DWORD PTR SS:[EBP-30]
0046332E . 5>PUSH ECX
0046332F . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarF>; MSVBVM60.__vbaVarForNext
00463335 . 8>MOV DWORD PTR SS:[EBP-19C],EAX
0046333B > 8>CMP DWORD PTR SS:[EBP-19C],0
00463342 .^ 0>JNZ zxkcb.00463290
00463348 . C>MOV DWORD PTR SS:[EBP-4],20
0046334F . C>MOV DWORD PTR SS:[EBP-F0],zxkcb.0041790>; UNICODE "HC"
00463359 . C>MOV DWORD PTR SS:[EBP-F8],8
00463363 . 8>LEA EDX,DWORD PTR SS:[EBP-F8]
00463369 . 5>PUSH EDX
0046336A . 8>LEA EAX,DWORD PTR SS:[EBP-40]
0046336D . 5>PUSH EAX
0046336E . 8>LEA ECX,DWORD PTR SS:[EBP-C8]
00463374 . 5>PUSH ECX
00463375 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarA>; 把反过来的真正注册码前面加上HC
0046337B . 8>MOV EDX,EAX
0046337D . 8>LEA ECX,DWORD PTR SS:[EBP-A8]
00463383 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarM>; MSVBVM60.__vbaVarMove
00463389 . C>MOV DWORD PTR SS:[EBP-4],21
00463390 . 8>MOV EDX,DWORD PTR DS:[56B050]
00463396 . 8>MOV DWORD PTR SS:[EBP-F0],EDX
0046339C . C>MOV DWORD PTR SS:[EBP-F8],8008
004633A6 . 8>LEA EAX,DWORD PTR SS:[EBP-F8]
004633AC . 5>PUSH EAX
004633AD . 8>LEA ECX,DWORD PTR SS:[EBP-A8]
004633B3 . 5>PUSH ECX
004633B4 . F>CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarT>; 变量比较了!!
004633BA . 0>MOVSX EDX,AX
004633BD . 8>TEST EDX,EDX
004633BF . 7>JE SHORT zxkcb.004633D1 ; 关键比较
004633C1 . C>MOV DWORD PTR SS:[EBP-4],22
004633C8 . 6>MOV WORD PTR DS:[56B054],1 ; 标志位!!如果上面相等则,这里置1
004633D1 > C>MOV DWORD PTR SS:[EBP-4],24
…………………………………………………………………………………………………………………………
整个是这样的:得到C盘的序列号,并把它反过来,转化为实数,加上98579,得到的结果除以3取整数
(注意:如果把反过来,再在前面加上ZX,就得到我的机器码了!),得到的商再除以3,取整数,然后
把输入的用户名和学校名称转化为ASCII码,(注意:如果是汉字ASCII码是负数)一个一个加起来,
得到的值,与上面的商相加,然后把它反过来储存,在它前面加上HC就得到了真正的注册码!
或者从机器码入手:去掉前两位字母,把剩下的反过来,再除以3,取整数,然后
把输入的用户名和学校名称转化为ASCII码,(注意:如果是汉字ASCII码是负数)一个一个加起来,得到的值,与上面的商相加,然后把它反过来储存,在它前面加上HC就得到了真正的注册码!
注册信息保存在:hkey_current_user下面的software下面的vb and vba program settings下面有新生命智能排课件王settings下面
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课