hbqjxhw 发表于 2006-3-25 23:11:13

一个可以给EXE文件加密码的工具

【破解作者】 HBQJXHW
【使用工具】 OD、PEID
【破解平台】 WIN2000-SP4
【软件名称】 Exe Password
【下载地址】 http://www.salfeld.com/prg/exepw04.exe
【软件简介】 一个可以给EXE文件加密码的工具
【软件大小】 1.59M
【加壳方式】 无壳
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
1、首先用PEID检查,无壳(Borland Delphi 6.0 - 7.0)。
2、运行软件,输入注册信息,NAME:HBQJXHW 注册码:1234567890 输入完毕后,点击注册按钮。
3、有错误提示窗口Sorry, wrong serial number.
4、右键-->Ultra字符串参考-->查找ASCII-->Ctrl+F-->输入"Sorry, wrong serial number."-->双击来到:0055B3EF处!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
0055B1D2   .55            PUSH EBP
0055B1D3   .68 22B45500   PUSH ExePW.0055B422
0055B1D8   .64:FF30       PUSH DWORD PTR FS:
0055B1DB   .64:8920       MOV DWORD PTR FS:,ESP
0055B1DE   .E8 692F0000   CALL ExePW.0055E14C
0055B1E3   .84C0          TEST AL,AL
0055B1E5   .75 4E         JNZ SHORT ExePW.0055B235
0055B1E7   .E8 B048F1FF   CALL ExePW.0046FA9C
0055B1EC   .84C0          TEST AL,AL
0055B1EE   .75 45         JNZ SHORT ExePW.0055B235
0055B1F0   .833D D4275700>CMP DWORD PTR DS:,0
0055B1F7   .75 15         JNZ SHORT ExePW.0055B20E
0055B1F9   .6A 00         PUSH 0                                 ; /Arg1 = 00000000
0055B1FB   .66:8B0D 30B45>MOV CX,WORD PTR DS:            ; |
0055B202   .33D2          XOR EDX,EDX                              ; |
0055B204   .B8 3CB45500   MOV EAX,ExePW.0055B43C                   ; |ASCII 44,"iese Funktion kann nur von einem Benutzer mit
administrativen Rech"
0055B209   .E8 4AAAEDFF   CALL ExePW.00435C58                      ; \ExePW.00435C58
0055B20E   >833D D4275700>CMP DWORD PTR DS:,1
0055B215   .0F85 EC010000 JNZ ExePW.0055B407
0055B21B   .6A 00         PUSH 0                                 ; /Arg1 = 00000000
0055B21D   .66:8B0D 30B45>MOV CX,WORD PTR DS:            ; |
0055B224   .33D2          XOR EDX,EDX                              ; |
0055B226   .B8 F0B45500   MOV EAX,ExePW.0055B4F0                   ; |this option can only be set by users with administrative\n\nrights. please login with an admin account and run\n\nthis function again.
0055B22B   .E8 28AAEDFF   CALL ExePW.00435C58                      ; \ExePW.00435C58
0055B230   .E9 D2010000   JMP ExePW.0055B407
0055B235   >8D55 F8       LEA EDX,DWORD PTR SS:
0055B238   .8B83 6C030000 MOV EAX,DWORD PTR DS:
0055B23E   .E8 D910EFFF   CALL ExePW.0044C31C
0055B243   .8B45 F8       MOV EAX,DWORD PTR SS:             ;name给EAX
0055B246   .E8 0993EAFF   CALL ExePW.00404554                      ;计算NAME位数
0055B24B   .83F8 06       CMP EAX,6                              ;判断NAME是否大于6位
0055B24E   .7F 4F         JG SHORT ExePW.0055B29F                  ;如果小于6位,则提示输入6位以上。
0055B250   .833D D4275700>CMP DWORD PTR DS:,0
0055B257   .75 15         JNZ SHORT ExePW.0055B26E
0055B259   .6A 00         PUSH 0                                 ; /Arg1 = 00000000
0055B25B   .66:8B0D 30B45>MOV CX,WORD PTR DS:            ; |
0055B262   .33D2          XOR EDX,EDX                              ; |
0055B264   .B8 7CB55500   MOV EAX,ExePW.0055B57C                   ; |geben sie mindestens einen 6-stelligen namen ein !
0055B269   .E8 EAA9EDFF   CALL ExePW.00435C58                      ; \ExePW.00435C58
0055B26E   >833D D4275700>CMP DWORD PTR DS:,1
0055B275   .75 15         JNZ SHORT ExePW.0055B28C
0055B277   .6A 00         PUSH 0                                 ; /Arg1 = 00000000
0055B279   .66:8B0D 30B45>MOV CX,WORD PTR DS:            ; |
0055B280   .33D2          XOR EDX,EDX                              ; |
0055B282   .B8 B8B55500   MOV EAX,ExePW.0055B5B8                   ; |please enter a name with at least 6 characters!
0055B287   .E8 CCA9EDFF   CALL ExePW.00435C58                      ; \ExePW.00435C58
0055B28C   >8B83 6C030000 MOV EAX,DWORD PTR DS:
0055B292   .8B10          MOV EDX,DWORD PTR DS:
0055B294   .FF92 C4000000 CALL DWORD PTR DS:
0055B29A   .E9 68010000   JMP ExePW.0055B407
0055B29F   >8D55 F4       LEA EDX,DWORD PTR SS:
0055B2A2   .8B83 70030000 MOV EAX,DWORD PTR DS:
0055B2A8   .E8 6F10EFFF   CALL ExePW.0044C31C                      ;(初始 cpu 选择)
0055B2AD   .8B45 F4       MOV EAX,DWORD PTR SS:
0055B2B0   .50            PUSH EAX
0055B2B1   .8D55 F0       LEA EDX,DWORD PTR SS:
0055B2B4   .8B83 6C030000 MOV EAX,DWORD PTR DS:
0055B2BA   .E8 5D10EFFF   CALL ExePW.0044C31C
0055B2BF   .8B45 F0       MOV EAX,DWORD PTR SS:
0055B2C2   .5A            POP EDX
0055B2C3   .E8 CC370000   CALL ExePW.0055EA94                      ;重要算法CALL,进入
0055B2C8   .84C0          TEST AL,AL
0055B2CA   .0F84 ED000000 JE ExePW.0055B3BD
0055B2D0   .33C0          XOR EAX,EAX
0055B2D2   .55            PUSH EBP
0055B2D3   .68 9FB35500   PUSH ExePW.0055B39F
0055B2D8   .64:FF30       PUSH DWORD PTR FS:
0055B2DB   .64:8920       MOV DWORD PTR FS:,ESP
0055B2DE   .B2 01         MOV DL,1
0055B2E0   .A1 A0B44300   MOV EAX,DWORD PTR DS:
0055B2E5   .E8 B602EEFF   CALL ExePW.0043B5A0
0055B2EA   .8945 FC       MOV DWORD PTR SS:,EAX
0055B2ED   .BA 02000080   MOV EDX,80000002
0055B2F2   .8B45 FC       MOV EAX,DWORD PTR SS:
0055B2F5   .E8 8203EEFF   CALL ExePW.0043B67C
0055B2FA   .B1 01         MOV CL,1
0055B2FC   .BA F0B55500   MOV EDX,ExePW.0055B5F0                   ;software\salfeld\exelock
0055B301   .8B45 FC       MOV EAX,DWORD PTR SS:
0055B304   .E8 DB03EEFF   CALL ExePW.0043B6E4
0055B309   .8D55 EC       LEA EDX,DWORD PTR SS:
0055B30C   .8B83 6C030000 MOV EAX,DWORD PTR DS:
0055B312   .E8 0510EFFF   CALL ExePW.0044C31C
0055B317   .8B4D EC       MOV ECX,DWORD PTR SS:
0055B31A   .BA 14B65500   MOV EDX,ExePW.0055B614                   ;user
0055B31F   .8B45 FC       MOV EAX,DWORD PTR SS:
0055B322   .E8 F108EEFF   CALL ExePW.0043BC18
0055B327   .8D55 E8       LEA EDX,DWORD PTR SS:
0055B32A   .8B83 70030000 MOV EAX,DWORD PTR DS:
0055B330   .E8 E70FEFFF   CALL ExePW.0044C31C
0055B335   .8B4D E8       MOV ECX,DWORD PTR SS:
0055B338   .BA 24B65500   MOV EDX,ExePW.0055B624                   ;id
0055B33D   .8B45 FC       MOV EAX,DWORD PTR SS:
0055B340   .E8 D308EEFF   CALL ExePW.0043BC18
0055B345   .8B45 FC       MOV EAX,DWORD PTR SS:
0055B348   .E8 B781EAFF   CALL ExePW.00403504
0055B34D   .833D D4275700>CMP DWORD PTR DS:,0
0055B354   .75 15         JNZ SHORT ExePW.0055B36B
0055B356   .6A 00         PUSH 0                                 ; /Arg1 = 00000000
0055B358   .66:8B0D 30B45>MOV CX,WORD PTR DS:            ; |
0055B35F   .B2 02         MOV DL,2                                 ; |
0055B361   .B8 30B65500   MOV EAX,ExePW.0055B630                   ; |programm wurde erfolgreich in vollversion verwandelt.\nbitte programm neu starten.
0055B366   .E8 EDA8EDFF   CALL ExePW.00435C58                      ; \ExePW.00435C58
0055B36B   >833D D4275700>CMP DWORD PTR DS:,1
0055B372   .75 15         JNZ SHORT ExePW.0055B389
0055B374   .6A 00         PUSH 0                                 ; /Arg1 = 00000000
0055B376   .66:8B0D 30B45>MOV CX,WORD PTR DS:            ; |
0055B37D   .B2 02         MOV DL,2                                 ; |
0055B37F   .B8 8CB65500   MOV EAX,ExePW.0055B68C                   ; |programm was successfully registered.\nplease restart this program now.
0055B384   .E8 CFA8EDFF   CALL ExePW.00435C58                      ; \ExePW.00435C58
0055B389   >A1 E4E75600   MOV EAX,DWORD PTR DS:
0055B38E   .8B00          MOV EAX,DWORD PTR DS:
0055B390   .E8 4B0EF1FF   CALL ExePW.0046C1E0
0055B395   .33C0          XOR EAX,EAX
0055B397   .5A            POP EDX
0055B398   .59            POP ECX
0055B399   .59            POP ECX
0055B39A   .64:8910       MOV DWORD PTR FS:,EDX
0055B39D   .EB 68         JMP SHORT ExePW.0055B407
0055B39F   .^ E9 4086EAFF   JMP ExePW.004039E4
0055B3A4   .B8 DCB65500   MOV EAX,ExePW.0055B6DC                   ;error writing licence information to registry.\nplease contact developer: [email protected]
0055B3A9   .E8 A2A9EDFF   CALL ExePW.00435D50
0055B3AE   .8B45 FC       MOV EAX,DWORD PTR SS:
0055B3B1   .E8 4E81EAFF   CALL ExePW.00403504
0055B3B6   .E8 9189EAFF   CALL ExePW.00403D4C
0055B3BB   .EB 4A         JMP SHORT ExePW.0055B407
0055B3BD   >833D D4275700>CMP DWORD PTR DS:,0
0055B3C4   .75 15         JNZ SHORT ExePW.0055B3DB
0055B3C6   .6A 00         PUSH 0                                 ; /Arg1 = 00000000
0055B3C8   .66:8B0D 30B45>MOV CX,WORD PTR DS:            ; |
0055B3CF   .33D2          XOR EDX,EDX                              ; |
0055B3D1   .B8 44B75500   MOV EAX,ExePW.0055B744                   ; |die eingegebene seriennummer ist falsch.
0055B3D6   .E8 7DA8EDFF   CALL ExePW.00435C58                      ; \ExePW.00435C58
0055B3DB   >833D D4275700>CMP DWORD PTR DS:,1
0055B3E2   .75 15         JNZ SHORT ExePW.0055B3F9
0055B3E4   .6A 00         PUSH 0                                 ; /Arg1 = 00000000
0055B3E6   .66:8B0D 30B45>MOV CX,WORD PTR DS:            ; |
0055B3ED   .33D2          XOR EDX,EDX                              ; |
0055B3EF   .B8 78B75500   MOV EAX,ExePW.0055B778                   ; |sorry, wrong serial number.
0055B3F4   .E8 5FA8EDFF   CALL ExePW.00435C58                      ; \ExePW.00435C58
0055B3F9   >8B83 6C030000 MOV EAX,DWORD PTR DS:
0055B3FF   .8B10          MOV EDX,DWORD PTR DS:
0055B401   .FF92 C4000000 CALL DWORD PTR DS:
0055B407   >33C0          XOR EAX,EAX


+++++++++++++CALL ExePW.0055EA94++++++++++++++++++++++++++++++
0055EA94/$55            PUSH EBP
0055EA95|.8BEC          MOV EBP,ESP
0055EA97|.B9 0F000000   MOV ECX,0F
0055EA9C|>6A 00         /PUSH 0
0055EA9E|.6A 00         |PUSH 0
0055EAA0|.49            |DEC ECX
0055EAA1|.^ 75 F9         \JNZ SHORT ExePW.0055EA9C
0055EAA3|.51            PUSH ECX
0055EAA4|.53            PUSH EBX
0055EAA5|.56            PUSH ESI
0055EAA6|.57            PUSH EDI
0055EAA7|.8955 F8       MOV DWORD PTR SS:,EDX             ;试练码给 SS:
0055EAAA|.8945 FC       MOV DWORD PTR SS:,EAX             ;NAME给 SS:
0055EAAD|.8B45 FC       MOV EAX,DWORD PTR SS:
0055EAB0|.E8 8F5CEAFF   CALL ExePW.00404744
0055EAB5|.8B45 F8       MOV EAX,DWORD PTR SS:             ;试练码给EAX
0055EAB8|.E8 875CEAFF   CALL ExePW.00404744
0055EABD|.33C0          XOR EAX,EAX
0055EABF|.55            PUSH EBP
0055EAC0|.68 9AEE5500   PUSH ExePW.0055EE9A
0055EAC5|.64:FF30       PUSH DWORD PTR FS:
0055EAC8|.64:8920       MOV DWORD PTR FS:,ESP
0055EACB|.C645 F7 00    MOV BYTE PTR SS:,0
0055EACF|.8D45 EC       LEA EAX,DWORD PTR SS:
0055EAD2|.50            PUSH EAX
0055EAD3|.B9 01000000   MOV ECX,1                              ;常数1
0055EAD8|.BA 04000000   MOV EDX,4                              ;常数4
0055EADD|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EAE0|.E8 CF5CEAFF   CALL ExePW.004047B4                      ;取试练码第4个字符
0055EAE5|.8D45 E8       LEA EAX,DWORD PTR SS:
0055EAE8|.50            PUSH EAX
0055EAE9|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EAEC|.E8 635AEAFF   CALL ExePW.00404554
0055EAF1|.8BD0          MOV EDX,EAX
0055EAF3|.B9 01000000   MOV ECX,1
0055EAF8|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EAFB|.E8 B45CEAFF   CALL ExePW.004047B4                      ;取试练码最后1个字符
0055EB00|.8D45 F0       LEA EAX,DWORD PTR SS:
0055EB03|.50            PUSH EAX
0055EB04|.B9 02000000   MOV ECX,2
0055EB09|.BA 02000000   MOV EDX,2
0055EB0E|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EB11|.E8 9E5CEAFF   CALL ExePW.004047B4                      ;取试练码第2、3个字符
0055EB16|.8B45 EC       MOV EAX,DWORD PTR SS:            ;试练码第4个字符的地址给EAX
0055EB19|.BA B4EE5500   MOV EDX,ExePW.0055EEB4                   ;常数5的地址给EDX
0055EB1E|.E8 7D5BEAFF   CALL ExePW.004046A0                      ;比较试练码第4个字符是否等于常数5
0055EB23|.0F85 6A010000 JNZ ExePW.0055EC93
0055EB29|.68 C0EE5500   PUSH ExePW.0055EEC0                      ;常数0压入堆栈
0055EB2E|.FF75 F0       PUSH DWORD PTR SS:               ;试练码第2、3个字符压入堆栈
0055EB31|.68 B4EE5500   PUSH ExePW.0055EEB4                      ;常数5压入堆栈
0055EB36|.8D45 E0       LEA EAX,DWORD PTR SS:
0055EB39|.BA 03000000   MOV EDX,3
0055EB3E|.E8 D15AEAFF   CALL ExePW.00404614                      ;压入堆栈的三个数重新组合成一个四位数为SN1
0055EB43|.8D45 D0       LEA EAX,DWORD PTR SS:
0055EB46|.50            PUSH EAX
0055EB47|.B9 01000000   MOV ECX,1
0055EB4C|.BA 06000000   MOV EDX,6
0055EB51|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EB54|.E8 5B5CEAFF   CALL ExePW.004047B4                      ;取试练码第6个字符
0055EB59|.8B45 D0       MOV EAX,DWORD PTR SS:
0055EB5C|.33DB          XOR EBX,EBX
0055EB5E|.8A18          MOV BL,BYTE PTR DS:
0055EB60|.8D45 CC       LEA EAX,DWORD PTR SS:
0055EB63|.50            PUSH EAX
0055EB64|.B9 01000000   MOV ECX,1
0055EB69|.BA 07000000   MOV EDX,7
0055EB6E|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EB71|.E8 3E5CEAFF   CALL ExePW.004047B4                      ;取试练码第7个字符
0055EB76|.8B45 CC       MOV EAX,DWORD PTR SS:
0055EB79|.0FB630      MOVZX ESI,BYTE PTR DS:
0055EB7C|.8D45 C8       LEA EAX,DWORD PTR SS:
0055EB7F|.50            PUSH EAX
0055EB80|.B9 01000000   MOV ECX,1
0055EB85|.BA 08000000   MOV EDX,8
0055EB8A|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EB8D|.E8 225CEAFF   CALL ExePW.004047B4                      ;取试练码第8个字符
0055EB92|.8B45 C8       MOV EAX,DWORD PTR SS:
0055EB95|.0FB638      MOVZX EDI,BYTE PTR DS:
0055EB98|.8D45 C4       LEA EAX,DWORD PTR SS:
0055EB9B|.50            PUSH EAX
0055EB9C|.B9 01000000   MOV ECX,1
0055EBA1|.BA 09000000   MOV EDX,9
0055EBA6|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EBA9|.E8 065CEAFF   CALL ExePW.004047B4                      ;取试练码第9个字符
0055EBAE|.8B45 C4       MOV EAX,DWORD PTR SS:
0055EBB1|.0FB600      MOVZX EAX,BYTE PTR DS:
0055EBB4|.8945 D4       MOV DWORD PTR SS:,EAX
0055EBB7|.FF75 E0       PUSH DWORD PTR SS:
0055EBBA|.68 CCEE5500   PUSH ExePW.0055EECC                      ;在SN1后加上“-”
0055EBBF|.8D45 C0       LEA EAX,DWORD PTR SS:
0055EBC2|.50            PUSH EAX
0055EBC3|.B9 01000000   MOV ECX,1
0055EBC8|.BA 06000000   MOV EDX,6
0055EBCD|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EBD0|.E8 DF5BEAFF   CALL ExePW.004047B4                      ;取试练码第6个字符
0055EBD5|.FF75 C0       PUSH DWORD PTR SS:
0055EBD8|.8D45 BC       LEA EAX,DWORD PTR SS:
0055EBDB|.50            PUSH EAX
0055EBDC|.B9 01000000   MOV ECX,1
0055EBE1|.BA 07000000   MOV EDX,7
0055EBE6|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EBE9|.E8 C65BEAFF   CALL ExePW.004047B4                      ;取试练码第7个字符
0055EBEE|.FF75 BC       PUSH DWORD PTR SS:
0055EBF1|.8D45 B8       LEA EAX,DWORD PTR SS:
0055EBF4|.50            PUSH EAX
0055EBF5|.B9 01000000   MOV ECX,1
0055EBFA|.BA 08000000   MOV EDX,8
0055EBFF|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EC02|.E8 AD5BEAFF   CALL ExePW.004047B4                      ;取试练码第8个字符
0055EC07|.FF75 B8       PUSH DWORD PTR SS:
0055EC0A|.8D45 B4       LEA EAX,DWORD PTR SS:
0055EC0D|.50            PUSH EAX
0055EC0E|.B9 01000000   MOV ECX,1
0055EC13|.BA 09000000   MOV EDX,9
0055EC18|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EC1B|.E8 945BEAFF   CALL ExePW.004047B4                      ;取试练码第9个字符
0055EC20|.FF75 B4       PUSH DWORD PTR SS:
0055EC23|.8D45 E0       LEA EAX,DWORD PTR SS:
0055EC26|.BA 06000000   MOV EDX,6
0055EC2B|.E8 E459EAFF   CALL ExePW.00404614                      ;把试练码第6、7、8、9个字符组成一个四位数记为SN2
0055EC30|.8B45 F0       MOV EAX,DWORD PTR SS:            ;取试练码第2、3个字符组成的数给EAX
0055EC33|.E8 5CA4EAFF   CALL ExePW.00409094                      ;把试练码第2、3个字符组成的数转换为十六进数
0055EC38|.03F3          ADD ESI,EBX                              ;这里的几个ADD是把SN2各位的HEX码值相加再加上试练码第2、3个字符组成的数转换为十六进数
0055EC3A|.03FE          ADD EDI,ESI
0055EC3C|.037D D4       ADD EDI,DWORD PTR SS:
0055EC3F|.03C7          ADD EAX,EDI
0055EC41|.50            PUSH EAX                                 ;最后计算的结果压入堆栈
0055EC42|.8B45 E8       MOV EAX,DWORD PTR SS:            ;把试练码最后1个字符的地址给EAX记为SN4
0055EC45|.E8 4AA4EAFF   CALL ExePW.00409094
0055EC4A|.8D0480      LEA EAX,DWORD PTR DS:         ;试练码最后1个字符+取试练码最后1个字符*5给EAX
0055EC4D|.5A            POP EDX
0055EC4E|.03D0          ADD EDX,EAX                              ;上面计算结果加上这次计算的结果给EDX并转换为十进制数记为SN3
0055EC50|.8955 D8       MOV DWORD PTR SS:,EDX
0055EC53|.FF75 E0       PUSH DWORD PTR SS:
0055EC56|.68 CCEE5500   PUSH ExePW.0055EECC                      ;-
0055EC5B|.8D55 B0       LEA EDX,DWORD PTR SS:
0055EC5E|.8B45 D8       MOV EAX,DWORD PTR SS:
0055EC61|.E8 F2A2EAFF   CALL ExePW.00408F58
0055EC66|.FF75 B0       PUSH DWORD PTR SS:
0055EC69|.FF75 E8       PUSH DWORD PTR SS:
0055EC6C|.8D45 E0       LEA EAX,DWORD PTR SS:
0055EC6F|.BA 04000000   MOV EDX,4
0055EC74|.E8 9B59EAFF   CALL ExePW.00404614
0055EC79|.8B45 F8       MOV EAX,DWORD PTR SS:
0055EC7C|.8B55 E0       MOV EDX,DWORD PTR SS:            ;SN1-SN2-SN3SN4
0055EC7F|.E8 1C5AEAFF   CALL ExePW.004046A0                      ;注册码比较
0055EC84|.0F85 DB010000 JNZ ExePW.0055EE65
0055EC8A|.C645 F7 01    MOV BYTE PTR SS:,1
0055EC8E|.E9 D2010000   JMP ExePW.0055EE65
上面是当注册码第四位等于5时计算,注册码与用户名无关系。

下面是当注册码第四位等于6时计算,注册码与用户名有关系。
0055EC93|>8B45 EC       MOV EAX,DWORD PTR SS:            ;试练码第4个字符的地址给EAX
0055EC96|.BA D8EE5500   MOV EDX,ExePW.0055EED8                   ;常数6的地址给EDX
0055EC9B|.E8 005AEAFF   CALL ExePW.004046A0                      ;比较试练码第4个字符是否等于常数6
0055ECA0|.0F85 BF010000 JNZ ExePW.0055EE65                     ;如果试练码第4个字符不等于常数5、6则注册错误
0055ECA6|.68 C0EE5500   PUSH ExePW.0055EEC0                      ;0
0055ECAB|.FF75 F0       PUSH DWORD PTR SS:
0055ECAE|.68 D8EE5500   PUSH ExePW.0055EED8                      ;6
0055ECB3|.8D45 E0       LEA EAX,DWORD PTR SS:
0055ECB6|.BA 03000000   MOV EDX,3
0055ECBB|.E8 5459EAFF   CALL ExePW.00404614
0055ECC0|.8D45 AC       LEA EAX,DWORD PTR SS:
0055ECC3|.50            PUSH EAX
0055ECC4|.8D55 A8       LEA EDX,DWORD PTR SS:
0055ECC7|.8B45 FC       MOV EAX,DWORD PTR SS:
0055ECCA|.E8 D59CEAFF   CALL ExePW.004089A4
0055ECCF|.8B45 A8       MOV EAX,DWORD PTR SS:
0055ECD2|.B9 01000000   MOV ECX,1
0055ECD7|.BA 01000000   MOV EDX,1
0055ECDC|.E8 D35AEAFF   CALL ExePW.004047B4
0055ECE1|.8B45 AC       MOV EAX,DWORD PTR SS:
0055ECE4|.8A00          MOV AL,BYTE PTR DS:
0055ECE6|.33DB          XOR EBX,EBX
0055ECE8|.8AD8          MOV BL,AL
0055ECEA|.8D45 A4       LEA EAX,DWORD PTR SS:
0055ECED|.50            PUSH EAX
0055ECEE|.8D55 A0       LEA EDX,DWORD PTR SS:
0055ECF1|.8B45 FC       MOV EAX,DWORD PTR SS:
0055ECF4|.E8 AB9CEAFF   CALL ExePW.004089A4
0055ECF9|.8B45 A0       MOV EAX,DWORD PTR SS:
0055ECFC|.B9 01000000   MOV ECX,1
0055ED01|.BA 03000000   MOV EDX,3
0055ED06|.E8 A95AEAFF   CALL ExePW.004047B4
0055ED0B|.8B45 A4       MOV EAX,DWORD PTR SS:
0055ED0E|.8A00          MOV AL,BYTE PTR DS:
0055ED10|.8BF0          MOV ESI,EAX
0055ED12|.81E6 FF000000 AND ESI,0FF
0055ED18|.8D45 9C       LEA EAX,DWORD PTR SS:
0055ED1B|.50            PUSH EAX
0055ED1C|.B9 01000000   MOV ECX,1
0055ED21|.BA 01000000   MOV EDX,1
0055ED26|.8B45 F0       MOV EAX,DWORD PTR SS:
0055ED29|.E8 865AEAFF   CALL ExePW.004047B4
0055ED2E|.8B45 9C       MOV EAX,DWORD PTR SS:
0055ED31|.E8 5EA3EAFF   CALL ExePW.00409094
0055ED36|.8BF8          MOV EDI,EAX
0055ED38|.8D45 98       LEA EAX,DWORD PTR SS:
0055ED3B|.50            PUSH EAX
0055ED3C|.B9 01000000   MOV ECX,1
0055ED41|.BA 02000000   MOV EDX,2
0055ED46|.8B45 F0       MOV EAX,DWORD PTR SS:
0055ED49|.E8 665AEAFF   CALL ExePW.004047B4
0055ED4E|.8B45 98       MOV EAX,DWORD PTR SS:
0055ED51|.E8 3EA3EAFF   CALL ExePW.00409094
0055ED56|.8945 DC       MOV DWORD PTR SS:,EAX
0055ED59|.FF75 E0       PUSH DWORD PTR SS:
0055ED5C|.68 CCEE5500   PUSH ExePW.0055EECC                      ;-
0055ED61|.8D55 94       LEA EDX,DWORD PTR SS:
0055ED64|.8B45 DC       MOV EAX,DWORD PTR SS:
0055ED67|.03C3          ADD EAX,EBX
0055ED69|.E8 EAA1EAFF   CALL ExePW.00408F58
0055ED6E|.FF75 94       PUSH DWORD PTR SS:
0055ED71|.8D55 90       LEA EDX,DWORD PTR SS:
0055ED74|.8D0437      LEA EAX,DWORD PTR DS:
0055ED77|.E8 DCA1EAFF   CALL ExePW.00408F58
0055ED7C|.FF75 90       PUSH DWORD PTR SS:
0055ED7F|.8D45 E0       LEA EAX,DWORD PTR SS:
0055ED82|.BA 04000000   MOV EDX,4
0055ED87|.E8 8858EAFF   CALL ExePW.00404614
0055ED8C|.33C0          XOR EAX,EAX
0055ED8E|.8945 D8       MOV DWORD PTR SS:,EAX
0055ED91|.8B45 FC       MOV EAX,DWORD PTR SS:
0055ED94|.E8 BB57EAFF   CALL ExePW.00404554
0055ED99|.8BF0          MOV ESI,EAX
0055ED9B|.85F6          TEST ESI,ESI
0055ED9D|.7E 2A         JLE SHORT ExePW.0055EDC9
0055ED9F|.BF 01000000   MOV EDI,1
0055EDA4|>8D45 8C       /LEA EAX,DWORD PTR SS:
0055EDA7|.50            |PUSH EAX
0055EDA8|.B9 01000000   |MOV ECX,1
0055EDAD|.8BD7          |MOV EDX,EDI
0055EDAF|.8B45 FC       |MOV EAX,DWORD PTR SS:
0055EDB2|.E8 FD59EAFF   |CALL ExePW.004047B4
0055EDB7|.8B45 8C       |MOV EAX,DWORD PTR SS:
0055EDBA|.8A18          |MOV BL,BYTE PTR DS:
0055EDBC|.33C0          |XOR EAX,EAX
0055EDBE|.8AC3          |MOV AL,BL
0055EDC0|.8BD8          |MOV EBX,EAX
0055EDC2|.015D D8       |ADD DWORD PTR SS:,EBX
0055EDC5|.47            |INC EDI
0055EDC6|.4E            |DEC ESI
0055EDC7|.^ 75 DB         \JNZ SHORT ExePW.0055EDA4
0055EDC9|>8B45 F0       MOV EAX,DWORD PTR SS:
0055EDCC|.E8 C3A2EAFF   CALL ExePW.00409094
0055EDD1|.8BD8          MOV EBX,EAX
0055EDD3|.8B75 D8       MOV ESI,DWORD PTR SS:
0055EDD6|.03F3          ADD ESI,EBX
0055EDD8|.8D45 88       LEA EAX,DWORD PTR SS:
0055EDDB|.50            PUSH EAX
0055EDDC|.B9 01000000   MOV ECX,1
0055EDE1|.BA 01000000   MOV EDX,1
0055EDE6|.8B45 E8       MOV EAX,DWORD PTR SS:
0055EDE9|.E8 C659EAFF   CALL ExePW.004047B4
0055EDEE|.8B45 88       MOV EAX,DWORD PTR SS:
0055EDF1|.8A18          MOV BL,BYTE PTR DS:
0055EDF3|.8D45 84       LEA EAX,DWORD PTR SS:
0055EDF6|.8BD3          MOV EDX,EBX
0055EDF8|.E8 7F56EAFF   CALL ExePW.0040447C
0055EDFD|.8B45 84       MOV EAX,DWORD PTR SS:
0055EE00|.E8 8FA2EAFF   CALL ExePW.00409094
0055EE05|.8BD8          MOV EBX,EAX
0055EE07|.8D049B      LEA EAX,DWORD PTR DS:
0055EE0A|.03F0          ADD ESI,EAX
0055EE0C|.8D55 E4       LEA EDX,DWORD PTR SS:
0055EE0F|.8BC6          MOV EAX,ESI
0055EE11|.E8 42A1EAFF   CALL ExePW.00408F58
0055EE16|.8B45 E4       MOV EAX,DWORD PTR SS:
0055EE19|.E8 3657EAFF   CALL ExePW.00404554
0055EE1E|.83F8 04       CMP EAX,4
0055EE21|.7C 16         JL SHORT ExePW.0055EE39
0055EE23|.8D45 E4       LEA EAX,DWORD PTR SS:
0055EE26|.50            PUSH EAX
0055EE27|.B9 03000000   MOV ECX,3
0055EE2C|.BA 02000000   MOV EDX,2
0055EE31|.8B45 E4       MOV EAX,DWORD PTR SS:
0055EE34|.E8 7B59EAFF   CALL ExePW.004047B4
0055EE39|>FF75 E0       PUSH DWORD PTR SS:
0055EE3C|.68 CCEE5500   PUSH ExePW.0055EECC                      ;-
0055EE41|.FF75 E4       PUSH DWORD PTR SS:
0055EE44|.FF75 E8       PUSH DWORD PTR SS:
0055EE47|.8D45 E0       LEA EAX,DWORD PTR SS:
0055EE4A|.BA 04000000   MOV EDX,4
0055EE4F|.E8 C057EAFF   CALL ExePW.00404614
0055EE54|.8B45 E0       MOV EAX,DWORD PTR SS:
0055EE57|.8B55 F8       MOV EDX,DWORD PTR SS:
0055EE5A|.E8 4158EAFF   CALL ExePW.004046A0
0055EE5F|.75 04         JNZ SHORT ExePW.0055EE65
0055EE61|.C645 F7 01    MOV BYTE PTR SS:,1
0055EE65|>33C0          XOR EAX,EAX
0055EE67|.5A            POP EDX
0055EE68|.59            POP ECX
0055EE69|.59            POP ECX
0055EE6A|.64:8910       MOV DWORD PTR FS:,EDX
0055EE6D|.68 A1EE5500   PUSH ExePW.0055EEA1
0055EE72|>8D45 84       LEA EAX,DWORD PTR SS:
0055EE75|.BA 14000000   MOV EDX,14
0055EE7A|.E8 3954EAFF   CALL ExePW.004042B8
0055EE7F|.8D45 E0       LEA EAX,DWORD PTR SS:
0055EE82|.BA 05000000   MOV EDX,5
0055EE87|.E8 2C54EAFF   CALL ExePW.004042B8
0055EE8C|.8D45 F8       LEA EAX,DWORD PTR SS:
0055EE8F|.BA 02000000   MOV EDX,2
0055EE94|.E8 1F54EAFF   CALL ExePW.004042B8
0055EE99\.C3            RETN
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


如果注册码第四位等于5,计算注册码与用户名无关系。

第1位数:    0
第2-3位数:任意两位数00-99
第4位数:    5
第5位数:    -
第6-9位数:任意四位数0000-9999
第10位数:   -
第11-13位数:把前面的任意四位数各位HEX值相加+前面的任意两位的十六进制数+后面的最后任意一位数*0x5之后转换为十进制数。
第14位数:   任意一位数0-9
---------------------------------------
如果注册码第四位等于6,计算注册码与用户名有关系。
第1位数:    0
第2-3位数:任意两位数00-99
第4位数:    6
第5位数:    -
第6-7位数:取用户名的第一位大字母的HEX值+前面的任意两位的第二位数
第8-9位数:取用户名的第三位大字母的HEX值+前面的任意两位的第一位数
第10位数:   -
第11-13位数:把用户名各位HEX值相加+前面的任意两位的为十六进制数+后面的最后任意一位数*0x5之后转换为十进制数,只取后面三位数。
第14位数:   任意一位数0-9


#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <ctype.h>
int main(void)
{static int i,x,y,z;
static char num1;
static int num2;
static int num3;
static int num4;
   time_t t;
   srand((unsigned) time(&t));
   printf("Please enter a name with at least 6 characters!");
   scanf("%s",num1);
       printf ("\n\n\n    Serial =   0");
   for(i=0; i<2; i++)
      {num2=rand() % 10;
       printf("%d",num2);
       }
       x=num2*10;
       x+=num2;
       printf("5-");
       for(i=0; i<4; i++)
            {num3=rand() % 10;
             printf("%d",num3);
             y+=num3+48;
             }
             printf("-");
             num4=rand() % 10;
             z=(x+y+num4*5)%1000;
             printf("%d",z);
             printf("%d",num4);
printf ("\n\n\n\n    Serial =   0");
   for(i=0; i<2; i++)
      {num2=rand() % 10;
       printf("%d",num2);
       }
       x=num2*10;
       x+=num2;
       printf("6-");
       printf("%d",toupper(num1)+num2);
       printf("%d",toupper(num1)+num2);
             printf("-");
             num4=rand() % 10;
             y=0;
             for(i=0;i<strlen(num1);i++)
               y+=num1;
               z=(x+y+num4*5);
               printf("%d",z%1000/100);
               printf("%d",z%100/10);
               printf("%d",z%10);
               printf("%d",num4);
getch();
return 0;
}



注册信息保存在注册表中:

"RunOnly"=dword:00000000
"Backup"=dword:00000000
"Context"=dword:00000001
"RunOnlyUser"="HBQJXHW"
"BackupDir"=""
"PasswordPrompt"="Please enter password"
"RegUser"=""
"RegSerial"=""
"User"="HBQJXHW"
"ID"="0525-0580-2621"或者"0866-7889-0602"
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

snetluck 发表于 2006-3-26 00:59:20

支持。
虽然看不懂!!!

xingbing 发表于 2006-3-28 11:19:41

支持。支持。

tswrl 发表于 2007-4-29 19:47:44

支持一下。

tang12347 发表于 2007-10-6 21:22:04

真够牛的啊,!很少一部分看得懂!/:011

crack小菜 发表于 2007-10-7 12:22:31

看的懂一部分呵呵/:014

binke 发表于 2007-10-15 12:26:47

写的好啊,详细明了,感谢,十分的感谢。

暗笛飞声 发表于 2007-10-17 17:28:58

看得不是很明白,不过还是谢谢了

caizhi 发表于 2007-10-18 13:34:59

看不懂支持一下

gdwz2008 发表于 2007-11-25 23:59:13

写得很好后面这些是VC代码吗
页: [1] 2 3 4
查看完整版本: 一个可以给EXE文件加密码的工具