AntiDebugLIB Guide
Http://www.antidebuglib.com

Programming Guide

 

引言:

        对于计算机软件项目,在它的设计目标开发完成之后,通常还要对其最终发布的软件程序进行加密保护,以保护该项目的知识产权,防止软件的非法复制与盗版。软件加密的目标是通过技术手段使得被保护的程序只有在许可的范围内才能使用它的功能。
        为了防止软件的非法复制、盗版,保护软件开发者的利益,就必须对软件进行加密保护。
        通过对Windows下PE可执行文件的结构及载入机制进行深刻的剖析, 巧妙的使用各种密码学算法及多种反破解方案,实现对PE文件加密保护。研究了大量的相关资料,特别是对解密者的思路、过程、步骤进行了仔细的研究,静态分析和动态分析是解密者必用的手段,而动态分析是其终极手段。所谓动态分析就是利用各种程序调试工具对程序进行分析。
        因此:如果一个被加密的程序在运行时,任何调试工具都被禁止,那么要破解它是不可能的。 要做到这一点是不容易的,目前有很多流行的软件加密工具,但总是被Cracker破解,主要原因是在反跟踪反调试方面存在漏洞。
        方法:如果一个被加密的程序在运行时,每时每刻都要使用调试工具所必需使用的资源,那么任何调试工具都将被禁止或者不能与被加密程序同时运行。
        在使用VC++完成正常的设计之后,通常需要对软件进行保护、加密的工作,除非这个软件是作为免费的软件来开发的。为了达到不被破解的目的,必须研究调试器是如何工作的,如何阻止他们正常的工作,如何阻止代码被动态和静态地分析,如何...,这些繁重的工作在AntiDebugLIB地协助下可轻松地完成。
        本文通过发表一个演示程序来展示AntiDebugLIB的使用方法。

它是如何工作的呢?

     1. AntiDebugLIB 提供了一些函数,这些函数的定义格式和C++ 运行时库的一样,不同的是它们需要许可证才能正常运行。
     2. AntiDebugLIB 提供了函数定制加密宏机制。他们能帮助软件开发者快速加密他们的代码。
     3. AntiDebugLIB 提供了强有力的PE文件保护工具--Eagle Protector。

    在你用VC++完成正常的开发之后,只须4个步骤即可完成程序加密的工作:

     第 1 步

          在非共享或关键代码中,将C++的函数用AntiDebugLIB的函数进行简单的替换。

显示实例

     第 2 步

          使用AntiDebugLIB的 函数定制功能产生具有自生代码功能的函数。

     第 3 步

          插入一些AntiDebugLIB的加密宏标注出想要加密的代码段范围。          

     第 4 步

          重建工程之后再用Eagle Protector V2.3将PE文件加密即可。

1.AntiDebugLIB 文件

文件名称

说明

antidebug.h

函数库的头文件。

antidebug.lib

函数库文件。 (包含在ADL_Register.EXE 文件中)
gjglly.sys AntiDebugLIB 驱动文件。 (包含在ADL_Register.EXE 文件中)
ADL_Register.EXE AntiDebugLIB 许可证生成工具和PE文件保护工具。
AntiDebugLib.CHM AntiDebugLIB 帮助文件。
Start_ADL_Register.exe 使用Start_ADL_Register启动主程序可以使得用户获得更好的体验。下载 Start_ADL_Register 源代码。

2.程序开发环境

操作系统: Windows XP/2003/Vista/2008/7 (32bit 64bit)

开发环境: Microsoft Visual Studio 2008 / C++Builder / Delphi / VB6.0.

3.举例说明

    下列步骤将从头创建一个演示工程以演示AntiDebugLIB的使用方法。你可以略过这些步骤,首先在这里下载antidebug_demo , 直接编译并得到第一印象。在编译的过程中如果遇到问题请参考文章"How to build antidebug_demo project?" 。

基于当前操作系统选择驱动程序和库文件

    为了用户有更好的体验,建议使用 Start_ADL_Register 启动您的主程序。 您可以更改Start_ADL_Register的名称,您可以从我们的网站下载 Start_ADL_Register 源代码
注意:您必须将 "C:\Windows\System32\bcdedit.exe" 文件复制到您的64位系统版本程序的安装目录内。您可以参考我们的主程序的安装目录。

   32bit OS:

      antidebug_demo\Win32 Files\dirver\Gjglly.sys
      antidebug_demo\Win32 Files\lib\Multi-threaded DLL\antidebug.lib(Dynamic Link Library)
      or antidebug_demo\Win32 Files\lib\Multi-threaded \antidebug.lib(Static Link Library)

   64bit OS:

      antidebug_demo\Win64 Files\dirver\Gjglly.sys
      antidebug_demo\Win64 Files\lib\Multi-threaded DLL\antidebug.lib(Dynamic Link Library)
      or antidebug_demo\Win64 Files\lib\Multi-threaded\antidebug.lib(Static Link Library)

3.1 程序设计

    (1) 打开“Microsoft Visual Studio 2008”,选择 “File | New | Project” 菜单命令 ,弹出“New Project” 窗口,选择 Project types:“Visual C++ | MFC”,选择 Templates:“Visual Studio installed templates |MFC Application”,确认工程的名称是“antidebug_demo”,并选择路径。

    (2) 在弹出的 “MFC Application AppWinzard - Application Type” 对话框中,选择 应用类型为 “Single document”.

    (3) 接下来的步骤,保持默认设置,最后点击 [Finish] 按钮。

    (4) 增加两个菜单命令:"Display Hello World !" 和"Display Hello AntiDebug !"

Show illustration

    (5) 通过Event Handler Wizard 映射这两个菜单命令函数:
          void CAntidebug_demoDoc::OnDisplayHelloWorld().
          void CAntidebug_demoDoc::OnDisplayHelloAntidebug().

           插入如下代码:

显示代码

    (6) 完成之后,antidebug_demo能够显示两个消息框:"Hello World ! " 和 "Hello AntiDebug ! ",都是免费的,而且也不需要许可证。

 3.2 加密程序

    (1) 拷贝 antidebug.h 和 antidebug.lib 到 antidebug_demo 工程目录(\antidebug_demo\)。

    (2) 选择 “Project | Protertys” 菜单命令,只对 "Win32 Release"进行设置。

          添加 "antidebug.lib setupapi.lib NETAPI32.LIB" 到 Linker 的 input Additional Dependencies 编辑框。

显示图解

          设置 "Buffer Security Check" 为"NO(/GS)"

显示图解
          设置 "Data Execution Prevention(DEP)" 为 "Default"。

显示图解

          设置"Randomized Base Address"为"Disable Image Randomization ".

显示图解

          设置 "UAC Execution Level " 为 "requireAdministrator"。

显示图解

    (3) 在antidebug_demoDoc.h 文件中添加代码:

显示代码

    (4) 在antidebug_demoDoc.cpp 文件中添加代码:

显示代码

    (5) 修改非共享函数代码:

显示代码

    (6) 选择 “Build | Rdbuild Solution” 菜单命令加密antidebug_demo。现在,如果你想要显示"Hello AntiDebug !" 消息框,必须有由ADL_register.exe产生的许可证才行。

    (7) 定制函数

      对于那些非常重要的代码,强烈建议你使用AntiDebug LIB提供的定制函数机制,快速产生具有代码自生功能的函数,那么这些代码就成为了只有你一个人知道的秘密了。

      AntiDebug LIB 提供三个函数来完成这个工作:

            GJ_encrypt_custom_function.
            GJ_load_custom_founction.
            GJ_free_custom_founction.

      GJ_encrypt_custom_function (or GJ_encrypt_custom_function_demo) 函数只使用在另外一个不公开发布的工程中使用,定制的函数在其中调试并加密,当GJ_encrypt_custom_function (or GJ_encrypt_custom_function_demo) 返回TRUE,表示函数执行成功,将产生一个"founction_name.h" 头文件,该头文件包含经过加密的定制函数代码,将它包含在要发布工程文件中,使用时调用GJ_load_custom_founction (or GJ_load_custom_founction_demo) 解密,然后执行,使用完毕,调用GJ_free_custom_founction 清除。

      现在,我们创建另外一个工程,命名为custom_function_demo,创建的方法和 antidebug_demo工程类似。 函数 void __stdcall custom_function(...) 是想要加密的函数,我们调用void encrypt_custom_function()将它加密,得到了包含custom_function(...)函数密文代码的头文件 custom_function.h 。

显示 void __stdcall custom_function() 和 void encrypt_custom_function() 代码
            得到了custom_function.h之后(当然要运行custom_function_demo才能产生custom_function.h),我们将语句 #include "..\\antidebug_demo\\custom_function_demo\\custom_function.h"插入到antidebug_demoDoc.cpp文件当中,这个文件属于antidebug_demo 工程。
显示 custom_function.h 代码
显示 CUSTOM FUNCTION TEST 代码
                    更多的信息请参考: Atidebug_demo 演示程序和 Code Project 网站中的文章:Programming Self-generating Code for Windows Applications.           

Programming Self-generating Code for Windows Applications.--Executing VC++ codes in STACK or HEAP

.

    (8) 加密宏

            AntiDebugLIB 提供四个加密宏来帮助软件开发者可以更快速地加密他们的代码:
            只用注册版本才提供此项功。

GJ_MACRO_INIT

GJ_MACRO_END

GJ_ONCE_CODE_START

GJ_ONCE_CODE_END
GJ_ENCRYPT_CODE_START GJ_ENCRYPT_CODE_END
GJ_ENCRYPT_CODE_WITH_LIC_START GJ_ENCRYPT_CODE_WITH_LIC_END

显示 GJ_MACRO_INIT, GJ_MACRO_END 例子代码
显示 GJ_ONCE_CODE_START,GJ_ONCE_CODE_END 例子代码
显示 GJ_ENCRYPT_CODE_START,GJ_ENCRYPT_CODE_END 例子代码
显示 GJ_ENCRYPT_CODE_WITH_LIC_START,GJ_ENCRYPT_CODE_WITH_LIC_END 例子代码

显示加密宏的使用方法

        更多的信息请参考 Atidebug_demo 演示程序。

    (9) 为了使用户能方便地产生Serial Number,在Antidebug_demo的about 对话框中插入一些必要的代码。

显示代码

    (10) 最后,使用Eagle Protector加密antidebug_demo.exe 。

        终于,Antidebug_demo 能够显示三个消息框:一个免费的 "Hello World ! "消息框, 两个收费的 "Hello AntiDebug ! " 和 "Hello Cuntom function ! "消息框。
        现在,你可以非常安全地发布你的试用版软件了,当然要带上gjglly.sys。

        为了用户有更好的体验,建议使用 Start_ADL_Register 启动您的主程序。 您可以更改Start_ADL_Register的名称,您可以从我们的网站下载 Start_ADL_Register 源代码
        注意:您必须将 "C:\Windows\System32\bcdedit.exe" 文件复制到您的64位系统版本程序的安装目录内。您可以参考我们的主程序的安装目录。

4.许可证生成


    (1) 粘贴 拷贝自用户的antidebug_demo about 对话窗口的Serial Number到 ADL Register 的 Serial Number Edit box。
    (2) 选择 antidebug_append.dat 文件作为 Appending Data.
    (3) 单击 <Generate ADL DEMO LICENSE> 按钮。
    (4) 保存许可证数据到 antidebuglib_demo.lic 文件并邮寄给用户。

5.结束语

    上述 antidebug_demo 程序演示了AntiDebug LIB 反跟踪静态函数库加密应用程序的基本步骤和框架。如果在使用AntiDebug LIB过程中遇到任何技术问题或者希望在下一个版本中添加一些特殊的功能,请随时通过Email:support@antidebuglib.com,MSN:或者电话:132 0383 3305,QQ: 86029535联系我们点击这里给我发消息。您也可以登录我们的论坛,留下您最宝贵的意见和建议。我们的最新版的软件总是可以在 http://www.antidebuglib.com下载。



 ©2006- AntiDebugLIB International Inc All Rights Reserved