GGLHY 发表于 2011-2-7 02:18:55

某保护专家注册算法分析

本帖最后由 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"
删除变为未注册版!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////




GGLHY 发表于 2011-2-7 02:20:05

论坛的排版真头疼,呵呵/:001

月之精灵 发表于 2011-2-9 21:10:31

哈哈,学习学习

loway 发表于 2011-2-9 23:25:31

这么详细的分析真的很少见了 顶一个

echo 发表于 2011-2-13 12:58:42

回复 4# loway


    嗯,G兄一直独领风骚/:012

yunfeng 发表于 2011-2-13 19:40:09

分析得不错,期待有新的破解作品出来。

A.K.I 发表于 2011-3-14 14:44:39

好东东..

123gh 发表于 2011-3-15 16:54:07

/:013学习谢谢分享

jmpreg 发表于 2011-4-13 06:55:50

怎么可以成为G兄呢?我看应该是LHY兄,直接称Y兄比较好!
页: [1]
查看完整版本: 某保护专家注册算法分析