WIKI导航首页

流程:

相关下载:

各语言调用示例DEMO:

DLL函数原型说明:

关于我们

编辑

ApiFileCheck

 用处:最近有其它平台,以极其低劣的手段,采用替换优优云官方dll文件的方式 或者 以恶意软件修改用户机器的DNS指向,以盗取开发者的分成,此类行为极大的破坏了开发者的利益。
 用户使用替换过的DLL图片识别,导致开发者分成变成别人的,利益受损,
 凡加入此API文件校验的作者,成功验证后可获取100元充值卡。联系QQ:13136591

 新版DLL下载地址:
 新版DLL【2.0.0.0】已出, 新的DLL增加了:
 1、DLL函数校验,防替换功能
 2、DLL到软件的数据加密
 3、返还结果加密,防止hook
 3、Demo已写好校验结果子程序,接入简单!

(必须为图片识别结果申请50字节的存放空间!)

2.0.0.2版本DLL下载

 已更新DEMO:JAVAC/C++C#VB6VB.NETDelphiPython易语言AU3按键精灵TC


  防盗其实很简单:

  1、把API文件的MD5值和CRC32值取出来,再从优优作者后台拿到软件的ID、KEY、DLL校验KEY
  2、调用CheckApiSignA/CheckApiSignW函数并判断返回结果是否正确
  3、DLL到软件的数据加密,DLL返回给软件的结果不是单纯的答案,而是:md5(软件ID+DLL校验KEY+答案ID+答案.大写)_答案
  4、每次结果到软件都校验随机KEY是否正确

  注意:不用担心它的原理,保证99%不被替换。如果api文件和您的软件一起加壳的话,保证100%没有问题。原理在后面……


  详细4步集成安全校验功能:

     1、下载最新DLL

     2、调用CheckApiSignA/CheckApiSignW函数,用到的几个参数请细看说明

     3、比对校验结果参数pCheckResult的值的MD5值是否和右边算法相等: MD5(软件ID+大写DLL校验KEY+大写随机值参数+优优API文件的MD5值+大写的优优API文件的CRC32值)      DLL校验KEY如何获取?

     4、如果两值不相等,那么禁止图片识别   

        伪代码:
           判断 如果(   pCheckResult  不等于  MD5(软件ID+大写DLL校验KEY+大写随机值参数+优优API文件的MD5值+大写的优优API文件的CRC32值))
           那么   验证是否成功变量 = 失败

           图片识别函数那里:
              如果  验证是否成功变量  ==  失败
              那么  返回 错误:您替换了API,并禁止调用图片识别功能函数

  集成安全功能和升级DLL有什么好处:
         1、可以99%杜绝API文件被替换,修改DNS盗码,99%保障您的分成权益,除非对方反编译您的软件,或者您不愿意集成此方法
         2、新版DLL效率更高
         3、传输数据全线加密,抓包也分析不出来

   函数原型:

 --------------------------------------------------------------------------------------------------------------------

 UUAPI void WINAPI uu_CheckApiSignA(LONG nSoftID, LPCSTR lpSoftKey, LPCSTR lpGuid, LPCSTR lpFileMd5, LPCSTR lpFileCrc, LPSTR pCheckResult);
 UUAPI void WINAPI uu_CheckApiSignW(LONG nSoftID, LPCWSTR lpSoftKey, LPCWSTR lpGuid, LPCWSTR lpFileMd5, LPCWSTR lpFileCrc, LPWSTR pCheckResult);

 --------------------------------------------------------------------------------------------------------------------


 目的: 检查API文件是否被替换
 其它说明:函数名带W的为宽字节wchar,带A的为char

 参数列表:
        LONG           nSoftID                         软件ID      如何获取?  
        LPCSTR         lpSoftKey                     软件KEY.大写        如何获取?  
        LPCSTR         lpGuid                         作者软件生成的随机字符串.大写,每次验证前,此值必须变化。生成方法:比如使用MD5(RAND(time))生成一段随机字符
        LPCSTR         lpFileMd5                    优优API文件的MD5值.大写                  生成方法:利用MD5函数得到API文件的MD5值
        LPCSTR         lpFileCrc                      优优API文件的CRC32值.大写  (8位,不足8位请用0补齐) 生成方法:利用CRC32函数得到API文件的CRC32值   
                                                              --此参数可选,是为了防止部份语言不支持。但是:能够检查文件CRC值的语言都应该添加此参数,加此参数&MD5参数后,100%不会被替换文件
        LPSTR           pCheckResult               返回加密校验结果或者错误代码

 返回值:
	返回结果在pCheckResult中
        校验成功返回:MD5(nSoftID+DLL校验KEY.大写+lpGuid.大写+lpFileMd5.大写+lpFileCrc.大写)
        白话:MD5(软件ID+大写DLL校验KEY+大写随机值参数+优优API文件的MD5值+大写的优优API文件的CRC32值)

        错误代码:
	-1      //参数错误
	-2      //SID<=0
	-3      //软件ID不存在 或者被禁用
	-4      //无法解密
	-5      //Info解密不合法
	-6      //FileMd5为空或者无效
        -7      //随机GUID为空
	-8      //FileMd5不存在,非正版DLL
	-9      //DLL已过期
 */

 加密验证工作原理:
 1、在软件工程师设计的软件内部对被调用的UUWHelper.dll文件进行计算,得到MD5值和CRC32值,将其传入CheckApiSign函数体内部。
 2、CheckApiSign函数得到传入进来的MD5和CRC32值后,DLL内部计算自身的MD5和CRC32值,如果传入的值和自身值不相等,直接错误
 3、如果步骤2检测成功,对作者的MD5、CRC32、随机值参数(根据这个参数,可以让服务器返回来的结果变成随机的)、SoftID、SoftKey、一些特殊进行加密处理过后,上传到服务器
 4、服务器收到数据后,进行数据解密,并验证 MD5、CRC32、还有一些特殊的校验数据进行验证,如果验证成功,则返回加密后的数据
 5、DLL收到数据后,本地进行解密加密处理,并返回给软件正确的验证数据: MD5(nSoftID+DLL校验KEY.大写+lpGuid.大写+lpFileMd5.大写+lpFileCrc.大写),如:934ce6a7b8df0003bb7e7a6fb54c8387
 6、判断本地程序计算出来的结果与DLL返回来的值是否相等,如果相等。设置一个全局变量为真,在调用图片上传函数的时候,判断这个变量是否为真,如果是真,则上传图片。

 答疑:
 Q:我做一个DLL,做一个同样的函数不就行了吗?利用作者的SoftID和SoftKey向服务器请求数据?
 A:不行,因为 DLL校验KEY 是在服务器内部和软件内部才有的,不参与网络传输。所以只要得不到这个值,无论你怎么算,都得不到正确的校验结果。

 Q:我抓包找到服务器传回来的内容
 A:NO~,因为数据是加密过后的,私有Tea加密解密算法,每次算法都变化,UU悬赏10万破解我们的算法。我相信能解密UU算法的人,也不屑于来破解UU的DLL,他们有更重要的事要干,要去捍卫世界和平……

 Q:我验证成功后,再替换DLL不就OK了?
 A:您觉得运行中的DLL能被其它DLL替换掉吗?我是觉得不能。

 Q:hook
 A:每一个识别结果都有一个独特的随机KEY,让他们去猜吧
 注意:
 a)如果您不加此方法,我们无法帮助您
 b)如果您泄露校验KEY、软件ID和KEY,我们也无法帮助您……