有个朋友给了我一个用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)
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法