- UID
- 9910
注册时间2006-3-22
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
【破文标题】申请加入PYG第五篇破文
【破文作者】Fantasy
【作者邮箱】[email protected]
【破解工具】peid0.94, OD1.1
【破解平台】winxp sp2
【软件名称】佳宜工资管理专家
【软件大小】3710KB
【原版下载】http://www.meidasoft.com/cn
------------------------------------------------------------------------
【软件简介】
佳宜工资管理专家参考了各类工资管理管理软件精华,溶入了各自的优点并采纳众多用户
的宝 贵意见,真正地从用户的需要出发,为客户需要而设计。
本软件是适用大、中、小各类型企业单位的人事工资管理系统!将计件、计时、加班、浮
动工资、 人事管理各项功能完全融为一体,功能面面俱到。
本系统采用安全稳定的数据库管理系统设计而成,介面友好,所见即所得,操作简便,多级
密码设置及备份恢复功能,数据安全可靠,全真模拟显示功能,工资管理成熟,汇集了许多优秀
企业的成功工资管理经验。
软件特点:1、单机&网络同时使用;2、两种运行模式,即计件型管理模式和浮动型管理
模式。工厂计件可运行计件型管理模式,企事业单位可运行浮动管理模式,两种模式随时任意
切换使用,且完全共享数据。系统以月工资表为对象,月与月之间结构、公式、报表、数据完
全独立,工资表结构可自定义、可定义公式,导入EXCEL文档,报表自动生成功能,报表可任意
增加、修改。工资表项目之间任意考贝数据。只要将计时、计件、加班数据输入,3、界面简洁
易懂,内置功能强大的工具,操作向导让您几分钟即可熟悉软件的使用。4、四种计件数据录入
方式,按班组姓名录入,按款号工序录入,混合方式录入,条码扫描录入,使用非常方便。
5、既可单机操作,也可网络共享,多人协同使用数据。6、多种统计查询方法,灵活的数据导入
导出,批量工资数据修改。计件工资可跨月统计。7、计件数量自动审核,工序工价可随时调整。
本系统采用安全稳定的数据库管理系统设计而成,介面友好,所见即所得,操作简便,
多级密码设置及备份功能,数据安全可靠,全真模拟显示功能,经营业务管理成熟,
汇集了许多优秀企业的成功管理经验。
------------------------------------------------------------------------
【破解声明】仅供学习和交流,没有其他目的。本人菜鸟一个,失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------
【破解过程】
首先peid 查壳显示Borland Delphi 6.0 - 7.0,无壳
OD载入,运行程序,输入信息:
用户名:fantasy
注册码:123456789
字符插件查找错误提示:系统注册失败,请检查注册是否有误!
--------------------------------------------------------------------------------
双击来到
0060406D > 6A 03 push 3 ; /Arg2 = 00000003
0060406F . 68 7C416000 push 0060417C ; |系统注册失败,请检查注册是否有误!
00604074 . E8 F302FFFF call 005F436C ; \SalarMan.005F436C
00604079 > 33C0 xor eax, eax
---------------------------------------------------------------------------------------------------
往上看
00603E78 . 55 push ebp ;在这下断
00603E79 . 68 DE406000 push 006040DE
00603E7E . 64:FF30 push dword ptr fs:[eax]
00603E81 . 64:8920 mov fs:[eax], esp
00603E84 . 8D55 F0 lea edx, [ebp-10]
00603E87 . 8B45 FC mov eax, [ebp-4]
00603E8A . 8B80 04030000 mov eax, [eax+304]
00603E90 . E8 FFB4E4FF call 0044F394
00603E95 . 8B45 F0 mov eax, [ebp-10] ; 把用户名放到eax
00603E98 . 8D55 F4 lea edx, [ebp-C]
00603E9B . E8 B45BE0FF call 00409A54
00603EA0 . 837D F4 00 cmp dword ptr [ebp-C], 0 ; 把用户名与0比较
00603EA4 . 75 22 jnz short 00603EC8 ; 不等就跳
00603EA6 . 6A 00 push 0 ; /Arg2 = 00000000
00603EA8 . 68 EC406000 push 006040EC ; |请填写用户名称!
00603EAD . E8 BA04FFFF call 005F436C ; \SalarMan.005F436C
00603EB2 . 8B45 FC mov eax, [ebp-4]
00603EB5 . 8B80 04030000 mov eax, [eax+304]
00603EBB . 8B10 mov edx, [eax]
00603EBD . FF92 C0000000 call [edx+C0]
00603EC3 . E9 B1010000 jmp 00604079
00603EC8 > 8D55 E8 lea edx, [ebp-18]
00603ECB . 8B45 FC mov eax, [ebp-4]
00603ECE . 8B80 FC020000 mov eax, [eax+2FC]
00603ED4 . E8 BBB4E4FF call 0044F394
00603ED9 . 8B45 E8 mov eax, [ebp-18] ; 把注册吗放到eax中
00603EDC . 8D55 EC lea edx, [ebp-14]
00603EDF . E8 705BE0FF call 00409A54
00603EE4 . 837D EC 00 cmp dword ptr [ebp-14], 0 ; 注册吗与0比较
00603EE8 . 75 22 jnz short 00603F0C ; 注册吗不为空就跳
00603EEA . 6A 00 push 0 ; /Arg2 = 00000000
00603EEC . 68 00416000 push 00604100 ; |授权号不能为空,请填写授权号!
00603EF1 . E8 7604FFFF call 005F436C ; \SalarMan.005F436C
00603EF6 . 8B45 FC mov eax, [ebp-4]
00603EF9 . 8B80 FC020000 mov eax, [eax+2FC]
00603EFF . 8B10 mov edx, [eax]
00603F01 . FF92 C0000000 call [edx+C0]
00603F07 . E9 6D010000 jmp 00604079
00603F0C > A1 1CDE6300 mov eax, [63DE1C]
00603F11 . 8B00 mov eax, [eax] ; 把字符"CA6D-L366"放到eax中
00603F13 . E8 8010E0FF call 00404F98
00603F18 . 50 push eax
00603F19 . 8D55 E4 lea edx, [ebp-1C]
00603F1C . 8B45 FC mov eax, [ebp-4]
00603F1F . 8B80 F4020000 mov eax, [eax+2F4]
00603F25 . E8 6AB4E4FF call 0044F394
00603F2A . 8B45 E4 mov eax, [ebp-1C] ; 把机器码放到eax中
00603F2D . E8 6610E0FF call 00404F98
00603F32 . 50 push eax ; 机器码压栈
00603F33 . E8 E40FFFFF call 005F4F1C ; 算法 F7跟进
00603F38 . 8BD0 mov edx, eax ; eax中是真码 内存注册机就在这做
00603F3A . 8D45 F8 lea eax, [ebp-8]
00603F3D . E8 960DE0FF call 00404CD8
00603F42 . 8D55 DC lea edx, [ebp-24]
00603F45 . 8B45 FC mov eax, [ebp-4]
00603F48 . 8B80 FC020000 mov eax, [eax+2FC]
00603F4E . E8 41B4E4FF call 0044F394
00603F53 . 8B45 DC mov eax, [ebp-24] ; 把假码放到eax中
00603F56 . 8D55 E0 lea edx, [ebp-20]
00603F59 . E8 F65AE0FF call 00409A54
00603F5E . 8B45 E0 mov eax, [ebp-20] ; 把假码放到eax中
00603F61 . 8B55 F8 mov edx, [ebp-8] ; 把真码放到edx中
00603F64 . E8 7B0FE0FF call 00404EE4 ; 比较call(经典语句)
00603F69 . 0F85 FE000000 jnz 0060406D ; 关键跳转
00603F6F . 33C0 xor eax, eax
00603F71 . 55 push ebp
00603F72 . 68 59406000 push 00604059
00603F77 . 64:FF30 push dword ptr fs:[eax]
00603F7A . 64:8920 mov fs:[eax], esp
00603F7D . B2 01 mov dl, 1
00603F7F . A1 58334700 mov eax, [473358]
00603F84 . E8 3BF5E6FF call 004734C4
00603F89 . 8BD8 mov ebx, eax
00603F8B . BA 02000080 mov edx, 80000002
00603F90 . 8BC3 mov eax, ebx
00603F92 . E8 09F6E6FF call 004735A0
00603F97 . B1 01 mov cl, 1
00603F99 . 8B15 F0D16300 mov edx, [63D1F0] ; SalarMan.00603DBC
00603F9F . 8BC3 mov eax, ebx
00603FA1 . E8 3EF7E6FF call 004736E4
00603FA6 . 8D55 D8 lea edx, [ebp-28]
00603FA9 . 8B45 FC mov eax, [ebp-4]
00603FAC . 8B80 04030000 mov eax, [eax+304]
00603FB2 . E8 DDB3E4FF call 0044F394
00603FB7 . 8B4D D8 mov ecx, [ebp-28]
00603FBA . BA 28416000 mov edx, 00604128 ; username
00603FBF . 8BC3 mov eax, ebx
00603FC1 . E8 BAF8E6FF call 00473880
00603FC6 . 8D55 D0 lea edx, [ebp-30]
00603FC9 . 8B45 FC mov eax, [ebp-4]
00603FCC . 8B80 F4020000 mov eax, [eax+2F4]
00603FD2 . E8 BDB3E4FF call 0044F394
00603FD7 . 8B45 D0 mov eax, [ebp-30]
00603FDA . E8 B90FE0FF call 00404F98
00603FDF . 50 push eax
00603FE0 . E8 2F04FFFF call 005F4414
00603FE5 . 8BD0 mov edx, eax
00603FE7 . 8D45 D4 lea eax, [ebp-2C]
00603FEA . E8 E90CE0FF call 00404CD8
00603FEF . 8B4D D4 mov ecx, [ebp-2C]
00603FF2 . BA 3C416000 mov edx, 0060413C ; signcode
00603FF7 . 8BC3 mov eax, ebx
00603FF9 . E8 82F8E6FF call 00473880
00603FFE . 8B45 F8 mov eax, [ebp-8]
00604001 . E8 920FE0FF call 00404F98
00604006 . 50 push eax
00604007 . E8 0804FFFF call 005F4414
0060400C . 8BD0 mov edx, eax
0060400E . 8D45 CC lea eax, [ebp-34]
00604011 . E8 C20CE0FF call 00404CD8
00604016 . 8B4D CC mov ecx, [ebp-34]
00604019 . BA 50416000 mov edx, 00604150 ; regcode
0060401E . 8BC3 mov eax, ebx
00604020 . E8 5BF8E6FF call 00473880
00604025 . 8BC3 mov eax, ebx
00604027 . E8 50FCDFFF call 00403C7C
0060402C . 6A 00 push 0 ; /Arg2 = 00000000
0060402E . 68 58416000 push 00604158 ; |系统注册成功,欢迎你使用本软件!
00604033 . E8 3403FFFF call 005F436C ; \SalarMan.005F436C
00604038 . A1 18DE6300 mov eax, [63DE18]
0060403D . C700 02000000 mov dword ptr [eax], 2
00604043 . A1 C0DB6300 mov eax, [63DBC0]
00604048 . 8B00 mov eax, [eax]
0060404A . E8 E1CEE6FF call 00470F30
0060404F . 33C0 xor eax, eax
00604051 . 5A pop edx
00604052 . 59 pop ecx
00604053 . 59 pop ecx
00604054 . 64:8910 mov fs:[eax], edx
00604057 . EB 20 jmp short 00604079
00604059 .^ E9 FE00E0FF jmp 0040415C
0060405E . 8B45 FC mov eax, [ebp-4]
00604061 . E8 7A96E6FF call 0046D6E0
00604066 . E8 1D05E0FF call 00404588
0060406B . EB 0C jmp short 00604079
0060406D > 6A 03 push 3 ; /Arg2 = 00000003
0060406F . 68 7C416000 push 0060417C ; |系统注册失败,请检查注册是否有误!
00604074 . E8 F302FFFF call 005F436C ; \SalarMan.005F436C
00604079 > 33C0 xor eax, eax
0060407B . 5A pop edx
0060407C . 59 pop ecx
0060407D . 59 pop ecx
----------------------------------------------------------------------------------------------------
跟进上面的算法 call 005F4F1C 来到
005F4F1C /$ 55 push ebp
005F4F1D |. 8BEC mov ebp, esp
005F4F1F |. B9 06000000 mov ecx, 6
005F4F24 |> 6A 00 /push 0
005F4F26 |. 6A 00 |push 0
005F4F28 |. 49 |dec ecx
005F4F29 |.^ 75 F9 \jnz short 005F4F24
005F4F2B |. 53 push ebx
005F4F2C |. 56 push esi
005F4F2D |. 33C0 xor eax, eax ; eax 清0
005F4F2F |. 55 push ebp
005F4F30 |. 68 EA505F00 push 005F50EA
005F4F35 |. 64:FF30 push dword ptr fs:[eax]
005F4F38 |. 64:8920 mov fs:[eax], esp
005F4F3B |. 8D45 EC lea eax, [ebp-14]
005F4F3E |. E8 A5FBE0FF call 00404AE8
005F4F43 |. 8D45 F0 lea eax, [ebp-10]
005F4F46 |. 8B55 08 mov edx, [ebp+8] ; 把机器吗放到edx
005F4F49 |. E8 8AFDE0FF call 00404CD8
005F4F4E |. 8B45 F0 mov eax, [ebp-10]
005F4F51 |. E8 4AFEE0FF call 00404DA0
005F4F56 |. 8BF0 mov esi, eax
005F4F58 |. 85F6 test esi, esi
005F4F5A |. 7E 26 jle short 005F4F82
005F4F5C |. BB 01000000 mov ebx, 1
005F4F61 |> 8D4D E8 /lea ecx, [ebp-18]
005F4F64 |. 8B45 F0 |mov eax, [ebp-10]
005F4F67 |. 0FB64418 FF |movzx eax, byte ptr [eax+ebx-1]
005F4F6C |. 33D2 |xor edx, edx
005F4F6E |. E8 B94FE1FF |call 00409F2C
005F4F73 |. 8B55 E8 |mov edx, [ebp-18]
005F4F76 |. 8D45 FC |lea eax, [ebp-4]
005F4F79 |. E8 2AFEE0FF |call 00404DA8
005F4F7E |. 43 |inc ebx
005F4F7F |. 4E |dec esi ; 循环14次
005F4F80 |.^ 75 DF \jnz short 005F4F61 ; 把机器码转换成16进制吗(记做 字符串)
005F4F82 |> 8B45 FC mov eax, [ebp-4]
005F4F85 |. E8 16FEE0FF call 00404DA0 ; 取 字符串的位数 28
005F4F8A |. 8BF0 mov esi, eax ; 把位数放到esi中
005F4F8C |. 85F6 test esi, esi
005F4F8E |. 7E 2C jle short 005F4FBC
005F4F90 |. BB 01000000 mov ebx, 1
005F4F95 |> 8B45 FC /mov eax, [ebp-4]
005F4F98 |. E8 03FEE0FF |call 00404DA0 ; 求 位数
005F4F9D |. 2BC3 |sub eax, ebx ; eax<-eax-ebx
005F4F9F |. 8B55 FC |mov edx, [ebp-4]
005F4FA2 |. 8A1402 |mov dl, [edx+eax] ; 把最后一个字符放到dl中
005F4FA5 |. 8D45 E4 |lea eax, [ebp-1C]
005F4FA8 |. E8 1BFDE0FF |call 00404CC8
005F4FAD |. 8B55 E4 |mov edx, [ebp-1C]
005F4FB0 |. 8D45 F8 |lea eax, [ebp-8]
005F4FB3 |. E8 F0FDE0FF |call 00404DA8
005F4FB8 |. 43 |inc ebx
005F4FB9 |. 4E |dec esi
005F4FBA |.^ 75 D9 \jnz short 005F4F95 ; 循环28次 把字符串首尾颠倒
005F4FBC |> 8D45 FC lea eax, [ebp-4]
005F4FBF |. 50 push eax
005F4FC0 |. B9 04000000 mov ecx, 4
005F4FC5 |. BA 01000000 mov edx, 1
005F4FCA |. 8B45 F8 mov eax, [ebp-8]
005F4FCD |. E8 2600E1FF call 00404FF8
005F4FD2 |. 8D45 F8 lea eax, [ebp-8]
005F4FD5 |. 50 push eax
005F4FD6 |. B9 04000000 mov ecx, 4
005F4FDB |. BA 05000000 mov edx, 5
005F4FE0 |. 8B45 F8 mov eax, [ebp-8] ; 把字符串放到eax中
005F4FE3 |. E8 1000E1FF call 00404FF8
005F4FE8 |. 8B45 FC mov eax, [ebp-4] ; 把前面4位放到eax中
005F4FEB |. E8 B0FDE0FF call 00404DA0 ; 计算位数 放入eax中
005F4FF0 |. 83F8 04 cmp eax, 4 ; eax与4比较
005F4FF3 |. 7D 2F jge short 005F5024 ; 大与等于就跳
005F4FF5 |. 8B45 FC mov eax, [ebp-4]
005F4FF8 |. E8 A3FDE0FF call 00404DA0
005F4FFD |. 8BD8 mov ebx, eax
005F4FFF |. 83FB 03 cmp ebx, 3
005F5002 |. 7F 20 jg short 005F5024
005F5004 |> 8D4D E0 /lea ecx, [ebp-20]
005F5007 |. 8BC3 |mov eax, ebx
005F5009 |. C1E0 02 |shl eax, 2
005F500C |. 33D2 |xor edx, edx
005F500E |. E8 194FE1FF |call 00409F2C
005F5013 |. 8B55 E0 |mov edx, [ebp-20]
005F5016 |. 8D45 FC |lea eax, [ebp-4]
005F5019 |. E8 8AFDE0FF |call 00404DA8
005F501E |. 43 |inc ebx
005F501F |. 83FB 04 |cmp ebx, 4
005F5022 |.^ 75 E0 \jnz short 005F5004
005F5024 |> 8B45 F8 mov eax, [ebp-8] ; 在把第2个四位放到eax中
005F5027 |. E8 74FDE0FF call 00404DA0 ; 计算位数
005F502C |. 83F8 04 cmp eax, 4 ; 与4比较
005F502F |. 7D 2F jge short 005F5060 ; 大于等于就跳
005F5031 |. 8B45 F8 mov eax, [ebp-8]
005F5034 |. E8 67FDE0FF call 00404DA0
005F5039 |. 8BD8 mov ebx, eax
005F503B |. 83FB 03 cmp ebx, 3
005F503E |. 7F 20 jg short 005F5060
005F5040 |> 8D4D DC /lea ecx, [ebp-24]
005F5043 |. 8BC3 |mov eax, ebx
005F5045 |. C1E0 02 |shl eax, 2
005F5048 |. 33D2 |xor edx, edx
005F504A |. E8 DD4EE1FF |call 00409F2C
005F504F |. 8B55 DC |mov edx, [ebp-24]
005F5052 |. 8D45 F8 |lea eax, [ebp-8]
005F5055 |. E8 4EFDE0FF |call 00404DA8
005F505A |. 43 |inc ebx
005F505B |. 83FB 04 |cmp ebx, 4
005F505E |.^ 75 E0 \jnz short 005F5040
005F5060 |> 8D45 D8 lea eax, [ebp-28]
005F5063 |. 8B55 0C mov edx, [ebp+C] ; 把字符 “CA6D-L366”放到edx
005F5066 |. E8 6DFCE0FF call 00404CD8
005F506B |. 8B45 D8 mov eax, [ebp-28] ; 放到eax中
005F506E |. 8D55 F4 lea edx, [ebp-C]
005F5071 |. E8 DE49E1FF call 00409A54
005F5076 |. 8D45 D4 lea eax, [ebp-2C]
005F5079 |. 50 push eax
005F507A |. B9 04000000 mov ecx, 4
005F507F |. BA 01000000 mov edx, 1
005F5084 |. 8B45 F4 mov eax, [ebp-C]
005F5087 |. E8 6CFFE0FF call 00404FF8
005F508C |. FF75 D4 push dword ptr [ebp-2C] ; 取前面四位 CA6D 压栈
005F508F |. 68 04515F00 push 005F5104 ; -
005F5094 |. FF75 FC push dword ptr [ebp-4] ; 取字符串前面4位 7484 压栈
005F5097 |. 8D45 D0 lea eax, [ebp-30]
005F509A |. 50 push eax
005F509B |. B9 05000000 mov ecx, 5
005F50A0 |. BA 05000000 mov edx, 5
005F50A5 |. 8B45 F4 mov eax, [ebp-C]
005F50A8 |. E8 4BFFE0FF call 00404FF8
005F50AD |. FF75 D0 push dword ptr [ebp-30] ; 把后面5位 压栈
005F50B0 |. 68 04515F00 push 005F5104 ; -
005F50B5 |. FF75 F8 push dword ptr [ebp-8] ; 把字符串后面4位压栈
005F50B8 |. 8D45 EC lea eax, [ebp-14]
005F50BB |. BA 06000000 mov edx, 6
005F50C0 |. E8 9BFDE0FF call 00404E60
005F50C5 |. 8B45 EC mov eax, [ebp-14] ; 连接 这4个 4位的字符串形成真注册吗
005F50C8 |. E8 CBFEE0FF call 00404F98
005F50CD |. 8BD8 mov ebx, eax ; 把真注册吗放到ebx中
005F50CF |. 33C0 xor eax, eax ; eax清0
005F50D1 |. 5A pop edx
005F50D2 |. 59 pop ecx
005F50D3 |. 59 pop ecx
005F50D4 |. 64:8910 mov fs:[eax], edx
005F50D7 |. 68 F1505F00 push 005F50F1
005F50DC |> 8D45 D0 lea eax, [ebp-30]
005F50DF |. BA 0C000000 mov edx, 0C
005F50E4 |. E8 23FAE0FF call 00404B0C
005F50E9 \. C3 retn
005F50EA .^ E9 21F3E0FF jmp 00404410
005F50EF .^ EB EB jmp short 005F50DC
005F50F1 . 8BC3 mov eax, ebx
005F50F3 . 5E pop esi
005F50F4 . 5B pop ebx ; 弹出真注册吗
005F50F5 . 8BE5 mov esp, ebp
005F50F7 . 5D pop ebp
005F50F8 . C2 0800 retn 8
【破解总结】
这个软件的算法是这样:
1)把软件生成的机器码(产品编号)转换成16进制码
2)把转换好的16进制码 首尾重排(比如1234->4321)
3)把排好的16进制码 取前面8位(分成2个4位)第1个4位记为m1,第2个4位记为m2
4)把软件内提供的字符"CA6D-L366",分成"CA6D"和"-L366"记为m3,m4
5)连接形成序列号 m3('-')m1+m4('-')m2
我的机器吗:MRL202L2HEHBHG
变成16进制码:4D524C3230324C32484548424847
首尾重排:74842484548423C4230323C425D4
取前面8位:7484 2484
连接形成序列号:CA6D-7484-L366-2484
注册码与用户名无关
用户名:fantasy
注册吗:CA6D-7484-L366-2484
另软件的注册信息放在
[HKEY_LOCAL_MACHINE\SOFTWARE\meida\salary]
"UserName"=
"SignCode"=
"RegCode"=
软件注册好了,重起又有对话框出来显示未注册(有校验)。真是晕死.
00637AC0 . 8338 00 cmp dword ptr [eax], 0
00637AC3 . 7D 0E jge short 00637AD3 ;nop掉
00637AC5 . A1 C0DA6300 mov eax, [63DAC0]
00637ACA 8038 00 cmp byte ptr [eax], 0
00637ACD 0F85 94000000 jnz 00637B67 ;改成jmp
00637AD3 > A1 54DC6300 mov eax, [63DC54]
00637AD8 . 8B00 mov eax, [eax]
00637ADA . E8 BDF3FFFF call 00636E9C ; 出现对话框
ue查找8338007D0EA1C0DA6300->8338009090A1C0DA6300
查找0F8594000000A154DC63008B00E8BDF3FFFF->E99500000000A154DC63008B00E8BDF3FFFF
改好了重起软件,对话框消失!
到此完工!!!!
~~~软件是4月2号的,应该算新的吧。 |
|