binbinbin 发表于 2006-12-10 23:44:29

简单的好学友之幼教管理系统 2.2 Plus 注册算法

【破文标题】好学友之幼教管理系统 2.2 Plus 注册算法
【破文作者】XXNB
【作者邮箱】
【作者主页】http://free.ys168.com/?binbinbin7456
【破解工具】OD
【破解平台】xpsp2
【软件名称】好学友之幼教管理系统 2.2 Plus
【软件大小】4727KB
【原版下载】http://gx.onlinedown.net/soft/3164.htm
【保护方式】
【软件简介】这是一套通用性很强的幼教管理信息系统,国内首创幼教考勤接送功能,操作方便快捷,最新版本新增教师考勤功能;完善幼儿接

送功能,更新幼儿接送硬件设备,支持串口、TCP、无线多种通讯方式,应用场合更方便灵活,其中无线通讯功能,实现幼儿园无线网络信息管

理。幼儿接送功能,配合硬件接送刷卡机,操作方便快捷,使幼儿接送更安全。收费功能模块提供了完备的幼教档案管理功能,使得人员增加

、调动、删除,幼教报表打印等异常的快捷方便。软件同时提供多种辅助工具及系统安全维护系统,用户还可以设定软件操作人员及操作权限

。软件还自带的幼教资源库让你了解先进的幼教管理理念,美观大方的界面也会使你尽情感受到工作的乐趣!新版本增加数据导出,数据导出

可以让库内数据轻松输出到各种格式,数据查询分析等功能,软件提供数据库异常用户解决方案,可以让你放心安全的使用。
【破解声明】向大侠们学习!!!只为学习!请尊重作者的劳动成功!
------------------------------------------------------------------------
【破解过程】

今天发现了个非常简单的。

首先,UPX壳。脱了它,结果发现有问题的。所以,干脆我就直接带壳了。用MessageBoxA断点可以断下。查看堆栈可以得到:

0012F140   008B15A3/CALL 到 MessageBoxA 来自 KMS.008B159E      /////////我们直接Ctrl+G,到008B159E。然后就可以断下了
0012F144   000D050A|hOwner = 000D050A ('软件注册信息',class='TfrmRegist')
0012F148   008B1640|Text = ""B6,"?,B2,"",BB,"起?,AC,"您输入的",D7,"",A2,"",B2,"崧胗形螅",A1," "
0012F14C   008B1638|Title = "警",B8,"?
0012F150   00000030\Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0012F154   0012F49C指向下一个 SEH 记录的指针
0012F158   008B15BESE处理程序
0012F15C   0012F16C
0012F160   014C1210
0012F164   0148866CASCII "3JT28YY6"                ;机器码,我的硬盘序列号
0012F168   014B4E04ASCII "hgghk44545"            ;这个是我输入的假码



1、

008B14FC    55            push    ebp
008B14FD    8BEC            mov   ebp, esp
008B14FF    6A 00         push    0
008B1501    6A 00         push    0
008B1503    53            push    ebx
008B1504    8BD8            mov   ebx, eax
008B1506    33C0            xor   eax, eax
008B1508    55            push    ebp
008B1509    68 BE158B00   push    008B15BE
008B150E    64:FF30         push    dword ptr fs:
008B1511    64:8920         mov   dword ptr fs:, esp
008B1514    8BC3            mov   eax, ebx
008B1516    E8 4D010000   call    008B1668
008B151B    8D55 FC         lea   edx, dword ptr
008B151E    8B83 FC020000   mov   eax, dword ptr
008B1524    E8 4F8EBAFF   call    0045A378
008B1529    8B45 FC         mov   eax, dword ptr          ; 取得假码
008B152C    50            push    eax
008B152D    8D55 F8         lea   edx, dword ptr
008B1530    8B83 F8020000   mov   eax, dword ptr
008B1536    E8 3D8EBAFF   call    0045A378
008B153B    8B45 F8         mov   eax, dword ptr          ; 取得机器码
008B153E    5A            pop   edx
008B153F    E8 90F7FFFF   call    008B0CD4                         ; 算法call    进去
008B1544    84C0            test    al, al                           ; 标志位
008B1546    74 42         je      short 008B158A                   ; 关键跳
008B1548    E8 FBF7FFFF   call    008B0D48
008B154D    33D2            xor   edx, edx
008B154F    8B83 F0020000   mov   eax, dword ptr
008B1555    8B08            mov   ecx, dword ptr
008B1557    FF51 64         call    dword ptr
008B155A    33D2            xor   edx, edx
008B155C    8B83 FC020000   mov   eax, dword ptr
008B1562    8B08            mov   ecx, dword ptr
008B1564    FF51 64         call    dword ptr
008B1567    BA D4158B00   mov   edx, 008B15D4
008B156C    8B83 08030000   mov   eax, dword ptr
008B1572    E8 318EBAFF   call    0045A3A8
008B1577    A1 E0208E00   mov   eax, dword ptr
008B157C    8B00            mov   eax, dword ptr
008B157E    BA 18168B00   mov   edx, 008B1618
008B1583    E8 208EBAFF   call    0045A3A8
008B1588    EB 19         jmp   short 008B15A3
008B158A    6A 30         push    30
008B158C    68 38168B00   push    008B1638
008B1591    68 40168B00   push    008B1640
008B1596    8BC3            mov   eax, ebx
008B1598    E8 FFF7BAFF   call    00460D9C
008B159D    50            push    eax                              ; 这里弹出错误信息框
008B159E    E8 856BB5FF   call    00408128                         ; jmp 到 USER32.MessageBoxA    ////返回到这个地方
008B15A3    33C0            xor   eax, eax
008B15A5    5A            pop   edx
008B15A6    59            pop   ecx
008B15A7    59            pop   ecx
008B15A8    64:8910         mov   dword ptr fs:, edx
008B15AB    68 C5158B00   push    008B15C5                         ; ASCII "?
008B15B0    8D45 F8         lea   eax, dword ptr
008B15B3    BA 02000000   mov   edx, 2
008B15B8    E8 F332B5FF   call    004048B0
008B15BD    C3            retn


2、跟进call    008B0CD4:

008B0CD4    55            push    ebp
008B0CD5    8BEC            mov   ebp, esp
008B0CD7    83C4 F4         add   esp, -0C
008B0CDA    53            push    ebx
008B0CDB    33C9            xor   ecx, ecx
008B0CDD    894D F4         mov   dword ptr , ecx
008B0CE0    8955 F8         mov   dword ptr , edx         ; 假码
008B0CE3    8945 FC         mov   dword ptr , eax         ; 机器码
008B0CE6    8B45 FC         mov   eax, dword ptr
008B0CE9    E8 4E40B5FF   call    00404D3C
008B0CEE    8B45 F8         mov   eax, dword ptr
008B0CF1    E8 4640B5FF   call    00404D3C
008B0CF6    33C0            xor   eax, eax
008B0CF8    55            push    ebp
008B0CF9    68 380D8B00   push    008B0D38
008B0CFE    64:FF30         push    dword ptr fs:
008B0D01    64:8920         mov   dword ptr fs:, esp
008B0D04    8D55 F4         lea   edx, dword ptr
008B0D07    8B45 FC         mov   eax, dword ptr          ; 机器码到eax。、准备运算
008B0D0A    E8 9DFEFFFF   call    008B0BAC                         ; 这个算法运算,跟进《《《《《《《--
008B0D0F    8B45 F4         mov   eax, dword ptr          ; 真码
008B0D12    8B55 F8         mov   edx, dword ptr          ; 假码
008B0D15    E8 7E3FB5FF   call    00404C98                         ; 跟进去是经典比较函数
008B0D1A    0F94C3          sete    bl
008B0D1D    33C0            xor   eax, eax
008B0D1F    5A            pop   edx
008B0D20    59            pop   ecx
008B0D21    59            pop   ecx
008B0D22    64:8910         mov   dword ptr fs:, edx
008B0D25    68 3F0D8B00   push    008B0D3F
008B0D2A    8D45 F4         lea   eax, dword ptr
008B0D2D    BA 03000000   mov   edx, 3
008B0D32    E8 793BB5FF   call    004048B0
008B0D37    C3            retn

3、跟进call    008B0BAC:

008B0BAC    55            push    ebp
008B0BAD    8BEC            mov   ebp, esp
008B0BAF    83C4 F8         add   esp, -8
008B0BB2    53            push    ebx
008B0BB3    33C9            xor   ecx, ecx
008B0BB5    894D F8         mov   dword ptr , ecx
008B0BB8    8BDA            mov   ebx, edx
008B0BBA    8945 FC         mov   dword ptr , eax
008B0BBD    8B45 FC         mov   eax, dword ptr
008B0BC0    E8 7741B5FF   call    00404D3C
008B0BC5    33C0            xor   eax, eax
008B0BC7    55            push    ebp
008B0BC8    68 1A0C8B00   push    008B0C1A
008B0BCD    64:FF30         push    dword ptr fs:
008B0BD0    64:8920         mov   dword ptr fs:, esp
008B0BD3    8D45 F8         lea   eax, dword ptr
008B0BD6    B9 300C8B00   mov   ecx, 008B0C30                  ; 固定字符串(ASCII "9220")
008B0BDB    8B55 FC         mov   edx, dword ptr          ; 机器码
008B0BDE    E8 BD3FB5FF   call    00404BA0                         ; 连接函数
008B0BE3    8B45 F8         mov   eax, dword ptr          ; 机器码连接9220后的字符串
008B0BE6    8BD3            mov   edx, ebx
008B0BE8    E8 57C4FDFF   call    0088D044                         ; 这个进去。居然发现是MD5运算
008B0BED    53            push    ebx
008B0BEE    8B03            mov   eax, dword ptr              ; 这里可以看到信息框里那串字符串的MD5值了
008B0BF0    B9 14000000   mov   ecx, 14                        ; 取14H(20)位
008B0BF5    BA 01000000   mov   edx, 1                           ; 从第一位开始取
008B0BFA    E8 AD41B5FF   call    00404DAC                         ; 取字符串函数
008B0BFF    33C0            xor   eax, eax
008B0C01    5A            pop   edx
008B0C02    59            pop   ecx
008B0C03    59            pop   ecx
008B0C04    64:8910         mov   dword ptr fs:, edx
008B0C07    68 210C8B00   push    008B0C21                         ; (ASCII "?)
008B0C0C    8D45 F8         lea   eax, dword ptr
008B0C0F    BA 02000000   mov   edx, 2
008B0C14    E8 973CB5FF   call    004048B0
008B0C19    C3            retn



------------------------------------------------------------------------
【破解总结】
------------------------------------------------------------------------

简单的MD5加密算法。直接取得用户的机器码(硬盘序列号)和固定字符串“9220”连接,然后求连接字符串的MD5值。最后取前20位作为真正

的注册码。

ZHOU2X 发表于 2006-12-11 13:00:58

学习,收藏!!支持!!!!

千里之外 发表于 2007-5-26 22:04:00

刚刚按楼主的思路分析了下 很有收获不过那个MD5要转化为大写字母才可以还有楼主如何看出是MD5计算了等待回答 谢谢先

MayDay 发表于 2007-5-27 05:29:01

原帖由 千里之外 于 2007-5-26 22:04 发表 https://www.chinapyg.com/images/common/back.gif
刚刚按楼主的思路分析了下 很有收获不过那个MD5要转化为大写字母才可以还有楼主如何看出是MD5计算了等待回答 谢谢先

有插件的:lol:

小子贼野 发表于 2007-6-1 18:44:06

初学算法,还是有太多不明白的地方,郁闷ing

bhcjl 发表于 2007-6-3 08:39:18

学习一下,下载中
页: [1]
查看完整版本: 简单的好学友之幼教管理系统 2.2 Plus 注册算法