用心服务 创造品牌

首页 | 公务员 | 报关员 | 计算机 | 证券师 | 研究生 | 成考 | 自考 | 高考 | MBA | 英语 | 会计师 | 导游 | 医师 | 精算师 | 经纪师

您现在的位置: 21世纪考试网 >> 认证类考试 >> 计算机等级考试 >> 考试动态 >> 正文 21世纪考试网助你一臂之力!

   考试动态

共享软件防破解的实用招法

来源:www.21ks.net  作者:佚名 更新时间:2008-6-26 18:50:46


  前言

  我写Delphi程序是从MIS系统入门的,开始尝试子系统划分的时候采用的是MDI窗体的结构。随着系统功能的扩充,不断有新的子系统加入系统中,单个工程会变得非常大,每次做一点修改都要重新编译,单个工程的形式也不利于团队协作。为了提高工作效率,我希望利用DLL动态链接库的形式实现插件结构的编程。

  插件结构的编程需要一个插件容器来控制各DLL的运行情况,将划分好的每个子系统安排到一个DLL库文件中。对每个DLL程序需要为容器预留接口函数,一般接口函数包括:启动调用DLL库的函数、关闭DLL库的函数。通过接口函数,插件容器可以向DLL模块传递参数实现动态控制。具体实现细节我将在下文说明并给出响应代码。

  您可能需要先了解一下DELPHI中UNIT的结构,工程的结构。本文没有深入讨论DLL编程的理论细节,只是演示了一些实用的代码,我当时学习的是刘艺老师的《DELPHI深入编程》一书。

  我也处于DELPHI的入门阶段,只是觉得这次的DLL开发有一些值得讨论的地方,所以写这篇文章,希望各位能对我做的不好的地方慷慨建议。

  示例程序简介

  为了便于阅读我将使用一个MIS系统的部分程序代码演示插件编程的一些方法。示例程序是典型的C/S结构DBMS应用程序,我们关注的部分将是框架程序(下文简称Hall)的控制语句和dll插件程序的响应控制。

  1、程序结构

  插件容器Hall使用一个独立的工程创建,Hall的主窗口的作用相当于MDI程序中的MDI容器窗体,Hall中将显式调用Dll中的接口函数。
每个插件程序独立使用各自的工程,与普通工程不同的是,DLL工程创建的是Dll Wizard,相应编译生成的文件是以DLL为后缀。

  2、接口设计

  实例程序Narcissus中我们预留两个接口函数:

  ShowDLLForm

  该函数将应用程序的句柄传递给DLL子窗口,DLL程序将动态创建DLL窗体的实例。还可以将一些业务逻辑用参数的形式传递给DLL子窗口,比如窗体名称、当前登陆的用户名等。初次调用一个DLL窗体实例时使用此函数创建。

  FreeDLLForm

  该函数将显示释放DLL窗口实例,在退出应用程序时调用每个DLL窗体的FreeDLLForm方法来释放创建的实例,不然会引起内存只读错误。同样,也可以将一些在释放窗体时需要做的业务逻辑用参数的形式传递给DLL窗体。

  3、调试方式

  DLL窗体程序无法直接执行,需要有一个插件容器来调用。应此我们需要先实现一个基本的Hall程序,然后将Hall.exe保存在一个固定的目录中。对每个DLL工程做如下设置:

  1) 打开DLL工程

  2) 选择菜单 Run – Parameters

  3) 在弹出的窗口中浏览到我们的容器Hall.exe

  这样在调试DLL程序时将会自动调用Hall程序,利用Hall中预留的调用接口调试DLL程序。

  1、检测主程序大小,防止破解补丁之类:

  Function TForm1.GesSelfSf: integer;
  var
  F: file of byte;
  begin
  Filemode:=0;
  Assignfile(F,'.\FileName.exe');
  Reset(f);
  Result:=Filesize(F);
  Closefile(F);
  end;

  2、检测创建日期和时间,让破解补丁实效:

  Function TForm1.FinDate:String;
  var
  t:TDate;
  begin
  ShortDateFormat:='yyyy-mm-dd';
  t:=FileDateToDateTime(FileAge('FileName.exe'));
  Result:=DateToStr(t);
  end;

  3、注册码加密函数嵌入数学函数,增加破解难度:
  (略)

  4、必要时自己删除自己(主程序):

  procedure TForm1.Funll;
  var
  hModule:THandle;
  buff:array[0..255]of Char;
  hKernel32:THandle;
  pExitProcess,pDeleteFileA,pUnmapViewOfFile:Pointer;
  begin
  hModule:=GetModuleHandle(nil);
  GetModuleFileName(hModule, buff, sizeof(buff));
  CloseHandle(THandle(4));
  hKernel32:=GetModuleHandle('KERNEL32');
  pExitProcess:=GetProcAddress(hKernel32, 'ExitProcess');
  pDeleteFileA:=GetProcAddress(hKernel32, 'DeleteFileA');
  pUnmapViewOfFile:=GetProcAddress(hKernel32, 'UnmapViewOfFile');
  asm
  LEA EAX, buff
  PUSH 0
  PUSH 0
  PUSH EAX
  PUSH pExitProcess
  PUSH hModule
  PUSH pDeleteFileA
  PUSH pUnmapViewOfFile
  RET
  end;
  begin
  Funll;
  end;
  end;

  具体怎么使用,那要看你自己的意愿了和需要了。反正我是这样做的,我的软件ADSL拨号计时器只在很早版本上出过注册机,后来的v3.70出过破解补丁——其实只是破掉了启动时提示注册的对话框,实质上根本没破解。用了上述的着法以后,到现在的v5.28版本,再没有过什么破解补丁或注册机。

  如果现在的v5.28版本谁能破解,将立即公布程序源码。

  附:注册机破解法的原理以及应对方法

  认识注册机破解法

  顾名思义,写注册机来破解软件注册的方法,就是模仿你的注册码生成算法或者逆向注 册码验证算法而写出来的和你一模一样的注册机。如果被写出注册机,你的软件只好免费了。或者你必须更换算法,但以前注过册的合法用户都得被迫更换注册码了。

  Cracker要写注册机必须详细研究你软件的验证模块,这必须先将你的软件脱壳,再反汇编或者用调试器跟踪。市面上许多加壳和保护软件都吹嘘不可能被脱壳,但到目前为止没有一个软件兑现了自己的诺言。由于CPU最终执行的都是有效指令,所以等你的程序自解压完成后再从内存中Dump出来就可以实现脱壳。因此不要在壳上面花很多功夫,因为没有这个必要。

  第一招:制造假相

  反汇编和调试器跟踪都是不可能防止的,因为所有的Win32程序都必须通过API来调用Windows系统中的关键DLL的

[1] [2] 下一页

 
  • 上一篇认证类:

  • 下一篇认证类:
  • VIP俱乐部 | 我们优势 | 联系我们 | 学习问题 | 会员好评

    公务员考试辅导科目 精讲班 报 名
    主 讲 课 时 讲座
      最新公务员公务员考试辅导热点公务员 姚裕群 30课时 免费试听
      最新公务员注册会计师考试热点公务员 郑庆华 60课时 免费试听
      最新公务员报关员考试辅导热点公务员 覃珍珍 50课时 免费试听
      最新公务员职称英 语辅导热点公务员 王 霞 50-60 免费试听

    认证类录入:小芳老师    责任编辑:小芳老师 

    《共享软件防破解的实用招法》来源于21世纪考试网,欢迎阅读共享软件防破解的实用招法精华版。
       报考公务员所需要的全套资料     收藏全套公务员考试资料 更多>>
      最新公务员计算机等级考试 ·考试动态·报考指南·考试大纲·历年真题·模拟试题·复习资料·心得技巧最新公务员
      最新公务员计算机应用考试 ·考试动态·报考指南·历年真题·模拟试题·复习资料·心得技巧最新公务员
      最新公务员微软认证考试 ·考试动态·心得技巧·学习教程·试题中心·考试介绍最新公务员
      最新公务员Cisco认证考试 ·考试动态·考试指南·模拟试题·考试介绍最新公务员
      最新公务员软件工程师考试 ·软件设计师·数据库工程师·电子商务师·国际商务师·系统分析师·软件架构师·信息处理技术员·信息系统监理师·计算机英语最新公务员
       热 门 资 料 更多>>
     共享软件防破解的实用招法
     
       推 荐 资 料 更多>>

     共享软件防破解的实用招法

       考 试 辅 导 更多>>

       会 员 评 价(关于共享软件防破解的实用招法的评价)
        网站介绍∶小陈老师的21世纪考试网,办的非常成功,极具口碑。全站拥有超过40G教学视频,八百套真题,三千篇模拟测试题,四万套学习资料和全面系统的教学文章。与一般公务员考试相比,我们无须注册、 永久免费提供学习帮助,非常值得备战公务员考试的朋友们学习和参考。
      收藏本站 | 会员好评 | VIP俱乐部 | 联系我们
       相 关 资 料 更多>>
    考试动态共享软件防破解的实用招法
    也谈VFP下客户机访问任意映射服务器
    在VFP下实现点对点通信的基本方法
    怎样在vfp中增加与去除网络联接
    分析数据库的依赖关系
    如何用VFP的dbf进行分布式查询
    查找没有索引的表
    vfp数据库的asp连接
    2008年全国计算机等级考试启用新版教材
    08年起全国计算机等级考试科目及内容调整
    Delphi异常处理与程序调试
    基于Delphi的SocketI/O模型全接触
    Delphi7的XML利器
    开发嵌入式IE浏览器监控程序
    基于Delphi的接口编程入门
    Delphi下利用DDE实现同Word的交互
    用Delphi设计多边形窗体
    不当的SQL语句导致系统不安全
    SQL-Server问题汇编
    代替Like的另一种写法
    SQL-Server非正常删除日志
    2008年共享软件防破解的实用招法
       资料搜索一点通
       课 程 学 习 更多>>

       网 站 辅 导 更多>>
    公务员考试: 新闻·政策·申论范文·精彩面式·行政能力·基础知识·招警考试
    认证类考试: 计算机等级·计算机软件·微软认证·Cisco认证
    学历类考试: 研究生考试·成人高考·自学考试·普通高考·MBA(MPA)考试·英语资料
    资格类考试: 注册会计师·导游证·统一司法·执业医师·精算师·保险经纪人·证券分析师·报关员考试
       热 门 专 题  

       会 员 帮 助  

    共享软件防破解的实用招法
    小雪客服/小艳客服(30分钟 内回答问题)
    QQ咨询业务咨询:569921419 代写文章业务咨询:点击留言 (上午8:30-晚上22:00)

    【查看留言】 【发表留言】


    备案:蜀ICP备05030541号 电话:0825-6699035 (0)13982585788 欢迎批评指正
    VIP俱乐部 | 我们优势 | 联系我们 | 支付平台 | 会员好评 | 友情链接 | 网站地图 | 版权申明 | 会员注册 | 常见问题
    CopyRight © 2006~2010 www.21ks.net All Rights Reserved
    荣誉出品:公务员之家 世纪秘书网 世纪考试网