首页
社区
课程
招聘
[原创]排课王2.6版算法分析
发表于: 2005-3-3 12:30 3762

[原创]排课王2.6版算法分析

2005-3-3 12:30
3762
排课王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下面

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 214
活跃值: (86)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
……………………代码一堆,可惜解释好象少了点~~`
2005-3-3 12:36
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
好文,vb的东西。
2005-3-3 12:37
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
最初由 lidazixun 发布
……………………代码一堆,可惜解释好象少了点~~`

已经找出了算法,你自己调试一遍不就清楚了?
2005-3-3 12:38
0
雪    币: 204
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
对于一个真正想学习提高的人来说,还是应该多练习分析代码;me 懒,看到vb的东东,习惯于先用工具在关键点上拦截注册码,不成功就找爆破点,不到万不得已,不会去分析算法,所以,至今,水平很菜!
2005-3-3 14:53
0
游客
登录 | 注册 方可回帖
返回
//