为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

FoxShell使用说明

2018-09-07 13页 doc 436KB 56阅读

用户头像

is_957081

暂无简介

举报
FoxShell使用说明FoxShell 1.20使用说明 (User Guide) 感谢您选择品琳居工作室的VFP加密系列产品。FoxShell是FoxLock的姐妹产品,目前在国内不单独注册,只作为FoxLock共享版的一个附送产品(她是FoxLock 2.7正式发布前的一个过渡产品)。如果您想追求比较高的加密强度,请注册FoxLock共享版或商业版。 这个版本的FoxShell具有一定的加密强度,可以抵御目前所有的VFP解密工具,并对未知的解密工具具有比较好的防御性。非FoxLock注册用户只能用到本软件最基本的加密功能,加密后的文件同样...
FoxShell使用说明
FoxShell 1.20使用说明 (User Guide) 感谢您选择品琳居工作室的VFP加密系列产品。FoxShell是FoxLock的姐妹产品,目前在国内不单独注册,只作为FoxLock共享版的一个附送产品(她是FoxLock 2.7正式发布前的一个过渡产品)。如果您想追求比较高的加密强度,请注册FoxLock共享版或商业版。 这个版本的FoxShell具有一定的加密强度,可以抵御目前所有的VFP解密工具,并对未知的解密工具具有比较好的防御性。非FoxLock注册用户只能用到本软件最基本的加密功能,加密后的文件同样无任何限制且能够防止目前所有的VFP加密工具解码。 一、FoxShell的安装 在FoxShell的官方主页上可以下载到FoxShell的安装文件,只有Setup.Exe单个文件。运行这个安装文件,按提示完成FoxShell的安装 二、FoxShell的启动 双击桌面上的“FoxShell 1.20 专业版”即可启动FoxShell,在弹出语言选择窗口中可以选择您的缺省语言,在FoxShell 1.20版中,自带了简体中文、繁体中文和英文三种语言。 三、基本设置 在上面的系统设置中,我们可以关联一个FoxShell的项目文件, 项目文件里面保存了对目标文件的加密设置,下次我们加密的时候可以直接点击该图标或者使用FoxShell来打开这个项目文件。 四、软件注册 FoxShell现在在国内不能实行单独注册,她只作为FoxLock共享版的一个附加产品赠送FoxLock共享版的注册用户。如果您要获取注册版的FoxShell,您只能够通过注册FoxLock共享版来取得。 在填写好注册信息后,按“生成注册信息”按钮,系统将会提示您: 我会在受到注册信息文件后第一时间给用户发送注册授权文件,用户在收到注册授权文件后,把该文件放在FoxShell的安装目录,重新启动FoxShell即可完成注册。 如果您已经获取FoxShell 1.10的授权文件,只需要填写与1.10相同的注册信息并把授权文件复制到FoxShell 1.20的安装目录即可完成注册。 没有注册的用户只能使用FoxShell最简单的加密方式,里面的一些核心功能无法实现。 五、使用FoxShell来加密VFP程序 1、如何进行简单加密 您可以通过打开要加密的VFP程序,选择好加密后文件的存放目录,按加密即可。当然,您可以通过打开项目文件的形式来执行加密。 2、通过项目文件进行设置性加密 注意:FoxShell 1.20的项目文件由于作了比较大的改动,所以不能直接打开FoxShell 1.10的项目,请自行新建项目文件。 六、SDK(软件开发包) FoxShell 1.20开始提供SDK的接口,使用SDK可以通过VC++/ASM等写出一些VFP本身不能实现的功能。这些功能在加密后自然生效,在被脱壳后自动实效。 FoxShell 1.20初步加入了HardWare(硬件)、MD5、CRCS、SHA512四个内置的SDK,SDK的例子可以在安装目录\SDK\SAMPLE\里面找到。FoxShell另外一个激动人心的功能是可以将任意一个没有被加壳的DLL转换成SDK文件,在加密后您可以不附带这个DLL而调用DLL里面的全部功能。值得注意的是,原来的函数名须加上SDK_的前缀。 例如:原来有个DLL名叫MyDll.Dll,里面有个函数Add(nValue1,nValue2),原来的声明为: Declare Long Add In "MyDll.Dll" Long, Long,则转换成SDK的声明应该为 Declare Long SDK_Add In "Kernel32" Long, Long,函数名由Add()变成了SDK_Add() 七、使用SDK函数 FoxLock为用户提供了函数扩展开发接口,可以实现VFP不能实现的功能(如取硬件信息等),SDK函数在加密后会进行名称碎码,这样别人即使能够还原某部分代码的前提下,也读不懂带有SDK函数的注册模块。 1、SDK的调试 * FoxShell中暂时不提供SDK的调试器 * SDK的调试可以使用软件目录下的SDK自目录下的Debuger目录的Debuger.Exe,Debuger一经启动,立即会监视系统中VFP开发环境(支持VFP6~VFP9),接管SDK函数,方便用户进行调试。如下图所示: 2、SDK的声明 ************************************************************************************* && 声明 SDK && SDK 1.01 Written By Aming Plindge Studio, 2005.04 ************************************************************************************* ************************************************************************************* * 硬件信息SDK声明 保存在HardWare.SDK中 * -------------------------------------------------------------------- * 主板相关 * -------------------------------------------------------------------- SDK_GetBiosSerial(nType) 函数功能:取主板序列号(已经支持WINDOWS 2003 SP1) 参数:nType(0示返回Ascii,1表示返回16进制字符) 返回:字符cString 参考声明:Declare String SDK_GetBiosSerial In "Kernel32" Long * -------------------------------------------------------------------- * 网卡相关 * -------------------------------------------------------------------- SDK_GetMacData(nType) 函数功能:取系统装置的所有网卡信息 参数:nType(0表示返回网卡的数目,-1表示返回网卡信息集的地址) 返回:数值 参考声明: Declare Long SDK_GetMacData In "Kernel32" Long SDK_GetMacInfo(nNumber, nType) 函数功能:取指定的某个网卡的信息 参数:nNumber表示第几个网卡(不能超过上面SDK_GetMacData(0)所取得的网卡总数) nType表示要取网卡的信息,0 表示网卡类型,1表示网卡名称,2表示网卡的物理地址 返回:字符cString 参考声明:Declare String SDK_GetMacInfo In "Kernel32" Long, Long ************************************************************************************* 例子: LOCAL i, m, n m = SDK_GetMacData(0) n = SDK_GetMacData(-1) ? "取网卡个数: 共" + LTRIM(STR(m)) + "个,网卡信息地址: " + LTRIM(STR(n)) FOR i = 0 TO m - 1 ? "第" + LTRIM(STR(i + 1)) + "个网卡信息: " ? " 类型:" + SDK_GetMacInfo (i, 0) ? " 名称:" + SDK_GetMacInfo (i, 1) ? " 地址:" + SDK_GetMacInfo (i, 2) ENDFOR ************************************************************************************* * -------------------------------------------------------------------- * CPU 相关 * -------------------------------------------------------------------- SDK_GetCpuNumber 函数功能:取系统CPU的个数 参数:无 返回:数值nNumber 参考声明:Declare Long SDK_GetCpuNumber In "Kernel32" · 注意,在超线程的CPU中,可能得到2个CPU,可以再通过下面的SDK_GetCpuSerial函数来进一步判断,当CPU序列号相同可能就是超线程的CPU了。 SDK_GetCpuSerial(nNumber) 函数功能:取某个CPU的序列号 参数:nNumber 表示第几个CPU 返回:16进制字符cString 参考声明:Declare String SDK_GetCpuSerial In "Kernel32" Long SDK_GetCpuName(nNumber) 函数功能:取某个CPU的名称 参数:nNumber表示第几个CPU 返回:字符cString 参考声明:Declare String SDK_GetCpuName In "Kernel32" Long SDK_GetCpuVendor(nNumber) 函数功能:取某个CPU的制造信息 参数:nNumber表示第几个CPU 返回:字符cString 参考声明:Declare String SDK_GetCpuVendor In "Kernel32" Long ************************************************************************************* 例子: LOCAL i, m m = SDK_GetCpuNumber() ? "取 CPU 个数: 共" + LTRIM(STR(m)) + "个" FOR i = 1 TO m ? "第" + LTRIM(STR(i)) + "个CPU信息: " ? " 标记:" + SDK_GetCpuVendor(i) ? " 名称:" + SDK_GetCpuName(i) ? " 序列号:" + SDK_GetCpuSerial(i) ENDFOR ************************************************************************************* * -------------------------------------------------------------------- * 硬盘相关 * -------------------------------------------------------------------- SDK_GetHardDisk 函数功能:取系统硬盘的个数 参数:无 返回:数值nNumber 参考声明:Declare Long SDK_GetHardDisk In "Kernel32" SDK_GetModelNumber(nNumber) 函数功能:取系统某个硬盘的型号 参数:nNumber表示第几个硬盘 参考声明:Declare String SDK_GetModelNumber In "Kernel32" Long SDK_GetSerialNumber(nNumber) 函数功能:取系统某个硬盘的序列号 参数:nNumber表示第几个硬盘 返回:字符cString 参考声明:Declare String SDK_GetSerialNumber In "Kernel32" Long SDK_GetFirmwareRevision(nNumber) 函数功能:取系统某个硬盘的修正号 参数:nNumber表示第几个硬盘 返回:字符cString 参考声明:Declare String SDK_GetFirmwareRevision In "Kernel32" Long ************************************************************************************* 例子: LOCAL i, m m = SDK_GetHardDisk() n = 0 ? "共" + LTRIM(STR(m)) + "个硬盘" FOR i = 0 TO m - 1 n = n + 1 ? "编号为" + LTRIM(STR(i +1)) + "的硬盘的物理信息: " ? " 序列号:" + SDK_GetSerialNumber(i) ? " 型号:" + SDK_GetModelNumber(i) ? " 修正号:" + SDK_GetFirmwarereVision(i) ENDFOR ************************************************************************************* ************************************************************* ************************ * -------------------------------------------------------------------- * MD5 保存在MD5.SDK中 * -------------------------------------------------------------------- SDK_Get_CRAM_MD5(cString,cPassword) 函数功能:某段字符经过某个密码运算后的MD5值 参数:cString表示要进行MD5运算的字符,cPassword表示参与MD5运算的密码 返回:16进制的字符 参考声明:Declare String SDK_Get_CRAM_MD5 In "Kernel32" String @, String @ SDK_Get_Digest_MD5(cString) 参考声明:Declare String SDK_Get_String_MD5 In "Kernel32" String @ 函数功能:某段字符经数字运算后的MD5值 参数:cString表示要进行MD5运算的字符 返回:Ascii字符 注意:可以配合SDK_EnHex(cString) 函数使得返回值为16进制的可打印字符 参考声明:Declare String SDK_Get_Digest_MD5 In "Kernel32" String @ SDK_Get_String_MD5(cString) 函数功能:某段字符经字符运算后的MD5值 参数:cString表示要进行MD5运算的字符 返回:16进制的字符 参考声明:Declare String SDK_Get_String_MD5 In "Kernel32" String @ ************************************************************* ************************ * -------------------------------------------------------------------------------------- * CRCS 保存在 CRCS.SDK中,用于检测文件或字符是否被修改过 * -------------------------------------------------------------------------------------- SDK_Crc32(nAddress,nSize,nSeed) 函数功能:取某段内存的CRC32值 参数:nAddress表示内存地址,nSize表示要计算的长度,nSeed表示种子的长度 返回:数值nValue 参考声明:Declare Long SDK_Crc32 In "Kernel32" Long, Long, Long SDK_Crc32String(cString) 函数功能:取某段字符串的CRC32值 参数:cString表示要进行CRC32运算的字符 返回:数值nValue 参考声明:Declare Long SDK_Crc32String In "Kernel32" String SDK_Crc32File(cFileName) 函数功能:取某个文件的CRC32值 参数:cFileName表示要进行CRC32运算的文件的完整途径 返回:数值nValue 参考声明:Declare Long SDK_Crc32File In "Kernel32" String @ SDK_Adler32(nAddress,nSize,nSeed) 函数功能:取某段内存的Adler32值 参数:nAddress表示内存地址,nSize表示要计算的长度,nSeed表示种子的长度 返回:数值nValue 参考声明:Declare Long SDK_Adler32 In "Kernel32" Long, Long, Long SDK_Adler32String(cString) 函数功能:取某段字符串的Adler32值 参数:cString表示要进行Adler32运算的字符 返回:数值nValue 参考声明:Declare Long SDK_Adler32String In "Kernel32" String SDK_Adler32File(cFileName) 函数功能:取某个文件的Adler32值 参数:cFileName表示要进行Adler32运算的文件的完整途径 返回:数值nValue 参考声明:Declare Long SDK_Adler32File In "Kernel32" String @ 八、致谢 圈中朋友:ForGat、Kvllz、Ljtt、Hying、HeXer、GoldSun等。 参与测试的用户:一丁(特别感谢为我制作了个CHM的帮助)、GJ168、真爱无敌等。 有任何建议或问题请发邮件: foxlock@163.com 技术支持QQ: 48843388 主页: http://www.foxlock.net 可以按此按钮将调试器放系统的小任务栏。鼠标双击小任务栏的图标可以显示本窗体。 这个勾勾打上后,当您的目标EXE更新了版本则自动读取新的版本信息,否则直接读入上次加密保存的版本信息。 该区域填写产品相关信息。 注意:版本号的格式为 主版本,次版本,修正版本及私有版本,如1.20.1998.1,版本号填写格式不正确可能会引起编译资源失败。 FoxShell提供两种不同的加密强度:A和B,加密强度B的强度比A高,而加密强度B所要求的环境比较严格,加密后的文件请作测试。 FoxShell的保护密码长度支持<64K的任何文本,密码并非越长越好,因为参与运算的是密码的检校值而并非密码的本身。不同的密码所产生的加密密匙不同。 FoxShell提供25个级别的压缩级别,压缩级别越大,压缩率就越大,压缩所花费的时间越多。但并不影响运行时刻的速度。这个是由于所采用的压缩引擎自身的机制所决定的。 如果设置了不允许修改程序,那么再加壳后必须进行检校。注:FoxShell 1.20的引导程序本身已经过强壳加密,实际无须作二次加密。 FoxShell 1.20提供多线程和多部分解码,其实无须将线程设置的太多和文件分割得太细,每个线程(每部分)负责500K~1M已足够,因为加密后程序的处理数据流速度基本可达到10M/秒。 FoxShell 1.20 加入了程序的乱码功能,可以将变量名、属性名、函数名等进行乱码(在内存中存在的程序、表单片段照样保持乱码状态),这样即使反编译者可以得到文件,也无法正确反编译,因为涉及的变量名、属性名、函数名都已破乱不堪。 定义您改名前运行库和资源库的所在位置,方便程序在加密过程中自动生成相应的运行库和资源库,发布时使用系统生成的、改名后的运行库和资源库即可。 当你的系统准备运行于简体中文系统,在资源库的定位应为vfpxrchs.dll,繁体中文系统对应是vfpxrcht.dll,英文系统则是vfpxrenu.dll。上面的x表示VFP的版本号,目前是介于6~9之间。 FoxShell 1.20支持VFP的运行库和资源库随意该名(不得大于16字符),后缀名也可以任意改动,如上图。 鼠标双击列表的SDK库文件可以查看该SDK库里面包含的函数,如下图所示: 当你选了这个勾勾,加密过程中程序会自动分析您采用了哪些SDK库并将该SDK库编译进加密后的程序中。否则需要手动将SDK库添加进来。如果没有使用SDK则不需要作任何选择。 系统自动分析所采用的SDK函数 列举已经安装的SDK库。库保存在安装目录的SDK\Library子目录中。 把SDK库手动添加到SDK库待编译列表中。 保存所作的提示修改到配置文件中去。 选择提示的语言。可以自行编辑Runtime.INI增加您新的语言种类。 双击鼠标可以进入下图的编辑窗口。可以对提示窗口进行定制和设计。 均表示回车换行。 演示设计结果。
/
本文档为【FoxShell使用说明】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索