飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 21378|回复: 41

[原创] 山东监理软件软件狗破解详解!

[复制链接]

该用户从未签到

发表于 2007-12-25 21:05:41 | 显示全部楼层 |阅读模式
【软件名称】《山东省工程建设监理计算机管理系统》V2004  内部版本号:20030528

【软件大小】4.06M
【运行平台】Win98/Win2K/WinXP
【编写语言】Borland Delphi 6.0 - 7.0
破解平台】WinXP+SP1
【加壳方式】无
脱壳方法】无
【加密方法】软件狗
【加密强度】简单
【破解软件】W32dasm 无极版、PEiD v0.92、UltraEdit-32 V8.00
【破解类型】爆破
【下载地址】自己找
【破 解 人】libo533

【软件简介】
    该系统是在山东省监理协会和淄博市监理协会的主持下,由“淄博齐通建筑科技有限公司”自主开发的工程建设监理管理软件。该系统采用了最新的规范标准,集成了进度控制软件、工程预算软件,是工程监理系统的通用软件。
    该系统通用性强、功能全面、覆盖监理业务工作的所有内容,对监理业向国际接轨起到引导作用。

主要特点:
    1.使用Access2000数据库系统,运行稳定。
    2.方便的数据输入功能,并提供大量的报表、数据表格、文本、最新的规范标准及法律法规,且实现了与微软Office办公系统的完美结合。
    3.查询简便,采用树型分类显示和组合式多项选择查询功能。
    4.提供最新、最全面的监理相关文档,方便用户查询、使用。
    5.满足同时对多个工程的监理需要。
    6.强大的数据备份功能、数据传输功能,实现远程管理。
    7.挂接“进度控制软件”、“工程预算软件”和“cad看图软件”。

主要功能:
    1.工程项目:主要包括:项目概况、监理合同、项目组织情况、人员情况。
    2.文档管理:主要包括:文件收件、发件、文件档案管理的全过程,并对工程监理中的建设函件(建筑施工函件、建筑监理函件、市政施工函件、市政监理函件)、监理文件及用户自定义的报表进行输出。
    3.合同管理:完成对合同基本索引情况的登记、合同全文录入(导入或扫描)、合同审查意见、执行情况、纠纷与索赔处理、修改与终止等。
    4.组织协调:完成监理会议纪要的编写和监理程序和流程的查询。
    5.质量控制:包括对设计、准备、施工、竣工、保修各个阶段分项工程管理、分项工程工序质量控制。
    6.投资控制:包括对各合同的合同价清单、费用计算、结算汇总、分项累计比较及月度费用偏差比较。
    7.进度控制:包括对施工计划和实际施工进度信息编辑、横道图、单代号图、双代号图来进度显示工程进度和进度调整。
    8.系统设置:对整个系统中工程、代码、模板、定额等基本信息进行预处理。
    9.数据通讯:系统提供数据交换的方法,包括报盘、远程网络、INTERNET等方式。交换的信息可由用户选择。

辅助功能:数据管理、系统日志、帮助、各种相关法规检索等功能。


【破解过程】
    【破解分析】
    软件运行时,如果不插入软件狗,会有“请插入本系统的加密狗”的提示,这为我们破解软件提供了很好的切入点。
    1.用“PEiD v0.92”对原文件进行检查,发现没有加壳,哈哈,节省了不少时间。软件是用“Delphi”编写的。
    2.用“W32dasm 无极版”反汇编程序。
    3.在“W32dasm 无极版”中使用“编辑”-》“查找”输入“加密”,进行查找。找到代码如下:

........

:00532F41 55                      push ebp
:00532F42 681B305300              push 0053301B
:00532F47 64FF30                  push dword ptr fs:[eax]
:00532F4A 648920                  mov dword ptr fs:[eax], esp
:00532F4D 33C0                    xor eax, eax
:00532F4F A3AC0E5C00              mov dword ptr [005C0EAC], eax
:00532F54 E8CE4D0000              call 00537D27
:00532F59 85C0                    test eax, eax                      --->比较 1
:00532F5B 7416                    je 00532F73       物理地址:13235B --->关键跳转

* Possible StringData Ref from Code Obj ->"1.请插入本系统的加密狗!"
                                  |
:00532F5D B830305300              mov eax, 00533030
:00532F62 E8A580F0FF              call 0043B00C
:00532F67 A188FA5B00              mov eax, dword ptr [005BFA88]
:00532F6C 8B00                    mov eax, dword ptr [eax]
:00532F6E E83D16F6FF              call 004945B0
........
--------------------------------
........
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00532F5B(C)
|
:00532F73 8D45E2                  lea eax, dword ptr [ebp-1E]
:00532F76 A3C00E5C00              mov dword ptr [005C0EC0], eax
:00532F7B C645E106                mov [ebp-1F], 06
:00532F7F C705B40E5C0006000000    mov dword ptr [005C0EB4], 00000006
:00532F89 33C0                    xor eax, eax
:00532F8B A3B00E5C00              mov dword ptr [005C0EB0], eax
:00532F90 E8AB4D0000              call 00537D40
:00532F95 85C0                    test eax, eax                    --->比较 2
:00532F97 740C                    je 00532FA5     物理地址:132397 --->关键跳转

* Possible StringData Ref from Code Obj ->"1.请插入本系统的加密狗!"
                                  |
:00532F99 B830305300              mov eax, 00533030
:00532F9E E86980F0FF              call 0043B00C
:00532FA3 EB56                    jmp 00532FFB
........
--------------------------------
........
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00532F97(C)
|
:00532FA5 8D45DC                  lea eax, dword ptr [ebp-24]
:00532FA8 8D55E1                  lea edx, dword ptr [ebp-1F]
:00532FAB E8601AEDFF              call 00404A10
:00532FB0 8B45DC                  mov eax, dword ptr [ebp-24]

* Possible StringData Ref from Code Obj ->"QITONG"
                                  |
:00532FB3 8B15FCE65B00            mov edx, dword ptr [005BE6FC]
:00532FB9 E8FA1BEDFF              call 00404BB8                    --->比较 3
:00532FBE 7427                    je 00532FE7     物理地址:1323BE --->关键跳转

* Possible StringData Ref from Data Obj ->" "
                                  |
:00532FC0 B8FCE65B00              mov eax, 005BE6FC

* Possible StringData Ref from Code Obj ->"3.14159265E-310"
                                  |
:00532FC5 BA50305300              mov edx, 00533050
:00532FCA E83118EDFF              call 00404800

* Possible StringData Ref from Code Obj ->"1.请插入本系统的加密狗!"
                                  |
:00532FCF B830305300              mov eax, 00533030
:00532FD4 E83380F0FF              call 0043B00C
:00532FD9 A188FA5B00              mov eax, dword ptr [005BFA88]
:00532FDE 8B00                    mov eax, dword ptr [eax]
:00532FE0 E8CB15F6FF              call 004945B0
:00532FE5 EB14                    jmp 00532FFB

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00532FBE(C)
|
:00532FE7 A144FD5B00              mov eax, dword ptr [005BFD44]
:00532FEC 8B00                    mov eax, dword ptr [eax]
:00532FEE 8B4058                  mov eax, dword ptr [eax+58]
........
--------------------------------
........
:005B3D2A 8B08                    mov ecx, dword ptr [eax]
:005B3D2C FF9178010000            call dword ptr [ecx+00000178]
:005B3D32 8D45F4                  lea eax, dword ptr [ebp-0C]

* Possible StringData Ref from Code Obj ->"project1"
                                  |
:005B3D35 8B1534ED5B00            mov edx, dword ptr [005BED34]
:005B3D3B E88813E5FF              call 004050C8
:005B3D40 8B55F4                  mov edx, dword ptr [ebp-0C]
:005B3D43 A144FD5B00              mov eax, dword ptr [005BFD44]
:005B3D48 8B00                    mov eax, dword ptr [eax]
:005B3D4A 8B4058                  mov eax, dword ptr [eax+58]
:005B3D4D E83E5DF2FF              call 004D9A90
:005B3D52 85DB                    test ebx, ebx                     --->比较 4
:005B3D54 7436                    je 005B3D8C      物理地址:1B3154 --->关键跳转
:005B3D56 8D45F0                  lea eax, dword ptr [ebp-10]

* Possible StringData Ref from Code Obj ->"project1"
                                  |
:005B3D59 8B1534ED5B00            mov edx, dword ptr [005BED34]
:005B3D5F E86413E5FF              call 004050C8
:005B3D64 8B55F0                  mov edx, dword ptr [ebp-10]
:005B3D67 A144FD5B00              mov eax, dword ptr [005BFD44]
:005B3D6C 8B00                    mov eax, dword ptr [eax]
:005B3D6E 8B4058                  mov eax, dword ptr [eax+58]
:005B3D71 E81A5DF2FF              call 004D9A90

* Possible StringData Ref from Code Obj ->"2.请插入本系统的加密狗!"
                                  |
:005B3D76 B8C83E5B00              mov eax, 005B3EC8
:005B3D7B E88C72E8FF              call 0043B00C
:005B3D80 A188FA5B00              mov eax, dword ptr [005BFA88]
:005B3D85 8B00                    mov eax, dword ptr [eax]
:005B3D87 E82408EEFF              call 004945B0
........
--------------------------------
........
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005B3D54(C)
|
:005B3D8C 33C0                    xor eax, eax
:005B3D8E 8945F8                  mov dword ptr [ebp-08], eax
:005B3D91 8945FC                  mov dword ptr [ebp-04], eax
:005B3D94 8D45F8                  lea eax, dword ptr [ebp-08]
:005B3D97 A350145C00              mov dword ptr [005C1450], eax
:005B3D9C C70544145C0006000000    mov dword ptr [005C1444], 00000006
:005B3DA6 C70540145C001E000000    mov dword ptr [005C1440], 0000001E
:005B3DB0 E8A75D0000              call 005B9B5C
:005B3DB5 8BD8                    mov ebx, eax
:005B3DB7 85DB                    test ebx, ebx                       --->比较 5
:005B3DB9 7438                    je 005B3DF3       物理地址: 1B31B9 --->关键跳转

* Possible StringData Ref from Code Obj ->"2.请插入本系统的加密狗!"
                                  |
:005B3DBB B8C83E5B00              mov eax, 005B3EC8
:005B3DC0 E84772E8FF              call 0043B00C
:005B3DC5 8D45EC                  lea eax, dword ptr [ebp-14]

* Possible StringData Ref from Code Obj ->"project1"
                                  |
:005B3DC8 8B1534ED5B00            mov edx, dword ptr [005BED34]
:005B3DCE E8F512E5FF              call 004050C8
:005B3DD3 8B55EC                  mov edx, dword ptr [ebp-14]
:005B3DD6 A144FD5B00              mov eax, dword ptr [005BFD44]
:005B3DDB 8B00                    mov eax, dword ptr [eax]
:005B3DDD 8B4058                  mov eax, dword ptr [eax+58]
:005B3DE0 E8AB5CF2FF              call 004D9A90
:005B3DE5 A188FA5B00              mov eax, dword ptr [005BFA88]
:005B3DEA 8B00                    mov eax, dword ptr [eax]
:005B3DEC E8BF07EEFF              call 004945B0
:005B3DF1 EB7A                    jmp 005B3E6D
........
--------------------------------
........
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005B3DB9(C)
|
:005B3DF3 DD45F8                  fld qword ptr [ebp-08]
:005B3DF6 83C4F4                  add esp, FFFFFFF4
:005B3DF9 DB3C24                  fstp tbyte ptr [esp]
:005B3DFC 9B                      wait
:005B3DFD 8D45E8                  lea eax, dword ptr [ebp-18]
:005B3E00 E87772E5FF              call 0040B07C
:005B3E05 8B45E8                  mov eax, dword ptr [ebp-18]
:005B3E08 8B1558145C00            mov edx, dword ptr [005C1458]
:005B3E0E E8A50DE5FF              call 00404BB8                    --->比较 6
:005B3E13 7438                    je 005B3E4D    物理地址: 1B3213 --->关键跳转

* Possible StringData Ref from Code Obj ->"2.请插入本系统的加密狗!"
                                  |
:005B3E15 B8C83E5B00              mov eax, 005B3EC8
:005B3E1A E8ED71E8FF              call 0043B00C
:005B3E1F 8D45E4                  lea eax, dword ptr [ebp-1C]

* Possible StringData Ref from Code Obj ->"project1"
                                  |
:005B3E22 8B1534ED5B00            mov edx, dword ptr [005BED34]
:005B3E28 E89B12E5FF              call 004050C8
:005B3E2D 8B55E4                  mov edx, dword ptr [ebp-1C]
:005B3E30 A144FD5B00              mov eax, dword ptr [005BFD44]
:005B3E35 8B00                    mov eax, dword ptr [eax]
:005B3E37 8B4058                  mov eax, dword ptr [eax+58]
:005B3E3A E8515CF2FF              call 004D9A90
:005B3E3F A188FA5B00              mov eax, dword ptr [005BFA88]
:005B3E44 8B00                    mov eax, dword ptr [eax]
:005B3E46 E86507EEFF              call 004945B0
:005B3E4B EB20                    jmp 005B3E6D

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005B3E13(C)
|
:005B3E4D 8D45E0                  lea eax, dword ptr [ebp-20]

* Possible StringData Ref from Code Obj ->"project"                                 
........
--------------------------------
    经以上分析并经过试验,可以看到,软件对加密狗的检测共四个地方,其中4、5、6的比较为进入软件时对加密狗
的检测,如果没有加密狗,将不能进入软件。
    第1、2、3个比较是进入软件后,使用软件功能时对加密狗的检测,如果没有加密狗,将不能使用软件的功能。

    【破解方法】
    只要将以上四处je跳转修改为jmp跳转即可绕过加密狗的检测,实现对软件的暴力破解。
    在“W32dasm 无极版”中,双击各跳转语句,可以在“W32dasm”的下方状态栏中看到此语句在软件中的物理地址,六个跳转的物理地址分别如下:0013235Bh、00132397h、001323BEh、001B3154h、001B31B9h、001B3213h
    使用“UltraEdit-32 V8.00”编辑软件,找到以上相应的六处物理地址,将“74”改为“EB”即可。

    【破解说明】
     按照以上破解方法对软件进行破解后,可以正常使用软件的任何功能,没有任何功能限制。但是软件运行大约10分钟后,还会出现“ERROR!”的提示框,然后软件立即退出。为了保护软件的版权,对于使用时间限制的破解就不再进行详细说明,各位可以根据以上的破解方法自行破解。
     因为在软件中出现“ERROR!”提示框的地方非常多,为了快速确定哪一个是我们需要进行定位的提示框,可以采取以下办法:
     1.用“UltraEdit-32 V8.00”编辑软件,使用“搜索”-》“查找”输入“ERROR”,进行查找。
     2.对找到的第一个“ERROR”的字符修改为“1RROR”,对找到的第二个“ERROR”的字符修改为“2RROR”,依次类推,然后保存。
     3.运行软件,等10分钟后出现“ERROR!”的提示框,看一下是“1RROR”还是“2RROR”,或者是其余的“?RROR”.
     4.用“W32dasm 无极版”反汇编程序。在“W32dasm 无极版”中使用“编辑”-》“查找”功能,在输入框中输入你刚才看到提示框的内容,进行查找。就可对提示框的位置进行定位了!

    说明:这个软件几年前就已经破解了,前几天看到有朋友寻找关于软件狗的破解教程,就写了这篇破解手记,第一次写,不足之处请大家指教,这是我的原创,首发在飘云阁,如果转载请保持文章的完整性和出处,谢谢!

[ 本帖最后由 libo533 于 2007-12-25 21:47 编辑 ]

评分

参与人数 1威望 +20 飘云币 +40 收起 理由
tianxj + 20 + 40 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-7-27 20:18
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2007-12-25 21:40:39 | 显示全部楼层
    2.对找到的第一个“ERROR”的字符修改为“1RROR”,对找到的第二个“ERROR”的字符修改为“2RROR”,

    哈哈,太有才了/:good
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-26 08:43:41 | 显示全部楼层
    破解有时需要的不仅仅是技术,而是思路
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-12-9 12:34
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-12-26 14:03:20 | 显示全部楼层
    恩,,狗也可以破解?
    我还没想过
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-29 11:59:08 | 显示全部楼层
    其实这完全算不上是解狗,仅仅是一个简单的爆破,
    解狗要面对的远不止这些,狗壳,狗内数据(也就是关键数据被抽取到加密狗存储区内),
    对于被抽代码的,你需要读狗,模拟狗,或者猜测被抽的参数进行补齐,
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-30 13:59:08 | 显示全部楼层
    /:012
    有没恢复狗内数据的文章,拿来两篇~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-30 14:32:41 | 显示全部楼层
    也对,爆破只需要找到关键点,如何恢复狗内数据是大牛的活

    希望有教程指点一二,尤其是程序运行需要狗内数据时,/:013
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-17 23:41:56 | 显示全部楼层
    原帖由 zanjero 于 2007-12-25 21:40 发表
    2.对找到的第一个“ERROR”的字符修改为“1RROR”,对找到的第二个“ERROR”的字符修改为“2RROR”,

    哈哈,太有才了/:good

    支持
    lz太有才了哦
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-3-2 10:31:22 | 显示全部楼层
    1"error"\2"error"你太有才了.有点能力呀.学习了.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-3-2 11:38:32 | 显示全部楼层
    第一次看到..赞一个
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表