某保护专家注册算法分析
本帖最后由 GGLHY 于 2011-2-7 02:25 编辑明天凌晨要出远门,短期内没什么机会OD了。反正这时也睡不着,翻了翻硬盘,无意找到这个软件,顺便练练手吧,也和初学者们共同学习下。欢迎大家指正!
直接来到:
00541C8B|.E8 0C2EECFF CALL 00404A9C
00541C90|.83F8 14 CMP EAX,14 ;假码长度为20位吗?
00541C93|.0F85 D5000000 JNZ 00541D6E
00541C99|.A0 F01D5400 MOV AL,BYTE PTR DS: ;[全局变量?=01]
00541C9E|.50 PUSH EAX
00541C9F|.8D45 E8 LEA EAX,DWORD PTR SS:
00541CA2|.50 PUSH EAX
00541CA3|.8D55 E0 LEA EDX,DWORD PTR SS:
00541CA6|.8B83 F8020000 MOV EAX,DWORD PTR DS:
00541CAC|.E8 9B9FF2FF CALL 0046BC4C
00541CB1|.8B45 E0 MOV EAX,DWORD PTR SS: ;机器码
00541CB4|.8D55 E4 LEA EDX,DWORD PTR SS:
00541CB7|.E8 00F4FFFF CALL 005410BC ;算法CALL,F7
00541CBC|.8B45 E4 MOV EAX,DWORD PTR SS: ;真码!
00541CBF|.B9 081E5400 MOV ECX,00541E08
00541CC4|.BA 141E5400 MOV EDX,00541E14
00541CC9|.E8 D6CCECFF CALL 0040E9A4
00541CCE|.8B45 E8 MOV EAX,DWORD PTR SS:
00541CD1|.8B55 FC MOV EDX,DWORD PTR SS:
00541CD4|.E8 0F2FECFF CALL 00404BE8 ;内存注册机,EAX
00541CD9|.0F85 8F000000 JNZ 00541D6E ;关键跳!
...
(省略部分代码)
...
00541D6E|> \6A 20 PUSH 20
00541D70|.68 181E5400 PUSH 00541E18
00541D75|.68 641E5400 PUSH 00541E64
00541D7A|.8BC3 MOV EAX,EBX
00541D7C|.E8 FB07F3FF CALL 0047257C
00541D81|.50 PUSH EAX ; |hOwner
00541D82|.E8 D55BECFF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA ///出错啦!
00541D87|>33C0 XOR EAX,EAX
==========================================================我们F7进去:
005410BC/$55 PUSH EBP
005410BD|.8BEC MOV EBP,ESP
005410BF|.B9 14000000 MOV ECX,14
005410C4|>6A 00 /PUSH 0
005410C6|.6A 00 |PUSH 0
005410C8|.49 |DEC ECX
005410C9|.^ 75 F9 \JNZ SHORT 005410C4
005410CB|.53 PUSH EBX
005410CC|.56 PUSH ESI
005410CD|.57 PUSH EDI
005410CE|.8BFA MOV EDI,EDX
005410D0|.8945 FC MOV DWORD PTR SS:,EAX
005410D3|.8B45 FC MOV EAX,DWORD PTR SS: ;机器码
005410D6|.E8 B13BECFF CALL 00404C8C
005410DB|.33C0 XOR EAX,EAX
005410DD|.55 PUSH EBP
005410DE|.68 FC155400 PUSH 005415FC
005410E3|.64:FF30 PUSH DWORD PTR FS:
005410E6|.64:8920 MOV DWORD PTR FS:,ESP
005410E9|.8D45 F8 LEA EAX,DWORD PTR SS:
005410EC|.BA 14165400 MOV EDX,00541614 ;固定字符串1(表1)ASCII "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
005410F1|.E8 6E37ECFF CALL 00404864
005410F6|.8D45 F4 LEA EAX,DWORD PTR SS:
005410F9|.BA 44165400 MOV EDX,00541644 ;固定字符串2(表1)ASCII "T9OP1QWVUZCD37FGHLAIJM0K4Y5EN6B82XRS"
005410FE|.E8 6137ECFF CALL 00404864
00541103|.A0 6C165400 MOV AL,BYTE PTR DS: ;又一个?
00541108|.50 PUSH EAX
00541109|.8D45 EC LEA EAX,DWORD PTR SS:
0054110C|.50 PUSH EAX
0054110D|.33C9 XOR ECX,ECX
0054110F|.BA 78165400 MOV EDX,00541678
00541114|.8B45 FC MOV EAX,DWORD PTR SS: ;机器码
00541117|.E8 88D8ECFF CALL 0040E9A4
0054111C|.8B55 EC MOV EDX,DWORD PTR SS: ;去掉其中的“-”,下面说的机器码都是去掉“-“后的
0054111F|.8D45 FC LEA EAX,DWORD PTR SS:
00541122|.E8 3D37ECFF CALL 00404864
00541127|.33F6 XOR ESI,ESI
00541129|.BB 01000000 MOV EBX,1 ;EBX=1
0054112E|>8B45 FC /MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
00541131|.8A4418 FF |MOV AL,BYTE PTR DS: ;依次ASC
00541135|.04 D0 |ADD AL,0D0 ;+0D0
00541137|.2C 0A |SUB AL,0A ;-0A
00541139|.73 1D |JNB SHORT 00541158 ;不低于(0?)则跳
0054113B|.8D45 E8 |LEA EAX,DWORD PTR SS:
0054113E|.50 |PUSH EAX
0054113F|.B9 01000000 |MOV ECX,1
00541144|.8BD3 |MOV EDX,EBX
00541146|.8B45 FC |MOV EAX,DWORD PTR SS:
00541149|.E8 AE3BECFF |CALL 00404CFC
0054114E|.8B45 E8 |MOV EAX,DWORD PTR SS:
00541151|.E8 B282ECFF |CALL 00409408
00541156|.03F0 |ADD ESI,EAX ;(+D0-0A后)不跳的话,即机器码的数字值直接累加
00541158|>43 |INC EBX
00541159|.83FB 11 |CMP EBX,11 ;16位取完了吗?(EBX初始为1)
0054115C|.^ 75 D0 \JNZ SHORT 0054112E
0054115E|.8BC6 MOV EAX,ESI ;机器码中(数字)累加的结果
00541160|.B9 24000000 MOV ECX,24 ;ECX=24
00541165|.99 CDQ
00541166|.F7F9 IDIV ECX ;/24
00541168|.8BF2 MOV ESI,EDX ;余数到ESI
0054116A|.8D45 F0 LEA EAX,DWORD PTR SS:
0054116D|.50 PUSH EAX
0054116E|.B9 01000000 MOV ECX,1 ; 注意这个参数,即要取的字符长度
00541173|.8BD6 MOV EDX,ESI ;余数到EDI
00541175|.8B45 F8 MOV EAX,DWORD PTR SS: ;固定字符串1:1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
00541178|.E8 7F3BECFF CALL 00404CFC ;这个CALL实质是根据余数来查表
0054117D|.8D45 E4 LEA EAX,DWORD PTR SS: ;本例余数20H,查表得到字符“V”(长度mov ECX,1决定)
00541180|.50 PUSH EAX
00541181|.8D45 E0 LEA EAX,DWORD PTR SS:
00541184|.50 PUSH EAX
00541185|.B9 01000000 MOV ECX,1 ;这里,意味着取的长度
0054118A|.BA 03000000 MOV EDX,3 ;注意这里的参数3
0054118F|.8B45 FC MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
00541192|.E8 653BECFF CALL 00404CFC
00541197|.8B45 E0 MOV EAX,DWORD PTR SS: ;呵呵,机器码第3位的ASC
0054119A|.8B55 F8 MOV EDX,DWORD PTR SS: ;固定字符串1:1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
0054119D|.E8 3E3CECFF CALL 00404DE0
005411A2|.8BD0 MOV EDX,EAX ;机器码第3位在固定字符串1中的位置值
005411A4|.B9 01000000 MOV ECX,1
005411A9|.8B45 F4 MOV EAX,DWORD PTR SS: ;固定字符串2:T9OP1QWVUZCD37FGHLAIJM0K4Y5EN6B82XRS
005411AC|.E8 4B3BECFF CALL 00404CFC
005411B1|.8B55 E4 MOV EDX,DWORD PTR SS: ;所取机器码查表得到的位置值来取固定字符串2中的字符(的ASC)
005411B4|.8D45 F0 LEA EAX,DWORD PTR SS:
005411B7|.E8 E838ECFF CALL 00404AA4
005411BC|.8D45 DC LEA EAX,DWORD PTR SS:
005411BF|.50 PUSH EAX
005411C0|.8D45 D8 LEA EAX,DWORD PTR SS:
005411C3|.50 PUSH EAX
005411C4|.B9 01000000 MOV ECX,1 ;取的长度
005411C9|.BA 01000000 MOV EDX,1 ;参数意味着是取机器码第一位,即取的起点
005411CE|.8B45 FC MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
005411D1|.E8 263BECFF CALL 00404CFC
005411D6|.8B45 D8 MOV EAX,DWORD PTR SS: ;机器码第1位
005411D9|.8B55 F8 MOV EDX,DWORD PTR SS: ;固定字符串1
005411DC|.E8 FF3BECFF CALL 00404DE0
005411E1|.8BD0 MOV EDX,EAX ;机器码第1位在固定字符串1中的位置值
005411E3|.B9 01000000 MOV ECX,1
005411E8|.8B45 F4 MOV EAX,DWORD PTR SS: ;固定字符串2:T9OP1QWVUZCD37FGHLAIJM0K4Y5EN6B82XRS
005411EB|.E8 0C3BECFF CALL 00404CFC
005411F0|.8B55 DC MOV EDX,DWORD PTR SS: ;按该位置值在字符串2中取字符(R)
005411F3|.8D45 F0 LEA EAX,DWORD PTR SS:
005411F6|.E8 A938ECFF CALL 00404AA4
005411FB|.8D45 D4 LEA EAX,DWORD PTR SS:
005411FE|.50 PUSH EAX
005411FF|.8D45 D0 LEA EAX,DWORD PTR SS:
00541202|.50 PUSH EAX
00541203|.B9 01000000 MOV ECX,1 ;取的长度
00541208|.BA 08000000 MOV EDX,8 ;取的起点(机器码第8位)
0054120D|.8B45 FC MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
00541210|.E8 E73AECFF CALL 00404CFC
00541215|.8B45 D0 MOV EAX,DWORD PTR SS: ;机器码第8位(G)
00541218|.8B55 F8 MOV EDX,DWORD PTR SS: ;固定字符串1
0054121B|.E8 C03BECFF CALL 00404DE0
00541220|.8BD0 MOV EDX,EAX ;机器码第8位(G)在固定字符串1中的位置值
00541222|.B9 01000000 MOV ECX,1
00541227|.8B45 F4 MOV EAX,DWORD PTR SS: ;固定注意地址,字符串2:T9OP1QWVUZCD37FGHLAIJM0K4Y5EN6B82XRS
0054122A|.E8 CD3AECFF CALL 00404CFC
0054122F|.8B55 D4 MOV EDX,DWORD PTR SS: ;按该位置值在字符串2中取字符(H)
00541232|.8D45 F0 LEA EAX,DWORD PTR SS:
00541235|.E8 6A38ECFF CALL 00404AA4
0054123A|.8D45 CC LEA EAX,DWORD PTR SS:
0054123D|.50 PUSH EAX
0054123E|.8D45 C8 LEA EAX,DWORD PTR SS:
00541241|.50 PUSH EAX
00541242|.B9 01000000 MOV ECX,1 ;取的长度为1
00541247|.BA 02000000 MOV EDX,2 ;取的起点为2
0054124C|.8B45 FC MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
0054124F|.E8 A83AECFF CALL 00404CFC
00541254|.8B45 C8 MOV EAX,DWORD PTR SS: ;机器码第2位(Q)asc
00541257|.8B55 F8 MOV EDX,DWORD PTR SS: ;固定字符串1
0054125A|.E8 813BECFF CALL 00404DE0
0054125F|.8BD0 MOV EDX,EAX ;机器码第二位在固定字符串1中的位置值
00541261|.B9 02000000 MOV ECX,2 ;注意这里的ECX=2,意味着这里取2位
00541266|.8B45 F4 MOV EAX,DWORD PTR SS: ;固定字符串2
00541269|.E8 8E3AECFF CALL 00404CFC
0054126E|.8B55 CC MOV EDX,DWORD PTR SS: ;“5E”(固定字符串2的)第27位为5第28位为E。(ECX=2决定)
00541271|.8D45 F0 LEA EAX,DWORD PTR SS:
00541274|.E8 2B38ECFF CALL 00404AA4
00541279|.8D45 C4 LEA EAX,DWORD PTR SS:
0054127C|.50 PUSH EAX
0054127D|.8D45 C0 LEA EAX,DWORD PTR SS:
00541280|.50 PUSH EAX
00541281|.B9 01000000 MOV ECX,1 ;取的长度为1
00541286|.BA 0E000000 MOV EDX,0E ;起点为第14位
0054128B|.8B45 FC MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
0054128E|.E8 693AECFF CALL 00404CFC
00541293|.8B45 C0 MOV EAX,DWORD PTR SS: ;(Q)
00541296|.8B55 F8 MOV EDX,DWORD PTR SS:
00541299|.E8 423BECFF CALL 00404DE0
0054129E|.8BD0 MOV EDX,EAX
005412A0|.B9 02000000 MOV ECX,2 ;注意这里=2
005412A5|.8B45 F4 MOV EAX,DWORD PTR SS:
005412A8|.E8 4F3AECFF CALL 00404CFC
005412AD|.8B55 C4 MOV EDX,DWORD PTR SS: ;查表2得到的“5E”
005412B0|.8D45 F0 LEA EAX,DWORD PTR SS:
005412B3|.E8 EC37ECFF CALL 00404AA4
005412B8|.8D45 BC LEA EAX,DWORD PTR SS:
005412BB|.50 PUSH EAX
005412BC|.8D45 B8 LEA EAX,DWORD PTR SS:
005412BF|.50 PUSH EAX
005412C0|.B9 01000000 MOV ECX,1 ;取的长度为1
005412C5|.BA 04000000 MOV EDX,4 ;起点为第4位
005412CA|.8B45 FC MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
005412CD|.E8 2A3AECFF CALL 00404CFC
005412D2|.8B45 B8 MOV EAX,DWORD PTR SS: ;机器码第4位(4)
005412D5|.8B55 F8 MOV EDX,DWORD PTR SS:
005412D8|.E8 033BECFF CALL 00404DE0
005412DD|.8BD0 MOV EDX,EAX
005412DF|.B9 01000000 MOV ECX,1 ;取1位
005412E4|.8B45 F4 MOV EAX,DWORD PTR SS:
005412E7|.E8 103AECFF CALL 00404CFC
005412EC|.8B55 BC MOV EDX,DWORD PTR SS: ;查表2得到的"P"
005412EF|.8D45 F0 LEA EAX,DWORD PTR SS:
005412F2|.E8 AD37ECFF CALL 00404AA4
005412F7|.8D45 B4 LEA EAX,DWORD PTR SS:
005412FA|.50 PUSH EAX
005412FB|.8D45 B0 LEA EAX,DWORD PTR SS:
005412FE|.50 PUSH EAX
005412FF|.B9 01000000 MOV ECX,1
00541304|.BA 05000000 MOV EDX,5 ;起点为第5位
00541309|.8B45 FC MOV EAX,DWORD PTR SS:
0054130C|.E8 EB39ECFF CALL 00404CFC
00541311|.8B45 B0 MOV EAX,DWORD PTR SS: ;机器码的5的ASC
00541314|.8B55 F8 MOV EDX,DWORD PTR SS:
00541317|.E8 C43AECFF CALL 00404DE0
0054131C|.8BD0 MOV EDX,EAX
0054131E|.B9 01000000 MOV ECX,1
00541323|.8B45 F4 MOV EAX,DWORD PTR SS:
00541326|.E8 D139ECFF CALL 00404CFC
0054132B|.8B55 B4 MOV EDX,DWORD PTR SS: ;查表2得到的"1"
0054132E|.8D45 F0 LEA EAX,DWORD PTR SS:
00541331|.E8 6E37ECFF CALL 00404AA4
00541336|.8D45 AC LEA EAX,DWORD PTR SS:
00541339|.50 PUSH EAX
0054133A|.8D45 A8 LEA EAX,DWORD PTR SS:
0054133D|.50 PUSH EAX
0054133E|.B9 01000000 MOV ECX,1 ;取的长度为1
00541343|.BA 10000000 MOV EDX,10 ;起点第16位
00541348|.8B45 FC MOV EAX,DWORD PTR SS:
0054134B|.E8 AC39ECFF CALL 00404CFC
00541350|.8B45 A8 MOV EAX,DWORD PTR SS: ;机器码中的B(第16位)
00541353|.8B55 F8 MOV EDX,DWORD PTR SS:
00541356|.E8 853AECFF CALL 00404DE0
0054135B|.8BD0 MOV EDX,EAX
0054135D|.B9 01000000 MOV ECX,1
00541362|.8B45 F4 MOV EAX,DWORD PTR SS:
00541365|.E8 9239ECFF CALL 00404CFC
0054136A|.8B55 AC MOV EDX,DWORD PTR SS: ;查表2得到的“D”
0054136D|.8D45 F0 LEA EAX,DWORD PTR SS:
00541370|.E8 2F37ECFF CALL 00404AA4
00541375|.8D45 A4 LEA EAX,DWORD PTR SS:
00541378|.50 PUSH EAX
00541379|.8D45 A0 LEA EAX,DWORD PTR SS:
0054137C|.50 PUSH EAX
0054137D|.B9 01000000 MOV ECX,1 ;取的长度为1
00541382|.BA 07000000 MOV EDX,7 ;起点第7位
00541387|.8B45 FC MOV EAX,DWORD PTR SS:
0054138A|.E8 6D39ECFF CALL 00404CFC
0054138F|.8B45 A0 MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码的第7位5
00541392|.8B55 F8 MOV EDX,DWORD PTR SS:
00541395|.E8 463AECFF CALL 00404DE0
0054139A|.8BD0 MOV EDX,EAX
0054139C|.B9 01000000 MOV ECX,1
005413A1|.8B45 F4 MOV EAX,DWORD PTR SS:
005413A4|.E8 5339ECFF CALL 00404CFC
005413A9|.8B55 A4 MOV EDX,DWORD PTR SS: ;查表2得到的“1”
005413AC|.8D45 F0 LEA EAX,DWORD PTR SS:
005413AF|.E8 F036ECFF CALL 00404AA4
005413B4|.8D45 9C LEA EAX,DWORD PTR SS:
005413B7|.50 PUSH EAX
005413B8|.8D45 98 LEA EAX,DWORD PTR SS:
005413BB|.50 PUSH EAX
005413BC|.B9 01000000 MOV ECX,1 ;取的长度为1
005413C1|.BA 09000000 MOV EDX,9 ;起点第9位
005413C6|.8B45 FC MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
005413C9|.E8 2E39ECFF CALL 00404CFC
005413CE|.8B45 98 MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码的第9位(6)
005413D1|.8B55 F8 MOV EDX,DWORD PTR SS:
005413D4|.E8 073AECFF CALL 00404DE0
005413D9|.8BD0 MOV EDX,EAX
005413DB|.B9 02000000 MOV ECX,2 ;这里ECX=2表示会取2位
005413E0|.8B45 F4 MOV EAX,DWORD PTR SS:
005413E3|.E8 1439ECFF CALL 00404CFC
005413E8|.8B55 9C MOV EDX,DWORD PTR SS: ;查表2得到的"QW"
005413EB|.8D45 F0 LEA EAX,DWORD PTR SS:
005413EE|.E8 B136ECFF CALL 00404AA4
005413F3|.8D45 94 LEA EAX,DWORD PTR SS:
005413F6|.50 PUSH EAX
005413F7|.8D45 90 LEA EAX,DWORD PTR SS:
005413FA|.50 PUSH EAX
005413FB|.B9 01000000 MOV ECX,1
00541400|.BA 0B000000 MOV EDX,0B ;注意参数,第11位
00541405|.8B45 FC MOV EAX,DWORD PTR SS: ;去掉其中的“-”后的机器码
00541408|.E8 EF38ECFF CALL 00404CFC
0054140D|.8B45 90 MOV EAX,DWORD PTR SS: ;第11位B
00541410|.8B55 F8 MOV EDX,DWORD PTR SS:
00541413|.E8 C839ECFF CALL 00404DE0
00541418|.8BD0 MOV EDX,EAX
0054141A|.B9 01000000 MOV ECX,1
0054141F|.8B45 F4 MOV EAX,DWORD PTR SS:
00541422|.E8 D538ECFF CALL 00404CFC
00541427|.8B55 94 MOV EDX,DWORD PTR SS: ;查表2得到的“D”
0054142A|.8D45 F0 LEA EAX,DWORD PTR SS:
0054142D|.E8 7236ECFF CALL 00404AA4
00541432|.8D45 8C LEA EAX,DWORD PTR SS:
00541435|.50 PUSH EAX
00541436|.8D45 88 LEA EAX,DWORD PTR SS:
00541439|.50 PUSH EAX
0054143A|.B9 01000000 MOV ECX,1 ;取的长度为1
0054143F|.BA 0C000000 MOV EDX,0C ;第12位
00541444|.8B45 FC MOV EAX,DWORD PTR SS:
00541447|.E8 B038ECFF CALL 00404CFC
0054144C|.8B45 88 MOV EAX,DWORD PTR SS: ;第12位的Y
0054144F|.8B55 F8 MOV EDX,DWORD PTR SS:
00541452|.E8 8939ECFF CALL 00404DE0
00541457|.8BD0 MOV EDX,EAX
00541459|.B9 01000000 MOV ECX,1
0054145E|.8B45 F4 MOV EAX,DWORD PTR SS:
00541461|.E8 9638ECFF CALL 00404CFC
00541466|.8B55 8C MOV EDX,DWORD PTR SS: ;查表2得到的“R”
00541469|.8D45 F0 LEA EAX,DWORD PTR SS:
0054146C|.E8 3336ECFF CALL 00404AA4
00541471|.8D45 84 LEA EAX,DWORD PTR SS:
00541474|.50 PUSH EAX
00541475|.8D45 80 LEA EAX,DWORD PTR SS:
00541478|.50 PUSH EAX
00541479|.B9 01000000 MOV ECX,1 ;取的长度为1
0054147E|.BA 06000000 MOV EDX,6 ;起点第6位
00541483|.8B45 FC MOV EAX,DWORD PTR SS:
00541486|.E8 7138ECFF CALL 00404CFC
0054148B|.8B45 80 MOV EAX,DWORD PTR SS:
0054148E|.8B55 F8 MOV EDX,DWORD PTR SS:
00541491|.E8 4A39ECFF CALL 00404DE0
00541496|.8BD0 MOV EDX,EAX
00541498|.B9 01000000 MOV ECX,1
0054149D|.8B45 F4 MOV EAX,DWORD PTR SS:
005414A0|.E8 5738ECFF CALL 00404CFC
005414A5|.8B55 84 MOV EDX,DWORD PTR SS: ;查表2得到的“1”
005414A8|.8D45 F0 LEA EAX,DWORD PTR SS:
005414AB|.E8 F435ECFF CALL 00404AA4
005414B0|.8D85 7CFFFFFF LEA EAX,DWORD PTR SS:
005414B6|.50 PUSH EAX
005414B7|.8D85 78FFFFFF LEA EAX,DWORD PTR SS:
005414BD|.50 PUSH EAX
005414BE|.B9 01000000 MOV ECX,1
005414C3|.BA 0D000000 MOV EDX,0D ;起点第13位
005414C8|.8B45 FC MOV EAX,DWORD PTR SS:
005414CB|.E8 2C38ECFF CALL 00404CFC
005414D0|.8B85 78FFFFFF MOV EAX,DWORD PTR SS:
005414D6|.8B55 F8 MOV EDX,DWORD PTR SS:
005414D9|.E8 0239ECFF CALL 00404DE0
005414DE|.8BD0 MOV EDX,EAX
005414E0|.B9 01000000 MOV ECX,1
005414E5|.8B45 F4 MOV EAX,DWORD PTR SS:
005414E8|.E8 0F38ECFF CALL 00404CFC
005414ED|.8B95 7CFFFFFF MOV EDX,DWORD PTR SS: ;查表2得到的“B”
005414F3|.8D45 F0 LEA EAX,DWORD PTR SS:
005414F6|.E8 A935ECFF CALL 00404AA4
005414FB|.8D85 74FFFFFF LEA EAX,DWORD PTR SS:
00541501|.50 PUSH EAX
00541502|.8D85 70FFFFFF LEA EAX,DWORD PTR SS:
00541508|.50 PUSH EAX
00541509|.B9 01000000 MOV ECX,1 ;取的长度为1
0054150E|.BA 0F000000 MOV EDX,0F ;第15
00541513|.8B45 FC MOV EAX,DWORD PTR SS:
00541516|.E8 E137ECFF CALL 00404CFC
0054151B|.8B85 70FFFFFF MOV EAX,DWORD PTR SS:
00541521|.8B55 F8 MOV EDX,DWORD PTR SS:
00541524|.E8 B738ECFF CALL 00404DE0
00541529|.8BD0 MOV EDX,EAX
0054152B|.B9 01000000 MOV ECX,1
00541530|.8B45 F4 MOV EAX,DWORD PTR SS:
00541533|.E8 C437ECFF CALL 00404CFC
00541538|.8B95 74FFFFFF MOV EDX,DWORD PTR SS: ;查表2得到的“F”
0054153E|.8D45 F0 LEA EAX,DWORD PTR SS:
00541541|.E8 5E35ECFF CALL 00404AA4
00541546|.8D85 6CFFFFFF LEA EAX,DWORD PTR SS:
0054154C|.50 PUSH EAX
0054154D|.8D85 68FFFFFF LEA EAX,DWORD PTR SS:
00541553|.50 PUSH EAX
00541554|.B9 01000000 MOV ECX,1 ;取的长度为1
00541559|.BA 0A000000 MOV EDX,0A ;起点第10位
0054155E|.8B45 FC MOV EAX,DWORD PTR SS:
00541561|.E8 9637ECFF CALL 00404CFC
00541566|.8B85 68FFFFFF MOV EAX,DWORD PTR SS:
0054156C|.8B55 F8 MOV EDX,DWORD PTR SS:
0054156F|.E8 6C38ECFF CALL 00404DE0
00541574|.8BD0 MOV EDX,EAX ;在固定字符串1中的位置值
00541576|.B9 01000000 MOV ECX,1
0054157B|.8B45 F4 MOV EAX,DWORD PTR SS:
0054157E|.E8 7937ECFF CALL 00404CFC ;该位置值在固定字符串2中对应的字符,
00541583|.8B95 6CFFFFFF MOV EDX,DWORD PTR SS: ;查表2得到的“F”
00541589|.8D45 F0 LEA EAX,DWORD PTR SS:
0054158C|.E8 1335ECFF CALL 00404AA4
00541591|.8D95 60FFFFFF LEA EDX,DWORD PTR SS:
00541597|.8B45 F0 MOV EAX,DWORD PTR SS: ;得到个字符串,(注意第一位)
0054159A|.E8 F5F0FFFF CALL 00540694
0054159F|.8B85 60FFFFFF MOV EAX,DWORD PTR SS: ;得到的字符串的MD5大写,设为S1
005415A5|.8D95 64FFFFFF LEA EDX,DWORD PTR SS: ;得到的字符串
005415AB|.E8 6479ECFF CALL 00408F14
005415B0|.8B95 64FFFFFF MOV EDX,DWORD PTR SS: ;S1
005415B6|.8D45 F0 LEA EAX,DWORD PTR SS:
005415B9|.E8 A632ECFF CALL 00404864
005415BE|.8D45 F0 LEA EAX,DWORD PTR SS:
005415C1|.50 PUSH EAX
005415C2|.B9 14000000 MOV ECX,14 ;要取的长度,14H=20
005415C7|.BA 04000000 MOV EDX,4 ;意味着从第4位起取20位
005415CC|.8B45 F0 MOV EAX,DWORD PTR SS: ;S1
005415CF|.E8 2837ECFF CALL 00404CFC
005415D4|.8BC7 MOV EAX,EDI
005415D6|.8B55 F0 MOV EDX,DWORD PTR SS: ;S1从第4位起取20位
005415D9|.E8 4232ECFF CALL 00404820
005415DE|.33C0 XOR EAX,EAX
005415E0|.5A POP EDX
005415E1|.59 POP ECX
005415E2|.59 POP ECX
005415E3|.64:8910 MOV DWORD PTR FS:,EDX
005415E6|.68 03165400 PUSH 00541603
005415EB|>8D85 60FFFFFF LEA EAX,DWORD PTR SS:
005415F1|.BA 28000000 MOV EDX,28
005415F6|.E8 F531ECFF CALL 004047F0
005415FB\.C3 RETN
005415FC .^ E9 0F2BECFF JMP 00404110
00541601 .^ EB E8 JMP SHORT 005415EB
00541603 .5F POP EDI
00541604 .5E POP ESI
00541605 .5B POP EBX
00541606 .8BE5 MOV ESP,EBP
00541608 .5D POP EBP
00541609 .C3 RETN
/////////////////////////////////////////////////////////////////////////////////////////////////////////
算法总结:
1.机器码中的数字直接累加,其和除以24H,以余数查表,得到一位字符;
2.机器码按以下顺序运算:
取机器码的顺序为:3 1 8 2 14 4 516791112 6 131510
(取2位)(取2位) (取2位)
依次取机器码的字符查表1,得到位置值,按其位置值查表2,得到字符,直至机器码取完,得到字符串;
3.第一步得到的字符与第2步得到的字符串相连,取MD5值(大写),设为S1;
4.取S1的4-23位即为注册码。
--------------------------------------------------------------------------------------------
附 表1:1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
表2:T9OP1QWVUZCD37FGHLAIJM0K4Y5EN6B82XRS
---------------------------------------------------------------------------------------------
以本机为例
0.机器码为:YQ74-555G-6EBY-UQEB
1.机器码中的数字作为数值累加,即7+4+5+5+5+6=32,即16进制的20
20H / 24H(=36) ,余数为20H,在表1中查得为字符“V”
取机器码第3位,为“7”,查它在表1中的位置,得到位置值7,再在表2中查位置为7的字符,得到“W”,
以此类推,但注意第2、第14、第11位时,在表2中查得字符要取2位。得到字符串"WRH5E5EP1D1QWDR1BFF"
2.将“V”与 "WRH5E5EP1D1QWDR1BFF"相连,得到"VWRH5E5EP1D1QWDR1BFF",
然后取MD5(大写),得到:"FF02CE5F1C559DF46972066C8BA8EA66"
3.取"FF02CE5F1C559DF46972066C8BA8EA66"的第4到23位为止即“2CE5F1C559DF46972066”为注册码。
注册信息保存在:
HKEY_LOCAL_MACHINE\SOFTWARE\*******Soft
"key"="2CE5F1C559DF46972066"
删除变为未注册版!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
论坛的排版真头疼,呵呵/:001 哈哈,学习学习 这么详细的分析真的很少见了 顶一个 回复 4# loway
嗯,G兄一直独领风骚/:012 分析得不错,期待有新的破解作品出来。 好东东.. /:013学习谢谢分享 怎么可以成为G兄呢?我看应该是LHY兄,直接称Y兄比较好!
页:
[1]