libo533 发表于 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:
:00532F4A 648920                  mov dword ptr fs:, esp
:00532F4D 33C0                  xor eax, eax
:00532F4F A3AC0E5C00            mov dword ptr , 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
:00532F6C 8B00                  mov eax, dword ptr
:00532F6E E83D16F6FF            call 004945B0
........
--------------------------------
........
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00532F5B(C)
|
:00532F73 8D45E2                  lea eax, dword ptr
:00532F76 A3C00E5C00            mov dword ptr , eax
:00532F7B C645E106                mov , 06
:00532F7F C705B40E5C0006000000    mov dword ptr , 00000006
:00532F89 33C0                  xor eax, eax
:00532F8B A3B00E5C00            mov dword ptr , 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
:00532FA8 8D55E1                  lea edx, dword ptr
:00532FAB E8601AEDFF            call 00404A10
:00532FB0 8B45DC                  mov eax, dword ptr

* Possible StringData Ref from Code Obj ->"QITONG"
                                  |
:00532FB3 8B15FCE65B00            mov edx, dword ptr
: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
:00532FDE 8B00                  mov eax, dword ptr
: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
:00532FEC 8B00                  mov eax, dword ptr
:00532FEE 8B4058                  mov eax, dword ptr
........
--------------------------------
........
:005B3D2A 8B08                  mov ecx, dword ptr
:005B3D2C FF9178010000            call dword ptr
:005B3D32 8D45F4                  lea eax, dword ptr

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

* Possible StringData Ref from Code Obj ->"project1"
                                  |
:005B3D59 8B1534ED5B00            mov edx, dword ptr
:005B3D5F E86413E5FF            call 004050C8
:005B3D64 8B55F0                  mov edx, dword ptr
:005B3D67 A144FD5B00            mov eax, dword ptr
:005B3D6C 8B00                  mov eax, dword ptr
:005B3D6E 8B4058                  mov eax, dword ptr
: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
:005B3D85 8B00                  mov eax, dword ptr
: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 , eax
:005B3D91 8945FC                  mov dword ptr , eax
:005B3D94 8D45F8                  lea eax, dword ptr
:005B3D97 A350145C00            mov dword ptr , eax
:005B3D9C C70544145C0006000000    mov dword ptr , 00000006
:005B3DA6 C70540145C001E000000    mov dword ptr , 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

* Possible StringData Ref from Code Obj ->"project1"
                                  |
:005B3DC8 8B1534ED5B00            mov edx, dword ptr
:005B3DCE E8F512E5FF            call 004050C8
:005B3DD3 8B55EC                  mov edx, dword ptr
:005B3DD6 A144FD5B00            mov eax, dword ptr
:005B3DDB 8B00                  mov eax, dword ptr
:005B3DDD 8B4058                  mov eax, dword ptr
:005B3DE0 E8AB5CF2FF            call 004D9A90
:005B3DE5 A188FA5B00            mov eax, dword ptr
:005B3DEA 8B00                  mov eax, dword ptr
: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
:005B3DF6 83C4F4                  add esp, FFFFFFF4
:005B3DF9 DB3C24                  fstp tbyte ptr
:005B3DFC 9B                      wait
:005B3DFD 8D45E8                  lea eax, dword ptr
:005B3E00 E87772E5FF            call 0040B07C
:005B3E05 8B45E8                  mov eax, dword ptr
:005B3E08 8B1558145C00            mov edx, dword ptr
: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

* Possible StringData Ref from Code Obj ->"project1"
                                  |
:005B3E22 8B1534ED5B00            mov edx, dword ptr
:005B3E28 E89B12E5FF            call 004050C8
:005B3E2D 8B55E4                  mov edx, dword ptr
:005B3E30 A144FD5B00            mov eax, dword ptr
:005B3E35 8B00                  mov eax, dword ptr
:005B3E37 8B4058                  mov eax, dword ptr
:005B3E3A E8515CF2FF            call 004D9A90
:005B3E3F A188FA5B00            mov eax, dword ptr
:005B3E44 8B00                  mov eax, dword ptr
: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

* 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 编辑 ]

zanjero 发表于 2007-12-25 21:40:39

2.对找到的第一个“ERROR”的字符修改为“1RROR”,对找到的第二个“ERROR”的字符修改为“2RROR”,

哈哈,太有才了/:good

asdfg321 发表于 2007-12-26 08:43:41

破解有时需要的不仅仅是技术,而是思路

cxl0825 发表于 2007-12-26 14:03:20

恩,,狗也可以破解?
我还没想过

网络断魂 发表于 2007-12-29 11:59:08

其实这完全算不上是解狗,仅仅是一个简单的爆破,
解狗要面对的远不止这些,狗壳,狗内数据(也就是关键数据被抽取到加密狗存储区内),
对于被抽代码的,你需要读狗,模拟狗,或者猜测被抽的参数进行补齐,

网游难民 发表于 2007-12-30 13:59:08

/:012
有没恢复狗内数据的文章,拿来两篇~

iawen 发表于 2007-12-30 14:32:41

也对,爆破只需要找到关键点,如何恢复狗内数据是大牛的活

希望有教程指点一二,尤其是程序运行需要狗内数据时,/:013

anson2416 发表于 2008-2-17 23:41:56

原帖由 zanjero 于 2007-12-25 21:40 发表 https://www.chinapyg.com/images/common/back.gif
2.对找到的第一个“ERROR”的字符修改为“1RROR”,对找到的第二个“ERROR”的字符修改为“2RROR”,

哈哈,太有才了/:good
支持
lz太有才了哦

铁男 发表于 2008-3-2 10:31:22

1"error"\2"error"你太有才了.有点能力呀.学习了.

melody0423 发表于 2008-3-2 11:38:32

第一次看到..赞一个
页: [1] 2 3 4 5
查看完整版本: 山东监理软件软件狗破解详解!