TA的每日心情 | 开心 2015-8-23 23:49 |
---|
签到天数: 27 天 [LV.4]偶尔看看III
|
本帖最后由 GGLHY 于 2012-3-16 12:52 编辑
****精灵V3.2版的注册算法分析实录 by GGLHY
因工作需要接触到这个软件,顺便看了下它的注册算法流程,相对来说还是比较简单的!
好,咱直奔主题,软件注册后有重启验证,直接来到:
004135DE |. E8 461B0000 CALL SuperPro.00415129 ; 重启验证CALL,F7进去哦!
- 004135E3 |. 85C0 TEST EAX,EAX ; EAX的值很关键!!!
- 004135E5 |. 74 0F JE SHORT SuperPro.004135F6 ; 跳就是未注册版本
- 004135E7 |. C705 9CE74600>MOV DWORD PTR DS:[46E79C],0 ; 全局变量
- 004135F1 |. E9 26030000 JMP SuperPro.0041391C
- 004135F6 |> 8B8D 64FBFFFF MOV ECX,DWORD PTR SS:[EBP-49C]
复制代码 004135DE | CALL SuperPro.00415129 ; 重启验证CALL,F7进去哦!- 00415129 /$ 55 PUSH EBP
- 0041512A |. 8BEC MOV EBP,ESP
- 0041512C |. 83EC 28 SUB ESP,28
- 0041512F |. 894D D8 MOV DWORD PTR SS:[EBP-28],ECX
- 00415132 |. C745 EC 00000>MOV DWORD PTR SS:[EBP-14],0 ; 注意这里,局部变量赋值为0!
- (省略部分代码)
- 0041517F |. 68 B0EA4600 PUSH SuperPro.0046EAB0 ; |RegSerial 读取注册表中保存的注册码
- 00415184 |. 8B4D E8 MOV ECX,DWORD PTR SS:[EBP-18] ; |
- 00415187 |. 51 PUSH ECX ; |hKey
- 00415188 |. FF15 10E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegQueryVa>; \RegQueryValueExA
- 0041518E |. 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
- 00415191 |. 837D E0 00 CMP DWORD PTR SS:[EBP-20],0
- 00415195 |. 74 07 JE SHORT SuperPro.0041519E ; 若注册码为空则局部变量还为0
- 00415197 |. 33C0 XOR EAX,EAX
- 00415199 |. E9 8D000000 JMP SuperPro.0041522B ; 为零则跳过注册码验证环节!
- 0041519E |> C745 E4 00000>MOV DWORD PTR SS:[EBP-1C],0
- 004151A5 |. EB 09 JMP SHORT SuperPro.004151B0
- 004151A7 |> 8B55 E4 /MOV EDX,DWORD PTR SS:[EBP-1C]
- 004151AA |. 83C2 01 |ADD EDX,1
- 004151AD |. 8955 E4 |MOV DWORD PTR SS:[EBP-1C],EDX
- 004151B0 |> 837D E4 14 CMP DWORD PTR SS:[EBP-1C],14 ; 保存的假码长度与14H比较!
- 004151B4 |. 7D 17 |JGE SHORT SuperPro.004151CD
- 004151B6 |. 8B45 D8 |MOV EAX,DWORD PTR SS:[EBP-28]
- 004151B9 |. 0345 E4 |ADD EAX,DWORD PTR SS:[EBP-1C]
- 004151BC |. 8B4D E4 |MOV ECX,DWORD PTR SS:[EBP-1C]
- 004151BF |. 8A90 C4000000 |MOV DL,BYTE PTR DS:[EAX+C4] ; 依次取保存的假码每一位ASC
- 004151C5 |. 8891 10334700 |MOV BYTE PTR DS:[ECX+473310],DL
- 004151CB |.^ EB DA \JMP SHORT SuperPro.004151A7
- 004151CD |> C605 24334700>MOV BYTE PTR DS:[473324],0 ;
- 004151D4 |. 68 10334700 PUSH SuperPro.00473310 ; /读取保存的注册码
- 004151D9 |. 8B4D D8 MOV ECX,DWORD PTR SS:[EBP-28] ; |
复制代码 004151DC |. E8 0F140000 CALL SuperPro.004165F0 ; \算法核心!接着F7
- 004151E1 |. 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
- 004151E4 |. C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0 ; 这里,还有个局部变量置0
- 004151EB |. 837D EC 00 CMP DWORD PTR SS:[EBP-14],0
- 004151EF |. 74 07 JE SHORT SuperPro.004151F8
- 004151F1 |. C745 FC 01000>MOV DWORD PTR SS:[EBP-4],1 ; 注意看这里,赋值为1
- 004151F8 |> 6A 04 PUSH 4 ; /BufSize = 4
- 004151FA |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] ; |
- 004151FD |. 50 PUSH EAX ; |Buffer
- 004151FE |. 6A 04 PUSH 4 ; |ValueType = REG_DWORD
- 00415200 |. 6A 00 PUSH 0 ; |Reserved = 0
- 00415202 |. 68 BCEA4600 PUSH SuperPro.0046EABC ; |syswell
- 00415207 |. 8B4D E8 MOV ECX,DWORD PTR SS:[EBP-18] ; |
- 0041520A |. 51 PUSH ECX ; |hKey
- 0041520B |. FF15 14E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegSetValu>; \RegSetValueExA
- 00415211 |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
- 00415214 |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0
- 00415218 |. 74 04 JE SHORT SuperPro.0041521E
- 0041521A |. 33C0 XOR EAX,EAX
- 0041521C |. EB 0D JMP SHORT SuperPro.0041522B
- 0041521E |> 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18]
- 00415221 |. 52 PUSH EDX ; /hKey
- 00415222 |. FF15 00E04500 CALL DWORD PTR DS:[<&ADVAPI32.RegCloseKe>; \RegCloseKey
- 00415228 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ; 这里局部变量很关键,赋值给EAX。可以放C-4了!哈哈
- 0041522B |> 8BE5 MOV ESP,EBP
- 0041522D |. 5D POP EBP
- 0041522E \. C3 RETN
复制代码 004151DC | CALL SuperPro.004165F0 ; \算法核心!接着F7- 004165F0 /$ 55 PUSH EBP
- 004165F1 |. 8BEC MOV EBP,ESP
- 004165F3 |. 6A FF PUSH -1
- 004165F5 |. 68 3CAC4500 PUSH SuperPro.0045AC3C ; SE 处理程序安装
- 004165FA |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
- 00416600 |. 50 PUSH EAX
- 00416601 |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
- 00416608 |. 81EC 8C000000 SUB ESP,8C
- 0041660E |. 898D 68FFFFFF MOV DWORD PTR SS:[EBP-98],ECX
- 00416614 |. C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1
- 0041661B |. C785 78FFFFFF>MOV DWORD PTR SS:[EBP-88],0
- 00416625 |. EB 0F JMP SHORT SuperPro.00416636
- 00416627 |> 8B85 78FFFFFF /MOV EAX,DWORD PTR SS:[EBP-88]
- 0041662D |. 83C0 01 |ADD EAX,1
- 00416630 |. 8985 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EAX
- 00416636 |> B9 40314700 MOV ECX,SuperPro.00473140 ; 机器码
- 0041663B |. E8 50B6FEFF |CALL SuperPro.00401C90
- 00416640 |. 3985 78FFFFFF |CMP DWORD PTR SS:[EBP-88],EAX
- 00416646 |. 7D 1D |JGE SHORT SuperPro.00416665 ; 机器码是否取完
- 00416648 |. 8B8D 78FFFFFF |MOV ECX,DWORD PTR SS:[EBP-88]
- 0041664E |. 51 |PUSH ECX ; /Arg1
- 0041664F |. B9 40314700 |MOV ECX,SuperPro.00473140 ; |
- 00416654 |. E8 5733FFFF |CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 00416659 |. 8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88] ; 机器码
- 0041665F |. 884415 D8 |MOV BYTE PTR SS:[EBP+EDX-28],AL ; 依次取机器码每一位ASC
- 00416663 |.^ EB C2 \JMP SHORT SuperPro.00416627
- 00416665 |> EB 0F JMP SHORT SuperPro.00416676
- 00416667 |> 8B85 78FFFFFF /MOV EAX,DWORD PTR SS:[EBP-88]
- 0041666D |. 83C0 01 |ADD EAX,1
- 00416670 |. 8985 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EAX
- 00416676 |> 83BD 78FFFFFF> CMP DWORD PTR SS:[EBP-88],14 ; 机器码长度不小于20位吗?
- 0041667D |. 7D 15 |JGE SHORT SuperPro.00416694
- 0041667F |. 8B8D 78FFFFFF |MOV ECX,DWORD PTR SS:[EBP-88]
- 00416685 |. 83C1 41 |ADD ECX,41
- 00416688 |. 8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88]
- 0041668E |. 884C15 D8 |MOV BYTE PTR SS:[EBP+EDX-28],CL
- 00416692 |.^ EB D3 \JMP SHORT SuperPro.00416667
- 00416694 |> 8D45 80 LEA EAX,DWORD PTR SS:[EBP-80]
- 00416697 |. 50 PUSH EAX ; /Arg1
- 00416698 |. E8 3085FFFF CALL SuperPro.0040EBCD ; \机器码MD5运算,结果设为S1
- 0041669D |. 83C4 04 ADD ESP,4
- 004166A0 |. 6A 14 PUSH 14 ; /Arg3 = 00000014
- 004166A2 |. 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28] ; 机器码
- 004166A5 |. 51 PUSH ECX ; |Arg2
- 004166A6 |. 8D55 80 LEA EDX,DWORD PTR SS:[EBP-80] ; |
- 004166A9 |. 52 PUSH EDX ; |Arg1
- 004166AA |. E8 5E85FFFF CALL SuperPro.0040EC0D ; \SuperPro.0040EC0D
- 004166AF |. 83C4 0C ADD ESP,0C
- 004166B2 |. 8D45 80 LEA EAX,DWORD PTR SS:[EBP-80]
- 004166B5 |. 50 PUSH EAX ; /Arg2
- 004166B6 |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 004166BC |. 51 PUSH ECX ; |Arg1
- 004166BD |. E8 1F8DFFFF CALL SuperPro.0040F3E1 ; \SuperPro.0040F3E1
- 004166C2 |. 83C4 08 ADD ESP,8
- 004166C5 |. C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
- 004166CC |. 6A 00 PUSH 0 ; /第一位
- 004166CE |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 004166D4 |. E8 D732FFFF CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 004166D9 |. 8845 D8 MOV BYTE PTR SS:[EBP-28],AL ; S1第一位取代机器码第一位
- 004166DC |. 6A 04 PUSH 4 ; /第5位
- 004166DE |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 004166E4 |. E8 C732FFFF CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 004166E9 |. 8845 DC MOV BYTE PTR SS:[EBP-24],AL ; S1第5位取代机器码第5位
- 004166EC |. 6A 06 PUSH 6 ; /第7位
- 004166EE |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 004166F4 |. E8 B732FFFF CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 004166F9 |. 8845 DE MOV BYTE PTR SS:[EBP-22],AL ; S1第7位取代机器码第7位
- 004166FC |. 6A 0C PUSH 0C ; /第13位
- 004166FE |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 00416704 |. E8 A732FFFF CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 00416709 |. 8845 E4 MOV BYTE PTR SS:[EBP-1C],AL ; S1第13位取代机器码第13位
- 0041670C |. C785 7CFFFFFF>MOV DWORD PTR SS:[EBP-84],0 ; 机器码变形完毕,设为Q
- 00416716 |. EB 0F JMP SHORT SuperPro.00416727
- [hide]00416718 |> 8B95 7CFFFFFF /MOV EDX,DWORD PTR SS:[EBP-84]
- 0041671E |. 83C2 01 |ADD EDX,1
- 00416721 |. 8995 7CFFFFFF |MOV DWORD PTR SS:[EBP-84],EDX
- 00416727 |> 83BD 7CFFFFFF> CMP DWORD PTR SS:[EBP-84],14 ; 计数器:20
- 0041672E |. 0F8D 87000000 |JGE SuperPro.004167BB
- 00416734 |. 8B85 7CFFFFFF |MOV EAX,DWORD PTR SS:[EBP-84]
- 0041673A |. 8A4C05 D8 |MOV CL,BYTE PTR SS:[EBP+EAX-28] ; 变形机器码Q每一位ASC
- 0041673E |. 884D EC |MOV BYTE PTR SS:[EBP-14],CL
- 00416741 |. 0FBE55 EC |MOVSX EDX,BYTE PTR SS:[EBP-14]
- 00416745 |. 83FA 30 |CMP EDX,30 ; 变形机器码Q每一位ASC:30
- 00416748 |. 7C 1E |JL SHORT SuperPro.00416768
- 0041674A |. 0FBE45 EC |MOVSX EAX,BYTE PTR SS:[EBP-14]
- 0041674E |. 83F8 39 |CMP EAX,39
- 00416751 |. 7F 15 |JG SHORT SuperPro.00416768 ; 30-39,检测是否为数字
- 00416753 |. 0FBE4D EC |MOVSX ECX,BYTE PTR SS:[EBP-14] ; 每一位ASC
- 00416757 |. BA 69000000 |MOV EDX,69 ; i
- 0041675C |. 2BD1 |SUB EDX,ECX ; 69 - 当前所取的ASC
- 0041675E |. 8B85 7CFFFFFF |MOV EAX,DWORD PTR SS:[EBP-84]
- 00416764 |. 885405 D8 |MOV BYTE PTR SS:[EBP+EAX-28],DL ; 差值保存起来
- 00416768 |> 0FBE4D EC |MOVSX ECX,BYTE PTR SS:[EBP-14] ; 所取的Q的字符为字母则直接来到这里
- 0041676C |. 83F9 41 |CMP ECX,41 ; 差与41(A)比较
- 0041676F |. 7C 1E |JL SHORT SuperPro.0041678F ; 小于则跳,跳则保存当前所取变形机器码Q的ASC
- 00416771 |. 0FBE55 EC |MOVSX EDX,BYTE PTR SS:[EBP-14]
- 00416775 |. 83FA 5A |CMP EDX,5A ; 与Z比较
- 00416778 |. 7F 15 |JG SHORT SuperPro.0041678F ; 41~5A,检测是否为大写字母
- 0041677A |. 0FBE45 EC |MOVSX EAX,BYTE PTR SS:[EBP-14] ; 当前所取的ASC
- 0041677E |. B9 9B000000 |MOV ECX,9B ; =9B
- 00416783 |. 2BC8 |SUB ECX,EAX ; 9B - 所取得ASC
- 00416785 |. 8B95 7CFFFFFF |MOV EDX,DWORD PTR SS:[EBP-84]
- 0041678B |. 884C15 D8 |MOV BYTE PTR SS:[EBP+EDX-28],CL ; 差值保存起来
- 0041678F |> 0FBE45 EC |MOVSX EAX,BYTE PTR SS:[EBP-14] ; 当前所取的ASC
- 00416793 |. 83F8 61 |CMP EAX,61 ; 当前所取的ASC与61比较
- 00416796 |. 7C 1E |JL SHORT SuperPro.004167B6 ; 小于则跳,跳则进行下一位
- 00416798 |. 0FBE4D EC |MOVSX ECX,BYTE PTR SS:[EBP-14] ; 当前所取的ASC与7A比较
- 0041679C |. 83F9 7A |CMP ECX,7A
- 0041679F |. 7F 15 |JG SHORT SuperPro.004167B6 ; 大于则进行下一位
- 004167A1 |. 0FBE55 EC |MOVSX EDX,BYTE PTR SS:[EBP-14] ; 61~7A,检测是否为小写字母。
- 004167A5 |. B8 DB000000 |MOV EAX,0DB
- 004167AA |. 2BC2 |SUB EAX,EDX
- 004167AC |. 8B8D 7CFFFFFF |MOV ECX,DWORD PTR SS:[EBP-84]
- 004167B2 |. 88440D D8 |MOV BYTE PTR SS:[EBP+ECX-28],AL [/hide]
- 004167B6 |>^ E9 5DFFFFFF \JMP SuperPro.00416718 ; 循环结束,得到再次变形后的机器码,设为P
- 004167BB |> 8A55 D9 MOV DL,BYTE PTR SS:[EBP-27] ; P的第2位
- 004167BE |. 8855 EC MOV BYTE PTR SS:[EBP-14],DL
- 004167C1 |. 8A45 DE MOV AL,BYTE PTR SS:[EBP-22] ; P的第7位
- 004167C4 |. 8845 D9 MOV BYTE PTR SS:[EBP-27],AL ; P的第7位替换P的第2位
- 004167C7 |. 8A4D EC MOV CL,BYTE PTR SS:[EBP-14] ; P的第2位
- 004167CA |. 884D DE MOV BYTE PTR SS:[EBP-22],CL ; P的第2位替换P的第7位
- 004167CD |. 8A55 DB MOV DL,BYTE PTR SS:[EBP-25] ; P的第4位(X)
- 004167D0 |. 8855 EC MOV BYTE PTR SS:[EBP-14],DL ; P的第4位
- 004167D3 |. 8A45 E2 MOV AL,BYTE PTR SS:[EBP-1E] ; P的第11位
- 004167D6 |. 8845 DB MOV BYTE PTR SS:[EBP-25],AL ; P的第11位替换P的第4位
- 004167D9 |. 8A4D EC MOV CL,BYTE PTR SS:[EBP-14] ; P的第4位
- 004167DC |. 884D E2 MOV BYTE PTR SS:[EBP-1E],CL ; P的第4位替换P的第11位
- 004167DF |. 8A55 DD MOV DL,BYTE PTR SS:[EBP-23] ; P的第6位
- 004167E2 |. 8855 EC MOV BYTE PTR SS:[EBP-14],DL ; P的第6位
- 004167E5 |. 8A45 E4 MOV AL,BYTE PTR SS:[EBP-1C] ; P的第13位
- 004167E8 |. 8845 DD MOV BYTE PTR SS:[EBP-23],AL ; P的第13位替换P的第6位
- 004167EB |. 8A4D EC MOV CL,BYTE PTR SS:[EBP-14] ; P的第6位
- 004167EE |. 884D E4 MOV BYTE PTR SS:[EBP-1C],CL ; P的第6位替换P的第13位
- 004167F1 |. 8A55 DF MOV DL,BYTE PTR SS:[EBP-21] ; P的第8位
- 004167F4 |. 8855 EC MOV BYTE PTR SS:[EBP-14],DL
- 004167F7 |. 8A45 E6 MOV AL,BYTE PTR SS:[EBP-1A] ; P的第15位
- 004167FA |. 8845 DF MOV BYTE PTR SS:[EBP-21],AL ; P的第15位替换P的第8位
- 004167FD |. 8A4D EC MOV CL,BYTE PTR SS:[EBP-14] ; P的第8位
- 00416800 |. 884D E6 MOV BYTE PTR SS:[EBP-1A],CL ; P的第8位替换P的第15位
- 00416803 |. 8A55 E1 MOV DL,BYTE PTR SS:[EBP-1F] ; P的第10位
- 00416806 |. 8855 EC MOV BYTE PTR SS:[EBP-14],DL
- 00416809 |. 8A45 E5 MOV AL,BYTE PTR SS:[EBP-1B] ; P的第14位
- 0041680C |. 8845 E1 MOV BYTE PTR SS:[EBP-1F],AL ; P的第14位替换第10位
- 0041680F |. 8A4D EC MOV CL,BYTE PTR SS:[EBP-14] ; P的第10位
- 00416812 |. 884D E5 MOV BYTE PTR SS:[EBP-1B],CL ; P的第10位替换第14位
- 00416815 |. C785 78FFFFFF>MOV DWORD PTR SS:[EBP-88],0 ; P再次变形,设为M
- 0041681F |. EB 0F JMP SHORT SuperPro.00416830
- 00416821 |> 8B95 78FFFFFF /MOV EDX,DWORD PTR SS:[EBP-88]
- 00416827 |. 83C2 01 |ADD EDX,1
- 0041682A |. 8995 78FFFFFF |MOV DWORD PTR SS:[EBP-88],EDX
- 00416830 |> 83BD 78FFFFFF> CMP DWORD PTR SS:[EBP-88],10 ; 暂时只比较M前16位
- 00416837 |. 7D 45 |JGE SHORT SuperPro.0041687E
- 00416839 |. 8B45 08 |MOV EAX,DWORD PTR SS:[EBP+8] ; 假码
- 0041683C |. 0385 78FFFFFF |ADD EAX,DWORD PTR SS:[EBP-88]
- 00416842 |. 0FBE08 |MOVSX ECX,BYTE PTR DS:[EAX] ; 依次取假码每一位ASC
- 00416845 |. 8B95 78FFFFFF |MOV EDX,DWORD PTR SS:[EBP-88]
- 0041684B |. 33C0 |XOR EAX,EAX
- 0041684D |. 8A4415 D8 |MOV AL,BYTE PTR SS:[EBP+EDX-28] ; 依次取M的每一位
- 00416851 |. 3BC8 |CMP ECX,EAX ; 比较!
- 00416853 |. 74 27 |JE SHORT SuperPro.0041687C ; 必须跳,否则挂了!
- 00416855 |. C785 70FFFFFF>|MOV DWORD PTR SS:[EBP-90],0
- 0041685F |. C745 FC FFFFF>|MOV DWORD PTR SS:[EBP-4],-1
- 00416866 |. 8D8D 74FFFFFF |LEA ECX,DWORD PTR SS:[EBP-8C]
- 0041686C |. E8 AB200400 |CALL <JMP.&MFC42.#800>
- 00416871 |. 8B85 70FFFFFF |MOV EAX,DWORD PTR SS:[EBP-90]
- 00416877 |. E9 5F010000 |JMP SuperPro.004169DB
- 0041687C |>^ EB A3 \JMP SHORT SuperPro.00416821
- 0041687E |> 6A 1E PUSH 1E ; /S1的第31位ASC
- 00416880 |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 00416886 |. E8 2531FFFF CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 0041688B |. A2 A0E74600 MOV BYTE PTR DS:[46E7A0],AL ; 第31位的asc到[46E7A0]
- 00416890 |. 6A 0A PUSH 0A ; /S1的asc第11位
- 00416892 |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 00416898 |. E8 1331FFFF CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 0041689D |. A2 A1E74600 MOV BYTE PTR DS:[46E7A1],AL ; S1的第11位asc到:[46E7A1]
- 004168A2 |. 6A 06 PUSH 6 ; /S1的第7位
- 004168A4 |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 004168AA |. E8 0131FFFF CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 004168AF |. A2 09334700 MOV BYTE PTR DS:[473309],AL ; S1的第7位asc到[473309]
- 004168B4 |. 6A 04 PUSH 4 ; /S1的第5位
- 004168B6 |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C] ; |
- 004168BC |. E8 EF30FFFF CALL SuperPro.004099B0 ; \SuperPro.004099B0
- 004168C1 |. A2 08334700 MOV BYTE PTR DS:[473308],AL ; S1的第5位ASC到[473308]
- 004168C6 |. 33C9 XOR ECX,ECX
- 004168C8 |. 8A0D A0E74600 MOV CL,BYTE PTR DS:[46E7A0] ; S1的第31位
- 004168CE |. 83F9 61 CMP ECX,61 ; S1的第31位asc与61比较
- 004168D1 |. 7C 19 JL SHORT SuperPro.004168EC ; 小则跳
- 004168D3 |. 33D2 XOR EDX,EDX
- 004168D5 |. 8A15 A0E74600 MOV DL,BYTE PTR DS:[46E7A0] ; 第31位ASC
- 004168DB |. 83FA 7A CMP EDX,7A ; :7A(z)
- 004168DE |. 7F 0C JG SHORT SuperPro.004168EC ; 大则跳(判断是否小写字母)
- 004168E0 |. A0 A0E74600 MOV AL,BYTE PTR DS:[46E7A0] ; 第31位ASC
- 004168E5 |. 2C 20 SUB AL,20 ; 转大写字母
- 004168E7 |. A2 A0E74600 MOV BYTE PTR DS:[46E7A0],AL ; 第31位转成大写
- 004168EC |> 33C9 XOR ECX,ECX
- 004168EE |. 8A0D A1E74600 MOV CL,BYTE PTR DS:[46E7A1] ; S1的第11位asc
- 004168F4 |. 83F9 61 CMP ECX,61 ; 流程同上
- 004168F7 |. 7C 19 JL SHORT SuperPro.00416912
- 004168F9 |. 33D2 XOR EDX,EDX
- 004168FB |. 8A15 A1E74600 MOV DL,BYTE PTR DS:[46E7A1]
- 00416901 |. 83FA 7A CMP EDX,7A
- 00416904 |. 7F 0C JG SHORT SuperPro.00416912
- 00416906 |. A0 A1E74600 MOV AL,BYTE PTR DS:[46E7A1]
- 0041690B |. 2C 20 SUB AL,20
- 0041690D |. A2 A1E74600 MOV BYTE PTR DS:[46E7A1],AL ; S1的第11位转为大写
- 00416912 |> 33C9 XOR ECX,ECX
- 00416914 |. 8A0D 09334700 MOV CL,BYTE PTR DS:[473309] ; S1的第7位asc
- 0041691A |. 83F9 61 CMP ECX,61 ; 流程同上
- 0041691D |. 7C 19 JL SHORT SuperPro.00416938
- 0041691F |. 33D2 XOR EDX,EDX
- 00416921 |. 8A15 09334700 MOV DL,BYTE PTR DS:[473309]
- 00416927 |. 83FA 7A CMP EDX,7A
- 0041692A |. 7F 0C JG SHORT SuperPro.00416938
- 0041692C |. A0 09334700 MOV AL,BYTE PTR DS:[473309]
- 00416931 |. 2C 20 SUB AL,20
- 00416933 |. A2 09334700 MOV BYTE PTR DS:[473309],AL ; S1的第7位转为大写
- 00416938 |> 33C9 XOR ECX,ECX
- 0041693A |. 8A0D 08334700 MOV CL,BYTE PTR DS:[473308] ; S1的第5位ASC
- 00416940 |. 83F9 61 CMP ECX,61 ; 流程同上
- 00416943 |. 7C 19 JL SHORT SuperPro.0041695E ; 本例为35,跳了
- 00416945 |. 33D2 XOR EDX,EDX
- 00416947 |. 8A15 08334700 MOV DL,BYTE PTR DS:[473308]
- 0041694D |. 83FA 7A CMP EDX,7A
- 00416950 |. 7F 0C JG SHORT SuperPro.0041695E
- 00416952 |. A0 08334700 MOV AL,BYTE PTR DS:[473308]
- 00416957 |. 2C 20 SUB AL,20
- 00416959 |. A2 08334700 MOV BYTE PTR DS:[473308],AL
- 0041695E |> 33C9 XOR ECX,ECX
- 00416960 |. 8A0D A0E74600 MOV CL,BYTE PTR DS:[46E7A0] ; 第31位大写
- 00416966 |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8] ; 假码
- 00416969 |. 0FBE42 10 MOVSX EAX,BYTE PTR DS:[EDX+10] ; 假码第17位
- 0041696D |. 3BC8 CMP ECX,EAX ; 第31位大写:假码第17位
- 0041696F |. 75 42 JNZ SHORT SuperPro.004169B3 ; 不等就挂了!
- 00416971 |. 33C9 XOR ECX,ECX
- 00416973 |. 8A0D A1E74600 MOV CL,BYTE PTR DS:[46E7A1] ; S1的第11位大写
- 00416979 |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
- 0041697C |. 0FBE42 11 MOVSX EAX,BYTE PTR DS:[EDX+11] ; 假码第18位
- 00416980 |. 3BC8 CMP ECX,EAX ; S1的第11位大写:假码第18位
- 00416982 |. 75 2F JNZ SHORT SuperPro.004169B3 ; 不等就挂了!
- 00416984 |. 33C9 XOR ECX,ECX
- 00416986 |. 8A0D 09334700 MOV CL,BYTE PTR DS:[473309] ; S1的第7位大写
- 0041698C |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
- 0041698F |. 0FBE42 12 MOVSX EAX,BYTE PTR DS:[EDX+12] ; 假码第19位
- 00416993 |. 3BC8 CMP ECX,EAX ; S1的第7位大写:假码第19位
- 00416995 |. 75 1C JNZ SHORT SuperPro.004169B3 ; 不等就挂了!
- 00416997 |. 33C9 XOR ECX,ECX
- 00416999 |. 8A0D 08334700 MOV CL,BYTE PTR DS:[473308] ; S1的第5位
- 0041699F |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
- 004169A2 |. 0FBE42 13 MOVSX EAX,BYTE PTR DS:[EDX+13] ; 假码第20位
- 004169A6 |. 3BC8 CMP ECX,EAX ; S1的第5位:假码第20位
- 004169A8 |. 75 09 JNZ SHORT SuperPro.004169B3 ; 不等就挂了!
- [color=Red]004169AA |. C745 F0 01000>MOV DWORD PTR SS:[EBP-10],1 ; 注意这个局部变量赋值为1[/color]
- 004169B1 |. EB 07 JMP SHORT SuperPro.004169BA
- [color=Red]004169B3 |> C745 F0 00000>MOV DWORD PTR SS:[EBP-10],0 ; 跳到这里则置0,放炸药![/color]
- 004169BA |> 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10] ; 这里接着改成004169b1处的命令
- 004169BD |. 898D 6CFFFFFF MOV DWORD PTR SS:[EBP-94],ECX
- 004169C3 |. C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
- 004169CA |. 8D8D 74FFFFFF LEA ECX,DWORD PTR SS:[EBP-8C]
- 004169D0 |. E8 471F0400 CALL <JMP.&MFC42.#800>
- 004169D5 |. 8B85 6CFFFFFF MOV EAX,DWORD PTR SS:[EBP-94]
- 004169DB |> 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
- 004169DE |. 64:890D 00000>MOV DWORD PTR FS:[0],ECX
- 004169E5 |. 8BE5 MOV ESP,EBP
- 004169E7 |. 5D POP EBP
- 004169E8 \. C2 0400 RETN 4
复制代码 ============================================================================================================
ok,咱总结下这软件的算法:
1.取机器码的MD5(小写),结果设为S1。
本例为41c85dfd56b43e75774a2a5cc65b2bc8
2.取S1的第1、5、7、13位取代机器码相应位置上的字符。得到变形机器码,设为Q;
3.
4.P按照下列方式再次转换:
P的第2和第7位互换;
P的第4和第11位互换;
P的第6和第13位互换;
P的第8和第15位互换;
P的第10和第14位互换;
P再次变形,设为M
5.取S1的第31、11、7、5位(如果是小写字母则转大写)分别取代:
M的第17、18、19、20位。
(还记得先前暂时只比较了16位吗?现在齐活了!)
注册信息保存在:
删除变回未注册版!
=================================================================================================
另(一):
-----------------------------------------------------------------------------------------------
S1的来历:
00416698 |. E8 3085FFFF CALL SuperPro.0040EBCD ; \机器码MD5运算,咱进来看看就清楚了!
0040EBCD /$ 55 PUSH EBP
0040EBCE |. 8BEC MOV EBP,ESP
0040EBD0 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0040EBD3 |. C740 14 00000>MOV DWORD PTR DS:[EAX+14],0
0040EBDA |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0040EBDD |. C741 10 00000>MOV DWORD PTR DS:[ECX+10],0
0040EBE4 |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0040EBE7 |. C702 01234567 MOV DWORD PTR DS:[EDX],67452301 标准的MD5!
0040EBED |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0040EBF0 |. C740 04 89ABC>MOV DWORD PTR DS:[EAX+4],EFCDAB89
0040EBF7 |. 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0040EBFA |. C741 08 FEDCB>MOV DWORD PTR DS:[ECX+8],98BADCFE
0040EC01 |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0040EC04 |. C742 0C 76543>MOV DWORD PTR DS:[EDX+C],10325476
0040EC0B |. 5D POP EBP
0040EC0C \. C3 RETN
---------------------------------------------------------------------------------------------------
另(二):
--------------------------------------------------------------------------------------------------
关于全局变量,再看看这里:
004135E7 |. C705 9CE74600>MOV DWORD PTR DS:[46E79C],0 ; 全局变量!
参考位于 SuperPro:.text 到 0046E79C
地址 反汇编 注释
0040150D CMP DWORD PTR DS:[46E79C],0 DS:[0046E79C]=00000001
0040C0A5 CMP DWORD PTR DS:[46E79C],0 DS:[0046E79C]=00000001
004122F4 CMP DWORD PTR DS:[46E79C],0 DS:[0046E79C]=00000001
004135E7 MOV DWORD PTR DS:[46E79C],0 (初始 CPU 选择)
00413CAC CMP DWORD PTR DS:[46E79C],0 DS:[0046E79C]=00000001
00416B79 CMP DWORD PTR DS:[46E79C],0 DS:[0046E79C]=00000001
看来是的哈。好几处呢!比如:
00416B79 |. 833D 9CE74600>CMP DWORD PTR DS:[46E79C],0
00416B80 |. 74 1F JE SHORT SuperPro.00416BA1
00416B82 |. D905 74EC4600 FLD DWORD PTR DS:[46EC74]
00416B88 |. 83EC 08 SUB ESP,8
00416B8B |. DD1C24 FSTP QWORD PTR SS:[ESP]
00416B8E |. 68 94EC4600 PUSH SuperPro.0046EC94 ; ****精灵 V%.1f(未注册)
00416B93 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
00416B96 |. 50 PUSH EAX
00416B97 |. E8 B8210400 CALL <JMP.&MFC42.#2818>
00416B9C |. 83C4 10 ADD ESP,10
00416B9F |. EB 1D JMP SHORT SuperPro.00416BBE
00416BA1 |> D905 74EC4600 FLD DWORD PTR DS:[46EC74]
00416BA7 |. 83EC 08 SUB ESP,8
00416BAA |. DD1C24 FSTP QWORD PTR SS:[ESP]
00416BAD |. 68 B0EC4600 PUSH SuperPro.0046ECB0 ; ****精灵 V%.1f
又比如:
00413CA5 /. 55 PUSH EBP
00413CA6 |. 8BEC MOV EBP,ESP
00413CA8 |. 51 PUSH ECX
00413CA9 |. 894D FC MOV DWORD PTR SS:[EBP-4],ECX
00413CAC |. 833D 9CE74600>CMP DWORD PTR DS:[46E79C],0
00413CB3 |. 75 19 JNZ SHORT SuperPro.00413CCE
00413CB5 |. 68 FCE84600 PUSH SuperPro.0046E8FC ; 您已经获得了注册版,已没有任何使用限制!\n感谢您的支持和购买!
00413CBA |. 68 0E040000 PUSH 40E
---------------------------------------------------------------------------------------------------------
如果兄弟(姐妹)知道这个软件的名称,还请“沉默是金”!
毕竟我们要体谅下软件作者挑灯夜战,劳心费力的劳动,尊重他的劳动成果,尊重作者的版权!
谢谢! |
评分
-
查看全部评分
|