- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
【破文标题】[PYG]算法分析入门第十课
【破文作者】飘云[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载入程序来到以下关键:
************************************************************************************************
00676CF8 push ebp
00676CF9 mov ebp,esp
00676CFB push 0
00676CFD push 0
00676CFF push 0
00676D01 push ebx
00676D02 push esi
00676D03 push edi
00676D04 mov esi,eax
00676D06 xor eax,eax
00676D08 push ebp
00676D09 push unpack1_.00676DB5
00676D0E push dword ptr fs:[eax]
00676D11 mov dword ptr fs:[eax],esp
00676D14 xor ebx,ebx
00676D16 mov dl,1
00676D18 mov eax,dword ptr ds:[4A0D8C]
00676D1D call unpack1_.004A0EF8
00676D22 mov edi,eax
00676D24 mov edx,80000005
00676D29 mov eax,edi
00676D2B call unpack1_.004A0FD4
00676D30 mov cl,1
00676D32 mov edx,unpack1_.00676DD0 ; ASCII "APPEVENTS\EVENTLABELS\CCSELECT\tfoss3\telbook"
00676D37 mov eax,edi
00676D39 call unpack1_.004A1118
00676D3E test al,al
00676D40 je short unpack1_.00676D9A
00676D42 mov edx,unpack1_.00676E08 ; ASCII "msg_disk_id"
00676D47 mov eax,edi
00676D49 call unpack1_.004A14C0 ; ★判断是否过期,没过期则不比较注册码★
00676D4E test al,al
00676D50 je short unpack1_.00676D8C
00676D52 lea ecx,dword ptr ss:[ebp-4]
00676D55 mov edx,unpack1_.00676E08 ; ASCII "msg_disk_id"
00676D5A mov eax,edi
00676D5C call unpack1_.004A12E0
00676D61 lea ecx,dword ptr ss:[ebp-C]
00676D64 mov edx,unpack1_.00676E1C ; ASCII "CPUID"
00676D69 mov eax,esi
00676D6B call unpack1_.00677220
00676D70 mov edx,dword ptr ss:[ebp-C]
00676D73 lea ecx,dword ptr ss:[ebp-8]
00676D76 mov eax,esi
00676D78 call unpack1_.006773F8 ; 算法call
00676D7D mov edx,dword ptr ss:[ebp-8]
00676D80 mov eax,dword ptr ss:[ebp-4]
00676D83 call unpack1_.00404E2C ; 经典比较
00676D88 jnz short unpack1_.00676D8C ; 关键跳转
00676D8A mov bl,1
00676D8C mov eax,edi
00676D8E call unpack1_.004A0FA4
00676D93 mov eax,edi
00676D95 call unpack1_.00403BC4
00676D9A xor eax,eax
00676D9C pop edx
00676D9D pop ecx
00676D9E pop ecx
00676D9F mov dword ptr fs:[eax],edx
00676DA2 push unpack1_.00676DBC
00676DA7 lea eax,dword ptr ss:[ebp-C]
00676DAA mov edx,3
00676DAF call unpack1_.00404A54
00676DB4 retn
********************************进入00676D78 call 006773F8 ************************************
006773FE push ebx
006773FF push esi
00677400 push edi
00677401 xor ebx,ebx
00677403 mov dword ptr ss:[ebp-8],ebx
00677406 mov edi,ecx
00677408 mov dword ptr ss:[ebp-4],edx
0067740B mov eax,dword ptr ss:[ebp-4] ; 机器码
0067740E call unpack1_.00404ED0
00677413 xor eax,eax
00677415 push ebp
00677416 push unpack1_.00677499
0067741B push dword ptr fs:[eax]
0067741E mov dword ptr fs:[eax],esp
00677421 mov eax,edi
00677423 call unpack1_.00404A30
00677428 mov eax,dword ptr ss:[ebp-4]
0067742B call unpack1_.00404CE8
00677430 mov esi,eax
00677432 test esi,esi
00677434 jle short unpack1_.0067747E
00677436 mov ebx,1 ; 初始化ebx=1
0067743B lea eax,dword ptr ss:[ebp-8]
0067743E mov edx,dword ptr ss:[ebp-4]
00677441 movzx edx,byte ptr ds:[edx+ebx-1] ; 逐位取机器码ascii送到edx
00677446 lea ecx,dword ptr ds:[ebx+1C90] ; ebx+1c90(7312)送到ecx
0067744C and ecx,80000003 ; ecx=ecx and 80000003
00677452 jns short unpack1_.00677459
00677454 dec ecx
00677455 or ecx,FFFFFFFC
00677458 inc ecx
00677459 xor edx,ecx ; edx=edx xor ecx
0067745B and edx,800000FF ; edx = edx and 800000ff
00677461 jns short unpack1_.0067746B
00677463 dec edx
00677464 or edx,FFFFFF00
0067746A inc edx
0067746B call unpack1_.00404C10 ; 将上面结果转换成字符
00677470 mov edx,dword ptr ss:[ebp-8]
00677473 mov eax,edi
00677475 call unpack1_.00404CF0
0067747A inc ebx ; ebx =ebx +1
0067747B dec esi ; esi = esi -1
0067747C jnz short unpack1_.0067743B ; 循环,直到取完
0067747E xor eax,eax
00677480 pop edx
00677481 pop ecx
00677482 pop ecx
00677483 mov dword ptr fs:[eax],edx
00677486 push unpack1_.006774A0
0067748B lea eax,dword ptr ss:[ebp-8]
0067748E mov edx,2
00677493 call unpack1_.00404A54
00677498 retn
00677499 jmp unpack1_.00404358
0067749E jmp short unpack1_.0067748B
006774A0 pop edi
006774A1 pop esi
006774A2 pop ebx
006774A3 pop ecx
006774A4 pop ecx
006774A5 pop ebp
006774A6 retn
【算法总结】
不是很难,自己细细回味吧!
我的信息:
软件号: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
删除后可继续研究
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|