首页
社区
课程
招聘
[旧帖] [求助]帮我分析一下如下VF代码(ROCKEY2加密狗方面的) 0.00雪花
发表于: 2009-3-5 16:19 4709

[旧帖] [求助]帮我分析一下如下VF代码(ROCKEY2加密狗方面的) 0.00雪花

2009-3-5 16:19
4709
有个朋友给了我一个用VF6编写的源代码,本人不熟悉编程,麻烦前辈帮我分析一下这段代码,不胜感激

IF         !ok_ver
   && 非正式版不用加密狗
ELSE  && 正式版要加密狗
           &&========================================
           dogJudgement = .t.
           &&new ver
        #include "Rockey2.h"
           CLEAR  
           DECLARE integer   RY2_Find   IN Rockey2.dll
           DECLARE integer   RY2_Open   IN Rockey2.dll integer mode, integer uid, integer @ hid  
        DECLARE integer   RY2_Close  IN Rockey2.dll integer  hic
           DECLARE integer   RY2_GenUID IN Rockey2.dll integer  handle,integer @ uid, string @seed, integer isProtect
           DECLARE integer   RY2_Read   IN Rockey2.dll integer handle, integer block_index, string @ buffer512
           DECLARE integer   RY2_Write  IN Rockey2.dll integer handle, integer block_index, string @ buffer512

        buffer = space(512)
    buffer100= space(512)
    buffer0= space(512)
    buffer1= space(512)
    buffer3= space(512)
    buffer4= space(512)
    buffer5 = space(512)
    buffer6= space(512)
    buffer7= space(512)
    buffer8= space(512)
    buffer9= space(512)
    buffer10= space(512)
               
           STORE 0 TO  retcode,handle,black_index,uid,hid,hic,i,j,chance
          
        retcode = RY2_Find()       
           IF (retcode <= 0)
                dogJudgement = .f.
        ELSE
            uid = 1566904822 && 指定uid  lsg               
            retcode = RY2_Open(1, uid, @hid)                 
                   IF (retcode >= 0)
                      handle = retcode
                          block_index = 2 && lsg
                          retcode = RY2_Read(handle, block_index, @buffer)                          
                          IF (retcode < 0)                 
                         MESSAGEBOX('加密狗版本不正确,请重试!',64,'提示')
                         CLEAR DLLS
                         ON SHUTDOWN
                         QUIT
                      ENDIF
                        
                    block_index=0 && 指定字块 lsg
                        retcode = RY2_Read(handle, block_index, @buffer)                
                        buffer0=substr(buffer,402,1)
                        block_index=1 && 指定字块 lsg
                        retcode = RY2_Read(handle, block_index, @buffer)                
                        buffer1=substr(buffer,415,1)
                        block_index=3 && 指定字块 lsg
                        retcode = RY2_Read(handle, block_index, @buffer)                
                        buffer3=substr(buffer,458,1)
                        block_index=4 && 指定字块 lsg
                        retcode = RY2_Read(handle, block_index, @buffer)                
                        buffer4=substr(buffer,480,1)
                        block_index=0 && 指定字块 lsg
                        retcode = RY2_Read(handle, block_index, @buffer)                
                        buffer7=substr(buffer,403,10)
                        block_index=1 && 指定字块 lsg
                        retcode = RY2_Read(handle, block_index, @buffer)                
                        buffer8=substr(buffer,416,50)
                        block_index=3 && 指定字块 lsg
                        retcode = RY2_Read(handle, block_index, @buffer)                
                        buffer5=substr(buffer,459,19)
                        block_index=4 && 指定字块 lsg
                        retcode = RY2_Read(handle, block_index, @buffer)                
                        buffer6=substr(buffer,481,30)   
                        
                    IF buffer1=="." AND buffer4=="."  AND buffer0=="."  AND buffer3=="."  AND ALLTRIM(buffer7)=="" AND ALLTRIM(buffer5)=="" AND ALLTRIM(buffer8)=="" AND ALLTRIM(buffer6)==""   
                                block_index=2 && 指定字块 lsg
                               retcode = RY2_Read(handle, block_index, @buffer)                
                               buffer9=substr(buffer,221,1)
                               buffer10=substr(buffer,213,8)
                               buffer100=substr(buffer,208,5)
                               IF  buffer100== 'jxcbz' AND  buffer9=="."  AND ALLTRIM(buffer10)==""
                                       IF try_ver
                                    jxc_ver = 'jxcbz'
                            ELSE
                                       bz_ver = .t.                              
                            ENDIF
                                   *thisform.result.value="Read string variable from the dog successfully.The data is '" + "读取为,标准版(单机)!" + "' "
                               ELSE
                                       block_index=2 && 指定字块 lsg
                                        retcode = RY2_Read(handle, block_index, @buffer)                
                                       buffer9=substr(buffer,215,1)
                                       buffer10=substr(buffer,208,7)
                                       buffer100=substr(buffer,202,6)
                                       IF  buffer100== 'bz_net' AND  buffer9=="."  AND ALLTRIM(buffer10)==""
                                               IF try_ver
                                               jxc_ver = 'bz_net'   
                                    ELSE
                                               bznet_ver = .t.   && 标准网络版                           
                                    ENDIF
*!*                                        thisform.result.value="Read string variable from the dog successfully.The data is '" + "读取为,标准版(网络)!" + "' "
                                       ELSE
                                               MESSAGEBOX('加密狗版本不正确,请重试!',64,'提示')
                                        CLEAR DLLS
                                        ON SHUTDOWN
                                        QUIT
                                       ENDIF
                               ENDIF  
                       ELSE
                               MESSAGEBOX('加密狗版本不正确,请重试!',64,'提示')
                                CLEAR DLLS
                                ON SHUTDOWN
                                QUIT
                    ENDIF
                    RY2_Close(handle)      
                    ******变量恢复初始                       
                    uid = 0
                    block_index = 0
                    buffer = ""
                    ******变量恢复初始
                    dogJudgement = .t.
                ELSE
                      dogJudgement = .f.
                   ENDIF   
        ENDIF

        &&old ver
        IF !dogJudgement
                   DECLARE INTEGER DogRead IN win32dll INTEGER DogBytes, INTEGER DogAddr, STRING @DataStr

                   * Read string variable from the dog
                   DogAddr = 0                                && The address read
                   DogBytes = 6                        && The number of bytes
                   DataStr = '123456'       
                   ret = 0
                   Ret = DogRead(DogBytes,DogAddr,@DataStr)

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么没有人回我呀
2009-3-6 11:19
0
雪    币: 224
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
全部跳过,直接重写关键点.编译即可.
有源码把读狗全部去掉.生新生成即可.
qq:605341429
2009-3-9 00:00
0
雪    币: 235
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
咋一看怎么这么熟悉呀。。原来是某商场POS软件。。。
---------------
    uid = 1566904822 && 指定uid  lsg   
      retcode = RY2_Open(1, uid, @hid)   <=出了这个1 你就没办法硬复制了,还是象3楼那样想办法重新编译一个不读狗的EXE吧。。
2009-10-24 23:07
0
游客
登录 | 注册 方可回帖
返回
//