飘云 发表于 2005-9-18 22:38:33

[PYG]算法分析入门第十四课

【破文标题】算法分析入门第十四课
【破文作者】飘云
【作者主页】https://www.chinapyg.com
【破解平台】WinXp
【破解工具】PEiD0.93、OD
【作者邮箱】[email protected]
【软件名称】锦航物业收费管理软件 1.0
【软件大小】1805KB
【原版下载】http://nj.onlinedown.net/soft/42454.htm
【软件简介】锦航物业收费管理系统是一套物业公司对业主收取电费、水费、维修费、清洁卫生费、治安

管理费等各种物业收费项目进行全面管理的系统。
  根据物业管理的要求,用户可以自行设定各种收费项目和计算公式,针对每个业主设定不同收费项目

及收费标准,可以复制上月的收费项目及数据到本月进行修改。该系统操作简单,功能齐全,对各项收费

项目进行分类统计与综合查询,能够打印出缴款单和各种报表,为物业收费管理提供了一个现代化的管理

手段,保持了各种数据的完整性、及时性和正确性,使企业完善了管理体系提高了管理水平。
【破解过程】用PEID0.93探测,本软件无壳,Borland Delphi 6.0 - 7.0 编写,OD载入程序运行

我的试探信息:
机器码:JWBDNCY24H
注册码:789456123

用OD汉字插件,找到如下关键点:
005EB4CC    53                push ebx                        ;在此中断
005EB4CD    8945 FC         mov dword ptr ss:,eax
005EB4D0    33C0            xor eax,eax
005EB4D2    55                push ebp
005EB4D3    68 25B65E00       push Main.005EB625
005EB4D8    64:FF30         push dword ptr fs:
005EB4DB    64:8920         mov dword ptr fs:,esp
005EB4DE    8D45 F4         lea eax,dword ptr ss:
005EB4E1    E8 F2F9FFFF       call Main.005EAED8
005EB4E6    8D45 EC         lea eax,dword ptr ss:      ; 机器码
005EB4E9    B9 3CB65E00       mov ecx,Main.005EB63C            ; ASCII "wygl"
005EB4EE    8B55 F4         mov edx,dword ptr ss:
005EB4F1    E8 EA95E1FF       call Main.00404AE0               ; 连接机器码和"wygl"   我们称它为特征码
005EB4F6    8B45 EC         mov eax,dword ptr ss:
005EB4F9    8D55 F0         lea edx,dword ptr ss:
005EB4FC    E8 AFFAFFFF       call Main.005EAFB0               ; 算法call 跟进!
005EB501    8D55 E4         lea edx,dword ptr ss:
005EB504    8B45 FC         mov eax,dword ptr ss:
005EB507    8B80 08030000   mov eax,dword ptr ds:
005EB50D    E8 5E58E6FF       call Main.00450D70
005EB512    8B45 E4         mov eax,dword ptr ss:
005EB515    8D55 E8         lea edx,dword ptr ss:
005EB518    E8 8BDFE1FF       call Main.004094A8
005EB51D    8B45 E8         mov eax,dword ptr ss:      ; 以下经典部分 哈
005EB520    8B55 F0         mov edx,dword ptr ss:
005EB523    E8 B096E1FF       call Main.00404BD8               ; 这里可以做内存注册机
005EB528    74 2E             je short Main.005EB558             ; 关键跳转,爆破点
005EB52A    6A 30             push 30
005EB52C    B9 44B65E00       mov ecx,Main.005EB644
005EB531    BA 4CB65E00       mov edx,Main.005EB64C
005EB536    A1 78F16100       mov eax,dword ptr ds:
005EB53B    8B00            mov eax,dword ptr ds:
005EB53D    E8 FA6DE8FF       call Main.0047233C
005EB542    8B45 FC         mov eax,dword ptr ss:
005EB545    8B80 08030000   mov eax,dword ptr ds:
005EB54B    8B10            mov edx,dword ptr ds:
005EB54D    FF92 C0000000   call dword ptr ds:
005EB553    E9 AA000000       jmp Main.005EB602
005EB558    8B45 F0         mov eax,dword ptr ss:
005EB55B    E8 5CE4E1FF       call Main.004099BC
005EB560    8BD8            mov ebx,eax
005EB562    81EB B54A0506   sub ebx,6054AB5
005EB568    33C0            xor eax,eax
005EB56A    55                push ebp
005EB56B    68 DBB55E00       push Main.005EB5DB
005EB570    64:FF30         push dword ptr fs:
005EB573    64:8920         mov dword ptr fs:,esp
005EB576    B2 01             mov dl,1
005EB578    A1 34C74B00       mov eax,dword ptr ds:
005EB57D    E8 1E13EDFF       call Main.004BC8A0               ; 下面开始向注册表写信息
005EB582    8945 F8         mov dword ptr ss:,eax
005EB585    BA 02000080       mov edx,80000002
005EB58A    8B45 F8         mov eax,dword ptr ss:
005EB58D    E8 EA13EDFF       call Main.004BC97C
005EB592    BA 70B65E00       mov edx,Main.005EB670            ; ASCII
"Software\Microsoft\Windows\CurrentVersion\Mark\wygl"
005EB597    8B45 F8         mov eax,dword ptr ss:
005EB59A    E8 4514EDFF       call Main.004BC9E4
005EB59F    B1 01             mov cl,1
005EB5A1    BA 70B65E00       mov edx,Main.005EB670            ; ASCII
"Software\Microsoft\Windows\CurrentVersion\Mark\wygl"
005EB5A6    8B45 F8         mov eax,dword ptr ss:
005EB5A9    E8 1215EDFF       call Main.004BCAC0
005EB5AE    8BCB            mov ecx,ebx
005EB5B0    BA ACB65E00       mov edx,Main.005EB6AC            ; ASCII "reg_id"
005EB5B5    8B45 F8         mov eax,dword ptr ss:
005EB5B8    E8 4317EDFF       call Main.004BCD00
005EB5BD    33C0            xor eax,eax
005EB5BF    5A                pop edx
005EB5C0    59                pop ecx
005EB5C1    59                pop ecx
005EB5C2    64:8910         mov dword ptr fs:,edx
005EB5C5    68 E2B55E00       push Main.005EB5E2
005EB5CA    8B45 F8         mov eax,dword ptr ss:
005EB5CD    E8 7A13EDFF       call Main.004BC94C
005EB5D2    8B45 F8         mov eax,dword ptr ss:
005EB5D5    E8 9683E1FF       call Main.00403970
005EB5DA    C3                retn

下面是算法:
****************************************call 005EAFB0:***********************************
005EAFB6    56                push esi
005EAFB7    33C9            xor ecx,ecx
005EAFB9    894D F4         mov dword ptr ss:,ecx
005EAFE8    B8 01000000       mov eax,1                        ; 初始化eax=1
005EAFED    8B4D FC         mov ecx,dword ptr ss:       ; 特征码
005EAFF0    8A4C01 FF         mov cl,byte ptr ds:   ; 逐位取ascii
005EAFF4    80F1 57         xor cl,57                        ; xor 57
005EAFF7    81E1 FF000000   and ecx,0FF
005EAFFD    69C9 6C030000   imul ecx,ecx,36C                   ; 乘以36c
005EB003    0FAFC8            imul ecx,eax                     ; 乘以当前字符所在的位置
005EB006    03F1            add esi,ecx                        ; 累加到esi
005EB008    40                inc eax                            ; eax+1 指向下特征码一位
005EB009    4A                dec edx                            ; edx-1特征码位数减1
005EB00A^ 75 E1             jnz short Main.005EAFED            ; 循环运算
005EB00C    8D55 F4         lea edx,dword ptr ss:
005EB00F    8BC6            mov eax,esi
005EB011    E8 06E9E1FF       call Main.0040991C
005EB016    8B45 F4         mov eax,dword ptr ss:
005EB019    E8 769AE1FF       call Main.00404A94
005EB01E    83F8 07         cmp eax,7
005EB021    7F 0C             jg short Main.005EB02F             ; 大于7位的处理(具体处理情况,请根据跳转路径查对)
005EB023    74 3B             je short Main.005EB060             ; 等于7位的处理
005EB025    83E8 05         sub eax,5
005EB028    74 12             je short Main.005EB03C             ; 等于5位的处理
005EB02A    48                dec eax
005EB02B    74 21             je short Main.005EB04E             ; 等于6位的处理
005EB02D    EB 62             jmp short Main.005EB091
005EB02F    83E8 08         sub eax,8                        ; eax-8
005EB032    74 3E             je short Main.005EB072             ; 如果为8位则跳
005EB034    48                dec eax                            ; eax-1
005EB035    83E8 5C         sub eax,5C                         ; eax-5c
005EB038    72 4A             jb short Main.005EB084             ; 若小于则跳,当然跳咯,比5C(92)大的很少吧?
005EB03A    EB 55             jmp short Main.005EB091
005EB03C    8D45 F4         lea eax,dword ptr ss:
005EB03F    8B4D F4         mov ecx,dword ptr ss:
005EB042    BA DCB05E00       mov edx,Main.005EB0DC            ; ASCII "8761"
005EB047    E8 949AE1FF       call Main.00404AE0               ; 等于5位就在前面加上"8761"
005EB04C    EB 50             jmp short Main.005EB09E
005EB04E    8D45 F4         lea eax,dword ptr ss:
005EB051    8B4D F4         mov ecx,dword ptr ss:
005EB054    BA ECB05E00       mov edx,Main.005EB0EC            ; ASCII "876"
005EB059    E8 829AE1FF       call Main.00404AE0               ; 等于6位就在前面加上"876"
005EB05E    EB 3E             jmp short Main.005EB09E
005EB060    8D45 F4         lea eax,dword ptr ss:
005EB063    8B4D F4         mov ecx,dword ptr ss:
005EB066    BA F8B05E00       mov edx,Main.005EB0F8            ; ASCII "87"
005EB06B    E8 709AE1FF       call Main.00404AE0               ; 等于7位就在前面加"87"
005EB070    EB 2C             jmp short Main.005EB09E
005EB072    8D45 F4         lea eax,dword ptr ss:
005EB075    8B4D F4         mov ecx,dword ptr ss:
005EB078    BA 04B15E00       mov edx,Main.005EB104            ; ASII"8"
005EB07D    E8 5E9AE1FF       call Main.00404AE0               ; 等于8位就在前面加"8"
005EB082    EB 1A             jmp short Main.005EB09E
005EB084    8D45 F4         lea eax,dword ptr ss:
005EB087    8B55 F4         mov edx,dword ptr ss:
005EB08A    E8 E597E1FF       call Main.00404874               ; 直接输出当前字符串作为注册码
005EB08F    EB 0D             jmp short Main.005EB09E
005EB091    8D45 F4         lea eax,dword ptr ss:
005EB094    BA 10B15E00       mov edx,Main.005EB110            ; ASCII "333543469"
005EB099    E8 D697E1FF       call Main.00404874               ; 否则用333543469代替,作为注册码
005EB09E    8B45 F8         mov eax,dword ptr ss:
005EB0A1    8B55 F4         mov edx,dword ptr ss:
005EB0A4    E8 8797E1FF       call Main.00404830
005EB0A9    33C0            xor eax,eax
005EB0AB    5A                pop edx
005EB0AC    59                pop ecx
005EB0AD    59                pop ecx
005EB0AE    64:8910         mov dword ptr fs:,edx
005EB0B1    68 CEB05E00       push Main.005EB0CE
005EB0B6    8D45 F4         lea eax,dword ptr ss:
005EB0B9    E8 1E97E1FF       call Main.004047DC
005EB0BE    8D45 FC         lea eax,dword ptr ss:
005EB0C1    E8 1697E1FF       call Main.004047DC
005EB0C6    C3                retn

【算法总结】机器码 & wygl然后进行循环运算,得出的结果转换成10进制,然后判断位数,根据不同的位数来选择不同的处理方式。最终的结果就是注册码!
例如我的:
机器码:
机器码:JWBDNCY24H
注册码:874269624
【注册机】 论坛有下载
附:
注册信息保存在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Mark\wygl删除后可以继续研究
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

快雪时晴 发表于 2005-9-18 23:47:57

学习了,
下课了,
盼第十五课

zhupf 发表于 2005-9-19 09:21:52

冷血书生 发表于 2005-9-19 14:43:20

晕`

我发了才知道飘云老大也发了!

狂晕~~

yijun 发表于 2005-9-23 18:15:14

支持啊~

xingbing 发表于 2005-9-26 19:46:50

支持,这里是学习的好地方。

Iceman 发表于 2005-11-4 11:45:48

好好学习。

lzq1973 发表于 2005-12-29 15:30:19

每看一次感受到不同

wzwgp 发表于 2006-1-14 10:44:38

第十四课是不是有二篇?

fanxun001 发表于 2006-3-30 02:54:41

就是啊.为什么有两个十四课?
https://www.chinapyg.com/viewthread.php?tid=2387&extra=page%3D1
页: [1] 2
查看完整版本: [PYG]算法分析入门第十四课