首页
社区
课程
招聘
[旧帖] [求助]vfp反编译出来的代码,有兴趣的帮忙看一下 0.00雪花
发表于: 2009-3-6 15:42 4842

[旧帖] [求助]vfp反编译出来的代码,有兴趣的帮忙看一下 0.00雪花

2009-3-6 15:42
4842
vfp反编译出来的代码,懂vfp的帮忙看一下它的算法过程:

PROCEDURE DESTROY
IF NOT TYPE("mainform.caption") = "C"
   CLEAR EVENTS
   QUIT
ENDIF

PROCEDURE INIT
PARAMETERS kos
IF TYPE("kos") = "C"
   THISFORM.cmd3.enabled = .F.
ENDIF
IF NOT TYPE("mainform.caption") = "C"
   this.left = -2
   this.top = -30
ELSE
   THISFORM.cmd3.enabled = .F.
ENDIF
IF sysdata(80)
   THISFORM.cmd1.enabled = .F.
   THISFORM.text1.readonly = .T.
   IF sysdata(79)
      THISFORM.STATUBAR1.label1.caption = lang("授权于:")+sysdata(34)
   ELSE
      THISFORM.STATUBAR1.label1.caption = lang("授权于:")+sysdata(33)
   ENDIF
   THISFORM.blabel1.visible = .F.
ENDIF

PROCEDURE KEYPRESS
LPARAMETERS nkeycode,nshiftaltctrl

PROCEDURE INIT
IF sysdata(80) = .T.
   THISFORM.text2.value = ALLTRIM(regread("BBSERID","Software\serverice"))
   THISFORM.text1.value = "系统已经注册"
ELSE
   hy = getmac()
   dri = getdiskserial()
   blp = SUBSTR(DRI,AT("-",DRI)+1,LEN(DRI)-AT("-",DRI)+1)
   se = SUBSTR(HY,AT("-",HY)+1,LEN(HY)-AT("-",HY)-1)
   ok = "BLP"+ALLTRIM(STR(ASC(SE)))+ALLTRIM(STR(ASC(BLP)))
   ok = "REG"+SUBSTR(OK,4,LEN(OK)-3)
   sbb = ""
   sv = ALLTRIM(STR(SEC(DATETIME())))
   this.value = OK+"13"+IIF(SV = "13","07",ALLTRIM(STR(SEC(DATETIME()))))
ENDIF

PROCEDURE CLICK
hb = ALLTRIM(THISFORM.TEXT2.value)
IF THISFORM.KEY1.unkey(THISFORM.TEXT1.value) = SUBSTR(HB,4,AT("13",HB)-4)
   regwrite("BBSER",ALLTRIM(THISFORM.TEXT1.value),"Software\serverice")
   regwrite("BBSERID",ALLTRIM(THISFORM.TEXT2.value),"Software\serverice")
   xmessagebox("恭喜,您已经成为本软件的正式用户!",304,"注册成功")
   sysdata[80] = .T.
   hi = GETENV("windir")+"\serverice.dat"
   IF FILE(HI)
      DELETE FILE &hi
   ENDIF
   IF NOT TYPE("mainform.caption") = "C"
      CLEAR EVENTS
      QUIT
   ELSE
      thisform.release
   ENDIF
ELSE
   hi = GETENV("windir")+"\serverice.dat"
   IF FILE(HI)
      bl = ALLTRIM(FILETOSTR(HI))
      IF LEN(BL) = 0
         xmessagebox("因为您的操作!本软件的使用权已经被取消,请与软件供应商联系",272,"警告")
         CLEAR EVENTS
         QUIT
      ELSE
         bp = VAL(BL)
         IF BP > 3
            xmessagebox("因为您的操作!本软件的使用权已经被取消,请与软件供应商联系",272,"警告")
            CLEAR EVENTS
            QUIT
         ELSE
            bp = ALLTRIM(STR(BP+1))
            STRTOFILE(BP,HI)
         ENDIF
      ENDIF
   ELSE
      bo = "1"
      STRTOFILE(BO,HI)
   ENDIF
   xmessagebox("您的注册码无效,请重新输入!",304,"提示")
   THISFORM.text1.setfocus
   RETURN
ENDIF

PROCEDURE CLICK
= regwrite("BBSER","MjAwOC0wMi0xMyMw","Software\serverice")
xmessagebox("试用期限为3天,请及时注册本软件!",304,"提示")
DECLARE INTEGER GetModuleFileName IN kernel32 INTEGER, STRING @, INTEGER
lpfilename = SPACE(250)
lnlen = getmodulefilename(0,@LPFILENAME,LEN(LPFILENAME))
gt = (LEFT(LPFILENAME,LNLEN))
CLEAR DLLS GETMODULEFILENAME
! /n >
thisform.release
ON SHUTDOWN quit
CLEAR EVENTS
QUIT

PROCEDURE CLICK
_CLIPTEXT = ALLTRIM(THIS.PARENT.TEXT2.value)

PROCEDURE CLICK
IF NOT TYPE("mainform.caption") = "C"
   CLEAR EVENTS
   QUIT
ELSE
   thisform.release
ENDIF

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
太深奥了;看不懂!
2009-3-6 21:17
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
对照每条命令看MSDN,应该就懂了
2009-3-6 21:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼上的回答
2009-3-8 01:01
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你想知道什么?想找注册码?直接用od调试。
2009-3-11 22:19
0
雪    币: 1889
活跃值: (183)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
很明显,系统用来算注册码的关键函数你这儿没有,你把这个找到就可以算出了
sysdata(80) 就是把sysdata函数这个函数给个80参数,如果返回.T.就算注册了,进而再用sysdata(34)或sysdata33算出用户名,如果还有什么不懂直接联系我的QQ:86074731
2009-3-22 16:57
0
游客
登录 | 注册 方可回帖
返回
//