一个可以给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"
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 支持。
虽然看不懂!!! 支持。支持。 支持一下。 真够牛的啊,!很少一部分看得懂!/:011 看的懂一部分呵呵/:014 写的好啊,详细明了,感谢,十分的感谢。 看得不是很明白,不过还是谢谢了 看不懂支持一下 写得很好后面这些是VC代码吗