飘云 发表于 2005-7-21 09:00:12

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

【破文标题】算法分析入门第十课
【破文作者】飘云
【作者主页】https://www.chinapyg.com
【破解平台】winxp
【破解工具】PEiD0.93、、OD二哥修改版
【作者邮箱】[email protected]
【软件名称】拓普印刷报价管理系统 2.3
【软件大小】1982 KB
【原版下载】http://nj.onlinedown.net/soft/40203.htm
【软件简介】如果您在印刷行业或作印刷产品贸易,必然面临枯燥而烦琐的印刷品报价的报价问题,并且经常为这些问题烦恼。  
一、是复杂的印刷品报价周期长时间,客户等得不耐烦。
二、是印刷品本身种类繁多,千差万别,即便你是熟练的印刷行业的业务员,你仍然难免有把物料及工艺算错价的时候。
三、客户经常随意性地、反复地改变印刷品的要求,给您报价及查询报价带来相当的不便;
四、同一公司的不同业务员往往因为各种原因而产生报价不统一的情况,从而造成报价混乱,损害公司形象。
五、产品组成的物料和加工工艺市场价格经常变化,导致报价不准,可能价格高了,您接不了客户订单,可能价格低了,导致您的企业亏本。

要解决以上种种问题和烦恼,“拓普印刷产品报价管理系统”则是您最佳选择,因为它专业化、操作简单化、价格及时化、准确化等等优点。
“拓普印刷报价管理系统”不是简单的报价软件,它是集报价,报价单管理(历史报价单多项条件查询,报价单版本控制(客户多次更改产品要求

),重印—以前作过,现在客户要求再做以前的产品并报价),统计客户中标率(便于给中标率高的客户优先报价)等功能于一体的管理系统.
【破解前话】这个软件 chenli7429 兄弟已经写了一个爆破及追注册码文章 见https://www.chinapyg.com/viewthread.php?tid=1653&fpage=1我索性把算法贴出给大家学习一下! 呵呵
【分析过程】先用PEiD探测一下:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 手动脱之,Borland Delphi 6.0 - 7.0编写。
至于怎么找关键点,相信看了前面的教程大家都已经学会了,我就不罗嗦了,以后的教程也不会详细说之
用od载入程序来到以下关键:
************************************************************************************************
00676CF8push ebp
00676CF9mov ebp,esp
00676CFBpush 0
00676CFDpush 0
00676CFFpush 0
00676D01push ebx
00676D02push esi
00676D03push edi
00676D04mov esi,eax
00676D06xor eax,eax
00676D08push ebp
00676D09push unpack1_.00676DB5
00676D0Epush dword ptr fs:
00676D11mov dword ptr fs:,esp
00676D14xor ebx,ebx
00676D16mov dl,1
00676D18mov eax,dword ptr ds:
00676D1Dcall unpack1_.004A0EF8
00676D22mov edi,eax
00676D24mov edx,80000005
00676D29mov eax,edi
00676D2Bcall unpack1_.004A0FD4
00676D30mov cl,1
00676D32mov edx,unpack1_.00676DD0            ; ASCII "APPEVENTS\EVENTLABELS\CCSELECT\tfoss3\telbook"
00676D37mov eax,edi
00676D39call unpack1_.004A1118
00676D3Etest al,al
00676D40je short unpack1_.00676D9A
00676D42mov edx,unpack1_.00676E08            ; ASCII "msg_disk_id"
00676D47mov eax,edi
00676D49call unpack1_.004A14C0               ; ★判断是否过期,没过期则不比较注册码★
00676D4Etest al,al
00676D50je short unpack1_.00676D8C
00676D52lea ecx,dword ptr ss:
00676D55mov edx,unpack1_.00676E08            ; ASCII "msg_disk_id"
00676D5Amov eax,edi
00676D5Ccall unpack1_.004A12E0
00676D61lea ecx,dword ptr ss:
00676D64mov edx,unpack1_.00676E1C            ; ASCII "CPUID"
00676D69mov eax,esi
00676D6Bcall unpack1_.00677220
00676D70mov edx,dword ptr ss:
00676D73lea ecx,dword ptr ss:
00676D76mov eax,esi
00676D78call unpack1_.006773F8               ; 算法call
00676D7Dmov edx,dword ptr ss:
00676D80mov eax,dword ptr ss:
00676D83call unpack1_.00404E2C               ; 经典比较
00676D88jnz short unpack1_.00676D8C          ; 关键跳转
00676D8Amov bl,1
00676D8Cmov eax,edi
00676D8Ecall unpack1_.004A0FA4
00676D93mov eax,edi
00676D95call unpack1_.00403BC4
00676D9Axor eax,eax
00676D9Cpop edx
00676D9Dpop ecx
00676D9Epop ecx
00676D9Fmov dword ptr fs:,edx
00676DA2push unpack1_.00676DBC
00676DA7lea eax,dword ptr ss:
00676DAAmov edx,3
00676DAFcall unpack1_.00404A54
00676DB4retn



********************************进入00676D78call 006773F8 ************************************
006773FEpush ebx
006773FFpush esi
00677400push edi
00677401xor ebx,ebx
00677403mov dword ptr ss:,ebx
00677406mov edi,ecx
00677408mov dword ptr ss:,edx
0067740Bmov eax,dword ptr ss:         ; 机器码
0067740Ecall unpack1_.00404ED0
00677413xor eax,eax
00677415push ebp
00677416push unpack1_.00677499
0067741Bpush dword ptr fs:
0067741Emov dword ptr fs:,esp
00677421mov eax,edi
00677423call unpack1_.00404A30
00677428mov eax,dword ptr ss:
0067742Bcall unpack1_.00404CE8
00677430mov esi,eax
00677432test esi,esi
00677434jle short unpack1_.0067747E
00677436mov ebx,1                            ; 初始化ebx=1
0067743Blea eax,dword ptr ss:
0067743Emov edx,dword ptr ss:
00677441movzx edx,byte ptr ds:    ; 逐位取机器码ascii送到edx
00677446lea ecx,dword ptr ds:      ; ebx+1c90(7312)送到ecx
0067744Cand ecx,80000003                     ; ecx=ecx and 80000003
00677452jns short unpack1_.00677459
00677454dec ecx
00677455or ecx,FFFFFFFC
00677458inc ecx
00677459xor edx,ecx                        ; edx=edx xor ecx
0067745Band edx,800000FF                     ; edx = edx and 800000ff
00677461jns short unpack1_.0067746B
00677463dec edx
00677464or edx,FFFFFF00
0067746Ainc edx
0067746Bcall unpack1_.00404C10               ; 将上面结果转换成字符
00677470mov edx,dword ptr ss:
00677473mov eax,edi
00677475call unpack1_.00404CF0
0067747Ainc ebx                              ; ebx =ebx +1
0067747Bdec esi                              ; esi = esi -1
0067747Cjnz short unpack1_.0067743B          ; 循环,直到取完
0067747Exor eax,eax
00677480pop edx
00677481pop ecx
00677482pop ecx
00677483mov dword ptr fs:,edx
00677486push unpack1_.006774A0
0067748Blea eax,dword ptr ss:
0067748Emov edx,2
00677493call unpack1_.00404A54
00677498retn
00677499jmp unpack1_.00404358
0067749Ejmp short unpack1_.0067748B
006774A0pop edi
006774A1pop esi
006774A2pop ebx
006774A3pop ecx
006774A4pop ecx
006774A5pop ebp
006774A6retn

【算法总结】
不是很难,自己细细回味吧!

我的信息:
软件号:638591072430079
注册码:71;58337360015:
附上VB注册机源码:
Private Sub Command1_Click()
Dim code, a, b, c, d, e As String
code = Text1
a = Len(code)
b = "7312"
For i = 1 To a
c = b + i
c = c And &H80000003
d = Asc(Mid(code, i, 1)) Xor c
d = d And &H800000FF
e = e & Chr(d)
Next
Text2 = e
End Sub

【特别说明】
本软件要在过期后才比较注册码,所以测试时 要把系统时间向后调~

注册信息保存在:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\0001\APPEVENTS\EVENTLABELS\CCSELECT\tfoss3\telbook
删除后可继续研究

【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

Saver 发表于 2005-7-21 19:24:43

支持下..看来又要去学习了,好久没有动过了

Iceman 发表于 2005-11-4 11:49:55

好好学习。

underghost 发表于 2005-11-10 22:41:17

不错,简单.适合我这种菜鸟~

漏雨 发表于 2005-12-15 14:47:17

一收再收。谢谢。

野猫III 发表于 2006-4-1 19:00:03

学习呼!我还要毕业呢!!!

wangyc75 发表于 2006-7-5 19:20:48

谢谢
学习中

run108 发表于 2007-11-24 10:51:03

好东西多谢了/:good

mazero 发表于 2007-11-24 18:10:06

老老实实的看贴,踏踏实实的学习,

kunkun1987 发表于 2007-12-23 04:14:24

和楼上的想法一样 好好学
页: [1] 2
查看完整版本: [PYG]算法分析入门第十课