三六七超市管理系统2007日用品版v3.5.2.0算法分析
标 题: 【原创】三六七超市管理系统2007日用品版v3.5.2.0算法分析作 者: KuNgBiM
时 间: 2007-03-13,19:50
链 接: http://bbs.pediy.com/showthread.php?threadid=40987
【文章标题】: 三六七超市管理系统2007日用品版v3.5.2.0算法分析
【文章作者】: KuNgBiM
【作者邮箱】: [email protected]
【作者主页】: http://www.crkcn.com
【软件名称】: 三六七超市管理系统2007日用品版v3.5.2.0
【软件大小】: 7.10MB
【下载地址】: 自己搜索下载
【加壳方式】: ASPack 2.12
【保护方式】: 序列号+功能限制
【编写语言】: Borland Delphi 4.0 - 5.0
【使用工具】: OD
【操作平台】: 盗版XPsp2
【软件介绍】: (略)
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
试炼信息:
用户名:KuNgBiM
试炼码:99999999999999999999999999
程序ASPack 2.12加壳,脱之~~OD装载程序,利用字符插件搜索来到:
006D10FC|> \8D55 F0 lea edx, dword ptr ;查找后来到这里设断,F9运行
006D10FF|.8B83 DC020000mov eax, dword ptr
006D1105|.E8 2E71D6FF call 00438238 ;获取用户名
006D110A|.8B45 F0 mov eax, dword ptr ;ASCII "KuNgBiM"
006D110D|.8D55 FC lea edx, dword ptr
006D1110|.E8 038CD3FF call 00409D18
006D1115|.8D55 EC lea edx, dword ptr
006D1118|.8B83 E0020000mov eax, dword ptr
006D111E|.E8 1571D6FF call 00438238 ;获取试炼码
006D1123|.8B45 EC mov eax, dword ptr ;ASCII "99999999999999999999999999"
006D1126|.8D55 F8 lea edx, dword ptr
006D1129|.E8 EA8BD3FF call 00409D18
006D112E|.837D FC 00 cmp dword ptr , 0 ;用户名是否为0
006D1132|.0F84 B5000000je 006D11ED ;跳则GAME OVER
006D1138|.837D F8 00 cmp dword ptr , 0 ;试炼码是否为0
006D113C|.74 7C je short 006D11BA ;跳则GAME OVER
006D113E|.8B4D F8 mov ecx, dword ptr
006D1141|.8B55 FC mov edx, dword ptr
006D1144|.8BC3 mov eax, ebx
006D1146|.E8 05020000 call 006D1350 ;★算法CALL,跟进★
006D114B|.84C0 test al, al
006D114D|.74 38 je short 006D1187 ;跳则GAME OVER
006D114F|.8B83 EC020000mov eax, dword ptr
006D1155|.8B40 58 mov eax, dword ptr
006D1158|.BA 00800000 mov edx, 8000
006D115D|.E8 BABFD4FF call 0041D11C
006D1162|.BA 7C126D00 mov edx, 006D127C ;注册成功,我们将为您提供更多的专业服务
006D1167|.8B83 EC020000mov eax, dword ptr
006D116D|.E8 F670D6FF call 00438268
006D1172|.BA 5C126D00 mov edx, 006D125C ;关闭
006D1177|.8B83 E4020000mov eax, dword ptr
006D117D|.E8 E670D6FF call 00438268
006D1182|.E9 97000000 jmp 006D121E
006D1187|>8B83 EC020000mov eax, dword ptr
006D118D|.8B40 58 mov eax, dword ptr
006D1190|.BA FF000000 mov edx, 0FF
006D1195|.E8 82BFD4FF call 0041D11C
006D119A|.BA AC126D00 mov edx, 006D12AC ;注册码验证失败
006D119F|.8B83 EC020000mov eax, dword ptr
006D11A5|.E8 BE70D6FF call 00438268
006D11AA|.8B83 E0020000mov eax, dword ptr
006D11B0|.8B10 mov edx, dword ptr
006D11B2|.FF92 B0000000call dword ptr
006D11B8|.EB 64 jmp short 006D121E
006D11BA|>8B83 EC020000mov eax, dword ptr
006D11C0|.8B40 58 mov eax, dword ptr
006D11C3|.BA FF000000 mov edx, 0FF
006D11C8|.E8 4FBFD4FF call 0041D11C
006D11CD|.BA C4126D00 mov edx, 006D12C4 ;注册码必须填写
006D11D2|.8B83 EC020000mov eax, dword ptr
006D11D8|.E8 8B70D6FF call 00438268
006D11DD|.8B83 E0020000mov eax, dword ptr
006D11E3|.8B10 mov edx, dword ptr
006D11E5|.FF92 B0000000call dword ptr
006D11EB|.EB 31 jmp short 006D121E
006D11ED|>8B83 EC020000mov eax, dword ptr
006D11F3|.8B40 58 mov eax, dword ptr
006D11F6|.BA FF000000 mov edx, 0FF
006D11FB|.E8 1CBFD4FF call 0041D11C
006D1200|.BA DC126D00 mov edx, 006D12DC ;公司名称必须填写
006D1205|.8B83 EC020000mov eax, dword ptr
006D120B|.E8 5870D6FF call 00438268
006D1210|.8B83 DC020000mov eax, dword ptr
006D1216|.8B10 mov edx, dword ptr
006D1218|.FF92 B0000000call dword ptr
006D121E|>33C0 xor eax, eax
006D1220|.5A pop edx
006D1221|.59 pop ecx
006D1222|.59 pop ecx
006D1223|.64:8910 mov dword ptr fs:, edx
006D1226|.68 4D126D00 push 006D124D
006D122B|>8D45 EC lea eax, dword ptr
006D122E|.BA 03000000 mov edx, 3
006D1233|.E8 102CD3FF call 00403E48
006D1238|.8D45 F8 lea eax, dword ptr
006D123B|.BA 02000000 mov edx, 2
006D1240|.E8 032CD3FF call 00403E48
006D1245\.C3 retn
006D1246 .^ E9 3926D3FF jmp 00403884
006D124B .^ EB DE jmp short 006D122B
006D124D .5B pop ebx
006D124E .8BE5 mov esp, ebp
006D1250 .5D pop ebp
006D1251 .C3 retn ;挂掉!
跟进:006D1146
006D1350 $55 push ebp ;跟进来到
006D1351 .8BEC mov ebp, esp
006D1353 .51 push ecx
006D1354 .B9 08000000 mov ecx, 8
006D1359 >6A 00 push 0
006D135B .6A 00 push 0
006D135D .49 dec ecx
006D135E .^ 75 F9 jnz short 006D1359
006D1360 .51 push ecx
006D1361 .874D FC xchg dword ptr , ecx
006D1364 .53 push ebx
006D1365 .56 push esi
006D1366 .57 push edi
006D1367 .894D F4 mov dword ptr , ecx
006D136A .8955 F8 mov dword ptr , edx
006D136D .8945 FC mov dword ptr , eax
006D1370 .8B45 F8 mov eax, dword ptr
006D1373 .E8 F02ED3FF call 00404268
006D1378 .8B45 F4 mov eax, dword ptr
006D137B .E8 E82ED3FF call 00404268
006D1380 .33C0 xor eax, eax
006D1382 .55 push ebp
006D1383 .68 72156D00 push 006D1572
006D1388 .64:FF30 push dword ptr fs:
006D138B .64:8920 mov dword ptr fs:, esp
006D138E .33C0 xor eax, eax
006D1390 .55 push ebp
006D1391 .68 F9146D00 push 006D14F9
006D1396 .64:FF30 push dword ptr fs:
006D1399 .64:8920 mov dword ptr fs:, esp
006D139C .A1 34EB7700 mov eax, dword ptr
006D13A1 .8B00 mov eax, dword ptr
006D13A3 .05 6C030000 add eax, 36C
006D13A8 .8B55 F8 mov edx, dword ptr
006D13AB .E8 C82AD3FF call 00403E78 ;获取固定字符串
006D13B0 .8D45 DC lea eax, dword ptr
006D13B3 .B9 8C156D00 mov ecx, 006D158C ;spadger
006D13B8 .8B55 F8 mov edx, dword ptr
006D13BB .E8 402DD3FF call 00404100 ;用户名+固定字符串
006D13C0 .8B55 DC mov edx, dword ptr
006D13C3 .8D45 E0 lea eax, dword ptr
006D13C6 .E8 3932D3FF call 00404604 ;验证是否组合成功(算法CALL)
006D13CB .8B45 E0 mov eax, dword ptr ;UNICODE "KuNgBiMspadger"
006D13CE .8D55 E4 lea edx, dword ptr
006D13D1 .E8 2E56FFFF call 006C6A04 ;算法结果A=LCase(MD5(用户名+固定字符串))
006D13D6 .8B45 E4 mov eax, dword ptr ;UNICODE "a3e0585a9dabdd33d619dd0c19744feb"
006D13D9 .8D55 E8 lea edx, dword ptr
006D13DC .E8 2356FFFF call 006C6A04 ;算法结果B=LCase(MD5(算法结果A))
006D13E1 .8B55 E8 mov edx, dword ptr ;ASCII "c74b4952dec5b0c61a77a2754beacd87"
006D13E4 .8D45 F0 lea eax, dword ptr
006D13E7 .E8 902CD3FF call 0040407C ;从算法结果B中开始重新组合注册码
006D13EC .8D45 D8 lea eax, dword ptr
006D13EF .50 push eax
006D13F0 .B9 05000000 mov ecx, 5 ;取5位
006D13F5 .33D2 xor edx, edx ;从首位取
006D13F7 .8B45 F0 mov eax, dword ptr ;ASCII "c74b4952dec5b0c61a77a2754beacd87"
006D13FA .E8 BD2ED3FF call 004042BC ;取位作为★注册码A段★
006D13FF .FF75 D8 push dword ptr ;ASCII "c74b4"
006D1402 .68 9C156D00 push 006D159C ;取“-”并连接
006D1407 .8D45 D4 lea eax, dword ptr
006D140A .50 push eax
006D140B .B9 05000000 mov ecx, 5 ;取5位
006D1410 .BA 05000000 mov edx, 5 ;从第5位取
006D1415 .8B45 F0 mov eax, dword ptr ;ASCII "c74b4952dec5b0c61a77a2754beacd87"
006D1418 .E8 9F2ED3FF call 004042BC ;取位作为★注册码B段★
006D141D .FF75 D4 push dword ptr ;ASCII "4952d"
006D1420 .68 9C156D00 push 006D159C ;取“-”并连接
006D1425 .8D45 D0 lea eax, dword ptr
006D1428 .50 push eax
006D1429 .B9 05000000 mov ecx, 5 ;取5位
006D142E .BA 0A000000 mov edx, 0A ;从第10位取
006D1433 .8B45 F0 mov eax, dword ptr ;ASCII "c74b4952dec5b0c61a77a2754beacd87"
006D1436 .E8 812ED3FF call 004042BC ;取位作为★注册码C段★
006D143B .FF75 D0 push dword ptr ;ASCII "ec5b0"
006D143E .68 9C156D00 push 006D159C ;取“-”并连接
006D1443 .8D45 CC lea eax, dword ptr
006D1446 .50 push eax
006D1447 .B9 05000000 mov ecx, 5 ;取5位
006D144C .BA 0F000000 mov edx, 0F ;从第15位取
006D1451 .8B45 F0 mov eax, dword ptr ;ASCII "c74b4952dec5b0c61a77a2754beacd87"
006D1454 .E8 632ED3FF call 004042BC ;取位作为★注册码D段★
006D1459 .FF75 CC push dword ptr ;ASCII "c61a7"
006D145C .8D45 EC lea eax, dword ptr
006D145F .BA 07000000 mov edx, 7
006D1464 .E8 0B2DD3FF call 00404174
006D1469 .8D45 C4 lea eax, dword ptr
006D146C .8B55 F4 mov edx, dword ptr
006D146F .E8 9031D3FF call 00404604
006D1474 .8B45 C4 mov eax, dword ptr
006D1477 .8D55 C8 lea edx, dword ptr
006D147A .E8 8555FFFF call 006C6A04
006D147F .8B45 C8 mov eax, dword ptr
006D1482 .50 push eax
006D1483 .8D45 BC lea eax, dword ptr
006D1486 .8B55 EC mov edx, dword ptr
006D1489 .E8 7631D3FF call 00404604 ;重新组合后的注册码(真码)
006D148E .8B45 BC mov eax, dword ptr ;UNICODE "c74b4-4952d-ec5b0-c61a7"
006D1491 .8D55 C0 lea edx, dword ptr
006D1494 .E8 6B55FFFF call 006C6A04 ;LCase(MD5(真码))
006D1499 .8B55 C0 mov edx, dword ptr ;UNICODE "b8eb02c9081b4b60a410bb9ebf41e1f2"
006D149C .58 pop eax ;UNICODE "c220732ec07b22455c4761dcc7f924f9"
006D149D .E8 3632D3FF call 004046D8 ;验证不等则挂
006D14A2 .75 3F jnz short 006D14E3 ;跳则GAME OVER
006D14A4 .68 A8156D00 push 006D15A8 ;update info_shop set s_usetimes=88,s_regname="
006D14A9 .FF75 F8 push dword ptr
006D14AC .68 E0156D00 push 006D15E0 ;",s_regno="
006D14B1 .FF75 F4 push dword ptr
006D14B4 .68 F4156D00 push 006D15F4 ;"
006D14B9 .8D45 B8 lea eax, dword ptr
006D14BC .BA 05000000 mov edx, 5
006D14C1 .E8 AE2CD3FF call 00404174
006D14C6 .8B55 B8 mov edx, dword ptr
006D14C9 .A1 34EB7700 mov eax, dword ptr
006D14CE .8B00 mov eax, dword ptr
006D14D0 .E8 23660800 call 00757AF8
006D14D5 .8B45 FC mov eax, dword ptr
006D14D8 .C680 F4020000 >mov byte ptr , 1
006D14DF .B3 01 mov bl, 1
006D14E1 .EB 0C jmp short 006D14EF
006D14E3 >8B45 FC mov eax, dword ptr
006D14E6 .C680 F4020000 >mov byte ptr , 0
006D14ED .33DB xor ebx, ebx
006D14EF >33C0 xor eax, eax
006D14F1 .5A pop edx
006D14F2 .59 pop ecx
006D14F3 .59 pop ecx
006D14F4 .64:8910 mov dword ptr fs:, edx
006D14F7 .EB 2F jmp short 006D1528
006D14F9 .^ E9 D220D3FF jmp 004035D0
006D14FE .E8 8DBDD3FF call 0040D290
006D1503 .8B50 04 mov edx, dword ptr
006D1506 .A1 34EB7700 mov eax, dword ptr
006D150B .8B00 mov eax, dword ptr
006D150D .B9 00166D00 mov ecx, 006D1600 ;请输入用户名和密码,点击登录
006D1512 .E8 89630800 call 007578A0
006D1517 .8B45 FC mov eax, dword ptr
006D151A .C680 F4020000 >mov byte ptr , 0
006D1521 .33DB xor ebx, ebx
006D1523 .E8 0424D3FF call 0040392C
006D1528 >33C0 xor eax, eax
006D152A .5A pop edx
006D152B .59 pop ecx
006D152C .59 pop ecx
006D152D .64:8910 mov dword ptr fs:, edx
006D1530 .68 79156D00 push 006D1579
006D1535 >8D45 B8 lea eax, dword ptr
006D1538 .E8 E728D3FF call 00403E24
006D153D .8D45 BC lea eax, dword ptr
006D1540 .BA 04000000 mov edx, 4
006D1545 .E8 5E2FD3FF call 004044A8
006D154A .8D45 CC lea eax, dword ptr
006D154D .BA 05000000 mov edx, 5
006D1552 .E8 F128D3FF call 00403E48
006D1557 .8D45 E0 lea eax, dword ptr
006D155A .BA 03000000 mov edx, 3
006D155F .E8 442FD3FF call 004044A8
006D1564 .8D45 EC lea eax, dword ptr
006D1567 .BA 04000000 mov edx, 4
006D156C .E8 D728D3FF call 00403E48
006D1571 .C3 retn
006D1572 .^ E9 0D23D3FF jmp 00403884
006D1577 .^ EB BC jmp short 006D1535
006D1579 .8BC3 mov eax, ebx
006D157B .5F pop edi
006D157C .5E pop esi
006D157D .5B pop ebx
006D157E .8BE5 mov esp, ebp
006D1580 .5D pop ebp
006D1581 .C3 retn ;返回验证信息
跟进“call 00404604”
006C6A04/$55 push ebp ;算法模块库
006C6A05|.8BEC mov ebp, esp
006C6A07|.83C4 E4 add esp, -1C
006C6A0A|.53 push ebx
006C6A0B|.33C9 xor ecx, ecx
006C6A0D|.894D F8 mov dword ptr , ecx
006C6A10|.894D E4 mov dword ptr , ecx
006C6A13|.8BDA mov ebx, edx
006C6A15|.8945 FC mov dword ptr , eax
006C6A18|.8D45 FC lea eax, dword ptr
006C6A1B|.E8 34DED3FF call 00404854
006C6A20|.33C0 xor eax, eax
006C6A22|.55 push ebp
006C6A23|.68 836A6C00 push 006C6A83
006C6A28|.64:FF30 push dword ptr fs:
006C6A2B|.64:8920 mov dword ptr fs:, esp
006C6A2E|.8D45 E4 lea eax, dword ptr
006C6A31|.8B55 FC mov edx, dword ptr
006C6A34|.E8 43D6D3FF call 0040407C
006C6A39|.8B45 E4 mov eax, dword ptr
006C6A3C|.50 push eax
006C6A3D|.8D45 E8 lea eax, dword ptr
006C6A40|.50 push eax
006C6A41|.E8 9EFEFFFF call 006C68E4
006C6A46|.8D45 E8 lea eax, dword ptr
006C6A49|.50 push eax
006C6A4A|.8D45 F8 lea eax, dword ptr
006C6A4D|.50 push eax
006C6A4E|.E8 01FFFFFF call 006C6954 ;★调用算法模块,跟进★
006C6A53|.8B55 F8 mov edx, dword ptr ;计算结果
006C6A56|.8BC3 mov eax, ebx
006C6A58|.E8 A7DBD3FF call 00404604
006C6A5D|.33C0 xor eax, eax
006C6A5F|.5A pop edx
006C6A60|.59 pop ecx
006C6A61|.59 pop ecx
006C6A62|.64:8910 mov dword ptr fs:, edx
006C6A65|.68 8A6A6C00 push 006C6A8A
006C6A6A|>8D45 E4 lea eax, dword ptr
006C6A6D|.E8 B2D3D3FF call 00403E24
006C6A72|.8D45 F8 lea eax, dword ptr
006C6A75|.E8 AAD3D3FF call 00403E24
006C6A7A|.8D45 FC lea eax, dword ptr
006C6A7D|.E8 0EDAD3FF call 00404490
006C6A82\.C3 retn
006C6A83 .^ E9 FCCDD3FF jmp 00403884
006C6A88 .^ EB E0 jmp short 006C6A6A
006C6A8A .5B pop ebx
006C6A8B .8BE5 mov esp, ebp
006C6A8D .5D pop ebp
006C6A8E .C3 retn ;计算结果返回上一级
跟进:006C6A4E
006C6954/$55 push ebp ;调用MD5算法模块
006C6955|.8BEC mov ebp, esp
006C6957|.83C4 E8 add esp, -18
006C695A|.53 push ebx
006C695B|.56 push esi
006C695C|.57 push edi
006C695D|.33C0 xor eax, eax
006C695F|.8945 EC mov dword ptr , eax
006C6962|.8945 E8 mov dword ptr , eax
006C6965|.8B75 0C mov esi, dword ptr
006C6968|.8D7D F0 lea edi, dword ptr
006C696B|.B9 04000000 mov ecx, 4
006C6970|.F3:A5 rep movs dword ptr es:, d>
006C6972|.8B7D 08 mov edi, dword ptr
006C6975|.33C0 xor eax, eax
006C6977|.55 push ebp
006C6978|.68 F4696C00 push 006C69F4
006C697D|.64:FF30 push dword ptr fs:
006C6980|.64:8920 mov dword ptr fs:, esp
006C6983|.8BC7 mov eax, edi
006C6985|.E8 9AD4D3FF call 00403E24
006C698A|.B3 10 mov bl, 10
006C698C|.8D75 F0 lea esi, dword ptr
006C698F|>FF37 /push dword ptr
006C6991|.8D45 EC |lea eax, dword ptr
006C6994|.33D2 |xor edx, edx
006C6996|.8A16 |mov dl, byte ptr
006C6998|.C1EA 04 |shr edx, 4
006C699B|.83E2 0F |and edx, 0F
006C699E|.8A92 B0E57700|mov dl, byte ptr
006C69A4|.E8 23D6D3FF |call 00403FCC
006C69A9|.FF75 EC |push dword ptr
006C69AC|.8D45 E8 |lea eax, dword ptr
006C69AF|.8A16 |mov dl, byte ptr
006C69B1|.80E2 0F |and dl, 0F
006C69B4|.81E2 FF000000|and edx, 0FF
006C69BA|.8A92 B0E57700|mov dl, byte ptr
006C69C0|.E8 07D6D3FF |call 00403FCC
006C69C5|.FF75 E8 |push dword ptr
006C69C8|.8BC7 |mov eax, edi
006C69CA|.BA 03000000 |mov edx, 3
006C69CF|.E8 A0D7D3FF |call 00404174
006C69D4|.46 |inc esi
006C69D5|.FECB |dec bl
006C69D7|.^ 75 B6 \jnz short 006C698F
006C69D9|.33C0 xor eax, eax
006C69DB|.5A pop edx
006C69DC|.59 pop ecx
006C69DD|.59 pop ecx
006C69DE|.64:8910 mov dword ptr fs:, edx
006C69E1|.68 FB696C00 push 006C69FB
006C69E6|>8D45 E8 lea eax, dword ptr
006C69E9|.BA 02000000 mov edx, 2
006C69EE|.E8 55D4D3FF call 00403E48
006C69F3\.C3 retn
006C69F4 .^ E9 8BCED3FF jmp 00403884
006C69F9 .^ EB EB jmp short 006C69E6
006C69FB .5F pop edi
006C69FC .5E pop esi
006C69FD .5B pop ebx
006C69FE .8BE5 mov esp, ebp
006C6A00 .5D pop ebp
006C6A01 .C2 0800 retn 8 ;计算完毕返回
【算法总结】
密码表计算式:
LCase(MD5(LCase(MD5(用户名+“spadger”))))
注册码段计算式:
A:Mid(密码表,5)
B:Mid(密码表,5,5)
C:Mid(密码表,10,5)
D:Mid(密码表,15,5)
注册码组合方式:A-B-C-D
----------------------------------------------------------------------------------------------
【经验总结】
不总结了。。。上面都能看懂吧`````这次注册机就不写了`````需要的自己写吧`````
感谢qIwEiXuE、loveboom、闪电狼、AvAtEr{RES}、逐浪、夜凉如水及所有D.C.Team朋友们陪我闲聊!!
----------------------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年03月13日 PM 07:37:57 很好的分析,学习了。
页:
[1]