作者:庄晓立(liigo)

日期:2011-4-8

原创链接:http://blog.csdn.net/liigo/archive/2011/04/08/6310677.aspx

转换请注明出处:http://blog.csdn.net/liigo

  天乐软件加密狗(JDProtect),貌似几年前的软件,也很久没人更新了,这个暂且不管。本文并非推荐软件,而是介绍软件用法。本人(liigo)也不对此软件的质量和使用效果做任何评价,因为我也不甚了解。

  JDProtect本质上是一个加壳软件,同时又跟硬件加密狗用法比较相似,据说是一款结合了加壳和硬件加密狗双重优势的软件。其作者在文档中介绍说:

view plain
  1. 普通的加壳软件实际上是给主程序穿了一件衣服,这件衣服(即外壳)跟主程序之间没有任何逻辑上的联系,加壳后的程序运行时,先运行外壳,由外壳完成反跟踪及还原主程序等任务,等任务完成后,再跳到原主程序入口,到此,外壳便失去了它存在的价值,而且由于外壳对于主程序而言是不具有依赖性的(即主程序不会再去访问外壳,实际上主程序根本不知道外壳的存在),因此可以进行脱壳操作,使脱壳下来的程序依然可用。
  2. JDProtect软件狗的思路正是基于对上述加壳软件弱点的认识,提出了壳即是狗,狗即是壳的概念,通过技术手段把外壳和主程序有机地结合起来,使外壳成为主程序不可缺少的有血有肉的一部分,加壳后的程序运行时,仍然先运行外壳,由外壳完成反跟踪及还原主程序等任务,等任务完成后,再跳到原主程序入口,但到此,外壳仍然不可丢弃,因为主程序随时都可以通过访问狗中资源的方式访问外壳,检查外壳的真实性。如果进行脱壳操作,即相当于拿掉了狗,使脱壳下来的程序成为一个不完整的程序,无法运行。

  JDProtect软件给用户提供一个.lib文件、必要的头文件(C/C++的.h,汇编的.inc),和一个加壳加密加狗处理主程序(以下称为加狗程序)。其使用流程是,用户在自己的软件中调用.lib中的接口函数(进行必要的检测/核对),编译生成EXE后交给加狗程序处理生成新的EXE,后者即可对外发布了。加狗操作时可以指定用户ID、用户INFO、四个暗码(DWORD),还可以定义一个使用伪汇编编写的自定义算法(有诸多限制),用户通过接口函数操作以上数据和算法。

.h里的接口函数:

view plain
  1. extern "C" DWORD __stdcall  GetHardID(DWORD InParam);
  2. extern "C" DWORD __stdcall  GetUserID();
  3. extern "C" VOID  __stdcall  GetUserInfo(LPTSTR lpBuff);
  4. extern "C" DWORD __stdcall  GetSeedCode(DWORD InParam);
  5. extern "C" DWORD __stdcall  GetMyCode(DWORD InParam);
  6. extern "C" DWORD __stdcall  GetSecretCode(int num);

  它的.lib文件是一个空壳导入库文件,并没有实质功能代码,可能只是充当一个占位符,实质的加壳加密保护代码,是在后来加狗程序处理EXE时加进去的。作者提供了汇编语言的头文件.inc和C/C++的.h,并附有VC++6.0调用示例,说明这个JDProtect是主要针对汇编、C/C++用户服务的。作者还在文档中期望Delphi、C++ Builder、VB也能使用JDProtect,并希望有用户协助编写例程。我(liigo)个人对此表示怀疑,因为.lib并不是一个被多种编程语言普遍支持的一项技术(DLL才是)。

  易语言可以调用.lib。能被VC++调用的lib,易语言自然也不在话下。在易语言中调用.lib,只需准确填写好函数声明,除了需要填写基本的返回值类型、参数类型、所在lib文件外,最关键的是填写函数在.lib内的符号名称。怎么知道符号名称呢?一个方法是凭经验推断:stdcall的函数Func,其符号名称应该是_Func@n,其中n是函数参数入栈字节数(通常是4的倍数),例如上面GetHardID函数的符号就是_GetHardID@4;cdecl的函数Func的符号名称应该是_Func。更准确的方法是去.lib内部查询到底是什么符号,可以用VC++自带的dumpbin.exe这个小软件,命令行:dumpbin /all tlzj.lib > tlzj.txt,将tlzj.lib信息输出到tlzj.txt文本文件中,结果大致如下图:

有了具体的符号名称,在易语言中声明调用lib中的函数就很简单了,跟声明调用DLL如出一辙(符号名称填写到“在库中对应命令名”一栏):

  现在你知道为什么我用“填写”这个词了吧?在易语言中是以填写表格的形式声明和定义函数(如上图)。易语言默认以stdcall调用约定调用lib/dll内的函数;如果被调用的函数是cdecl,可在上图中的“在库中对应命令名”一栏最前面添加字符@,以告知易语言以cdecl调用约定调用该函数。另外多说一句,对于.lib中不是以“extern "C"”导出的C++函数,其符号名称通常怪异如“?vc_time2@@YAHXZ”(参见C++名称修饰(Name mangling)),易语言也同样支持调用它——只要你把符号名称填对了就行。易语言对.LIB和.DLL的调用支持是比较完善的。

  为了简化使用,我(liigo)为JDProtect开发了易语言调用模块“天乐软件狗(JDProtect)模块.ec”,易语言的普通用户不用任何技术前提,就可以很方便的调用JDProtect提供的开发接口了。下面是我(liigo)对此模块及其例程编写的简单的使用文档:

view plain
  1. ' 使用方法步骤:
  2. ' 1、静态编译生成EXE (此程序不支持非静态编译,也不支持在IDE中调试运行)
  3. ' 2、运行JDProtect.exe,选择刚才生成的EXE,输入各个参数,点击“加狗”按钮
  4. ' 3、加狗操作后的EXE就可以正常运行了
  5. ' 4、加狗后会自动生成与EXE文件名一样、后缀为.dog的配置文件,双击它可查看或修改加狗参数
  6. ' 模块和例程作者:liigo,http://blog.csdn.net/liigo,QQ:175199125

下载:JDProtect_0.90e,含易语言开发模块及其源码和例程 ——因为添加了易语言的内容,我(liigo)私自修改版本号为0.90e(原版本号是0.90b),在此向作者说抱歉啦。

全文完,谢谢收看。

转自 http://blog.csdn.net/liigo/article/details/6310677

使用天乐软件加密狗(JDProtect)保护您的软件,防止程序被跟踪/逆向/反编译/破解相关推荐

  1. 使用天乐软件加密狗(JDProtect)保护您的软件,防止程序被跟踪/逆向/反编译/破解...

    作者:庄晓立(liigo) 日期:2011-4-8 原创链接:http://blog.csdn.net/liigo/archive/2011/04/08/6310677.aspx 转换请注明出处:ht ...

  2. 对支持Linux系统的软件加密狗调研

    对支持Linux系统的软件加密狗调研 威步软件加密产品 http://www.wibu.com.cn/cn/产品.html 比特锁 http://www.bitanswer.cn/products/s ...

  3. 什么是灵活的软件授权模式,如何选择软件加密狗?

    作为软件和智能设备行业里的人,您很有可能听说过"灵活的软件加密打包"或"灵活的软件授权模式".但这些究竟指的是什么?灵活的软件模式可以归结为扩展客户的选择.它让 ...

  4. dspace软件加密狗不识别

    笔者安装完dspace软件后,需要进行解密才能使用软件.插入加密狗解密不成功,同时打开dspace control desk会出现报错 codemeter error XXX ,意思是加密软件缺乏许可 ...

  5. 海康iMVS-VM-6100/7100机器视觉软件加密狗

    软件介绍 VisionMaster是一款通用型机器视觉算法开发平台,图形化的交互,拖拽式的流程编辑方式,简单易用.包含140多个算法工具,广泛应用在定位引导,尺寸测量,读码,识别,检测等应用场景中. ...

  6. linux 软件加密狗,Linux  加密狗Sentinel  相关问题 20190505

    Linux 加密狗Sentinel相关问题 20190505 1. Linux 系统安装 v2c 文件的时候报错 48 haspvlib_xxxxxx.so 库文件拷贝到/var/hasplm 路径下 ...

  7. java反编译工具_如何保护Java程序 才能防止Java反编译

    简介:Java是一种跨平台的.解释型语言.Java 源代码编译中间"字节码"存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如 ...

  8. Halcon正版软件加密狗使用指南

    据悉,Halcon将在2020年11月20日发布新版本Halcon20.11,目前的最新版仍为20.05. 如果你购买正版的软件(分开发版和运行版,假定两个版本你都买了),将会得到一个开发狗和一个运行 ...

  9. 系统防火墙阻止了加密狗服务器,批处理利用Windows防火墙阻止程序和服务联网!...

    @echo off setlocal ENABLEDELAYEDEXPANSION mode con: cols=65 lines=25 color 0a rem 批处理获取管理员权限 :------ ...

最新文章

  1. 在用户控件中撰写JS时控件的客户端ID问题
  2. 前端代码标准最佳实践:HTML篇
  3. pyCrypto python 3.5--转
  4. [Pyhon大数据分析] 二.PyEcharts绘制全国各地区、某省各城市地图及可视化分析
  5. Ubuntu学习——第一篇
  6. pku 3270 Cow Sorting 置换群
  7. 基于Java+SpringBoot+vue+node.js实现自行车租赁平台管理系统
  8. 【Python】提升Python程序性能的好习惯
  9. asp.net ajax回调函数
  10. 架构整洁之道 pdf_代码有整洁之道,而架构同样有整洁之道
  11. 视频主观质量评价工具:MSU Perceptual Video Quality tool
  12. Java并发包的理解
  13. Python爬虫之一:十几行代码下载王者荣耀所有皮肤
  14. 齐鲁工业大学计算机学院复试名单,齐鲁工业大学2019年硕士研究生拟录取名单公示...
  15. 股市华为鸿蒙是什么意思,4月华为鸿蒙概念股市回顾数据(干货满满)
  16. 基于51单片机的智能窗口控制系统(protues仿真+程序+论文+PPT+PCB)
  17. unity学习笔记-Avpro和安卓结合
  18. 提高工作效率的工具[分享]
  19. Pimple研究及PHP框架搭建
  20. 给你一个杯子,你如何测试

热门文章

  1. css利用什么xhtml标记构建网页布局,css是利用什么XHTML标记构建网页布局
  2. STM32CbueMX之SPI_FLASH + FATFS + USB MSC + 虚拟扩容
  3. 《李开复:人工智能十讲》
  4. 数电实验4:彩灯控制器设计
  5. 从键盘接收一百分制成绩( 0~100),要求输出其对应的成绩等级 A~E。其中,90 分以上为'A',80~89 分为'B', 70~79分为'C', 60~69分为'D', 60 分以下为'E'。
  6. react + ant design InputNumber在form.item中 如何设置格式 比如 KG,CM
  7. Java对姓名, 手机号, 身份证号, 地址进行脱敏
  8. Receptive Field(感受野)的理解
  9. win10网络问题——能登QQ但是无法访问浏览器
  10. 日本趣味发明,窗帘上的男友保护独居女性,遭网友吐槽:安全神器秒变诱敌神器...