这是个原型,只能对PRG文件进行混淆,还未完善。

阿明的FOXSHELL看界面有 代码混淆功能,应是很好。

但我的需要,有些不同,要公开部分代码、公开部分二次开发接口,LEONID的混淆器只能
对EXE/APP处理,且BUG不小, 自主的混淆器暂时还是必须的。


  1VFP的代码混淆器,只在VFP9下运行正常
  2VFP的代码混淆器,只在VFP9下运行正常*- OBFUSCATOR ----------------------------------------------------------------------------------------------------
  3VFP的代码混淆器,只在VFP9下运行正常*-
  4VFP的代码混淆器,只在VFP9下运行正常*-    功能: 针对 PRG代码|代码串的 混淆器,只混淆local定义和lParameters定义。
  5VFP的代码混淆器,只在VFP9下运行正常*-
  6VFP的代码混淆器,只在VFP9下运行正常*-
  7VFP的代码混淆器,只在VFP9下运行正常*-    现行的算法: 只是替换 LOCAL定义和lParameters定义中变量。这两个关键字必须写全,不能缩写。
  8VFP的代码混淆器,只在VFP9下运行正常*-    替换的必须是 独立的“词”,以cSep来界定。 
  9VFP的代码混淆器,只在VFP9下运行正常*-
 10VFP的代码混淆器,只在VFP9下运行正常*-  未解决的问题: 
 11VFP的代码混淆器,只在VFP9下运行正常*-
 12VFP的代码混淆器,只在VFP9下运行正常*-        1. 能会误将 字符串中字符 的与local定义同形的 也混了。算法上应区别 textmerge等
 13VFP的代码混淆器,只在VFP9下运行正常*-             字符串中,不替换  
 14VFP的代码混淆器,只在VFP9下运行正常*-                    除非:  (1)在textmerge中 and <>之内;
 15VFP的代码混淆器,只在VFP9下运行正常*-                            (2& 之后
 16VFP的代码混淆器,只在VFP9下运行正常*-                            (3)type('VFP的代码混淆器,只在VFP9下运行正常')之内
 17VFP的代码混淆器,只在VFP9下运行正常*-                            (4)形如: evaluate('oObj.name') 中的oObj
 18VFP的代码混淆器,只在VFP9下运行正常*-                            (5
 19VFP的代码混淆器,只在VFP9下运行正常*-
 20VFP的代码混淆器,只在VFP9下运行正常*-           这个算法未做,但影响不大,只是某些情况下有字符串会乱了。 
 21VFP的代码混淆器,只在VFP9下运行正常*-
 22VFP的代码混淆器,只在VFP9下运行正常*-        2. 个funciton一起时. 应分开FUNCTION、分段处理的,目前是混在一起。有可能出错
 23VFP的代码混淆器,只在VFP9下运行正常*-      3. 换后,可能做成行长大于255。但vfp9好象没有行长限制了。
 24VFP的代码混淆器,只在VFP9下运行正常*-        4. 以分号续行的情况,未有考虑。
 25VFP的代码混淆器,只在VFP9下运行正常*-        5. 生成随机的变量名,除0o之外,应有其他选项。
 26VFP的代码混淆器,只在VFP9下运行正常*--------------------------------------------------------------------------------------------------------------------
 27VFP的代码混淆器,只在VFP9下运行正常
 28VFP的代码混淆器,只在VFP9下运行正常
 29VFP的代码混淆器,只在VFP9下运行正常Local cFile,cSep,cCode,aXtbl[1,2],i,j,k,cLine,cBin,nIdx,cVarDefKeyWord,cVarName,cVarCnt,nPos,cTmpCodes,cTmpLine
 30VFP的代码混淆器,只在VFP9下运行正常Local nIdx,cVarDefKeyWord,cVarName,cVarCnt,nPos,cTmpCodes,cTmpLine
 31VFP的代码混淆器,只在VFP9下运行正常
 32VFP的代码混淆器,只在VFP9下运行正常
 33VFP的代码混淆器,只在VFP9下运行正常*cFile = Getfile('prg')
 34VFP的代码混淆器,只在VFP9下运行正常*cFile = 'D:\02WORKSHOP\YXERP01\01STD\TEST\abc.PRG'
 35VFP的代码混淆器,只在VFP9下运行正常cFile = 'D:\02WORKSHOP\YXERP01\01STD\source\通用函数.PRG'
 36VFP的代码混淆器,只在VFP9下运行正常If Empty(cFile)
 37VFP的代码混淆器,只在VFP9下运行正常    Return .F.
 38VFP的代码混淆器,只在VFP9下运行正常EndIf
 39VFP的代码混淆器,只在VFP9下运行正常
 40VFP的代码混淆器,只在VFP9下运行正常*--
 41VFP的代码混淆器,只在VFP9下运行正常cCode=Filetostr(cFile)
 42VFP的代码混淆器,只在VFP9下运行正常cSep = Chr(13)+Chr(10)+Chr(9)+"()=+-*/&@<>.',%[] "+'"'
 43VFP的代码混淆器,只在VFP9下运行正常
 44VFP的代码混淆器,只在VFP9下运行正常*-- 1. 去掉注解-------------------------------------------------- 
 45VFP的代码混淆器,只在VFP9下运行正常cTmpCodes=''
 46VFP的代码混淆器,只在VFP9下运行正常For i=1 to GetWordCount(cCode,Chr(13)+Chr(10))
 47VFP的代码混淆器,只在VFP9下运行正常    cLine = Ltrim(GetWordNum(cCode,i,Chr(13)+Chr(10)) ,1,Chr(9),' ')
 48VFP的代码混淆器,只在VFP9下运行正常    If     Left( cLine,1= '*'
 49VFP的代码混淆器,只在VFP9下运行正常        Loop
 50VFP的代码混淆器,只在VFP9下运行正常    EndIf 
 51VFP的代码混淆器,只在VFP9下运行正常    
 52VFP的代码混淆器,只在VFP9下运行正常    nPos = At('&'+'&',cLine)
 53VFP的代码混淆器,只在VFP9下运行正常    If nPos > 0
 54VFP的代码混淆器,只在VFP9下运行正常        cTmp = Substr(cLine,1,nPos-1)
 55VFP的代码混淆器,只在VFP9下运行正常        If Occurs("'",cTmp)%2=0 and Occurs('"',cTmp)%2=0 &&不在字符串中
 56VFP的代码混淆器,只在VFP9下运行正常            cLine = cTmp
 57VFP的代码混淆器,只在VFP9下运行正常        EndIf 
 58VFP的代码混淆器,只在VFP9下运行正常    EndIf     
 59VFP的代码混淆器,只在VFP9下运行正常    
 60VFP的代码混淆器,只在VFP9下运行正常    cTmpCodes = cTmpCodes + Chr(13)+Chr(10+ cLine
 61VFP的代码混淆器,只在VFP9下运行正常Next 
 62VFP的代码混淆器,只在VFP9下运行正常cCode = cTmpCodes
 63VFP的代码混淆器,只在VFP9下运行正常
 64VFP的代码混淆器,只在VFP9下运行正常
 65VFP的代码混淆器,只在VFP9下运行正常
 66VFP的代码混淆器,只在VFP9下运行正常*-- 2.  取得local 及 lparameters 定义,生成对照表-------------------------------
 67VFP的代码混淆器,只在VFP9下运行正常cVarDefKeyWord='local'
 68VFP的代码混淆器,只在VFP9下运行正常nIdx = 0
 69VFP的代码混淆器,只在VFP9下运行正常Do While .T.
 70VFP的代码混淆器,只在VFP9下运行正常    nIdx = nIdx + 1
 71VFP的代码混淆器,只在VFP9下运行正常    nPos = Atc(cVarDefKeyWord,cCode,nIdx)
 72VFP的代码混淆器,只在VFP9下运行正常    If nPos = 0 
 73VFP的代码混淆器,只在VFP9下运行正常        If cVarDefKeyWord='local'
 74VFP的代码混淆器,只在VFP9下运行正常            cVarDefKeyWord='lparameters'
 75VFP的代码混淆器,只在VFP9下运行正常            nIdx = 0
 76VFP的代码混淆器,只在VFP9下运行正常            Loop 
 77VFP的代码混淆器,只在VFP9下运行正常        Else
 78VFP的代码混淆器,只在VFP9下运行正常            Exit            
 79VFP的代码混淆器,只在VFP9下运行正常        EndIf     
 80VFP的代码混淆器,只在VFP9下运行正常    Endif
 81VFP的代码混淆器,只在VFP9下运行正常
 82VFP的代码混淆器,只在VFP9下运行正常    cLine = Substr(cCode,nPos-1,500)
 83VFP的代码混淆器,只在VFP9下运行正常    cLine = Left( cLine, At(Chr(13),cLine))
 84VFP的代码混淆器,只在VFP9下运行正常    If Not Inlist(Left(cLine,1),Chr(10),Chr(13),' ')
 85VFP的代码混淆器,只在VFP9下运行正常        Loop
 86VFP的代码混淆器,只在VFP9下运行正常    EndIf
 87VFP的代码混淆器,只在VFP9下运行正常    
 88VFP的代码混淆器,只在VFP9下运行正常    cLine = Substr(cLine,Len(cVarDefKeyWord)+2)
 89VFP的代码混淆器,只在VFP9下运行正常
 90VFP的代码混淆器,只在VFP9下运行正常    If At('[',cLine)>0 or At('(',cLine)>0 &&array handling 
 91VFP的代码混淆器,只在VFP9下运行正常        cLine = Chrtran( cLine,'[]()', '****' )
 92VFP的代码混淆器,只在VFP9下运行正常        cTmpLine=''
 93VFP的代码混淆器,只在VFP9下运行正常        For i=1 to GetWordCount(cLine,'*')
 94VFP的代码混淆器,只在VFP9下运行正常            cTmp = Alltrim(GetWordNum(cLine,i,'*'),1,Chr(9),' ')
 95VFP的代码混淆器,只在VFP9下运行正常            If IsDigit(cTmp)
 96VFP的代码混淆器,只在VFP9下运行正常                Loop
 97VFP的代码混淆器,只在VFP9下运行正常            EndIf 
 98VFP的代码混淆器,只在VFP9下运行正常            cTmpLine = cTmpLine + cTmp 
 99VFP的代码混淆器,只在VFP9下运行正常        Next
100VFP的代码混淆器,只在VFP9下运行正常        cLine =  cTmpLine        
101VFP的代码混淆器,只在VFP9下运行正常    EndIf 
102VFP的代码混淆器,只在VFP9下运行正常    *---
103VFP的代码混淆器,只在VFP9下运行正常    
104VFP的代码混淆器,只在VFP9下运行正常    For i=1 To Getwordcount(cLine,',')
105VFP的代码混淆器,只在VFP9下运行正常        cVarName = Lower( Alltrim(Getwordnum(cLine,i,','),1,Chr(10),Chr(9),Chr(13),' ') )
106VFP的代码混淆器,只在VFP9下运行正常        cVarName =  GetWordNum(cVarName,1 ,'([')
107VFP的代码混淆器,只在VFP9下运行正常        If Ascan(aXTbl,cVarName,1,0,1,2+4)>0
108VFP的代码混淆器,只在VFP9下运行正常            Loop 
109VFP的代码混淆器,只在VFP9下运行正常        EndIf     
110VFP的代码混淆器,只在VFP9下运行正常        
111VFP的代码混淆器,只在VFP9下运行正常        If Vartype(aXtbl(1))<>'L'
112VFP的代码混淆器,只在VFP9下运行正常            Declare aXtbl( Alen(aXTbl,1)+12)
113VFP的代码混淆器,只在VFP9下运行正常        EndIf      
114VFP的代码混淆器,只在VFP9下运行正常        
115VFP的代码混淆器,只在VFP9下运行正常        aXTbl(Alen(aXtbl,1),1= cVarName 
116VFP的代码混淆器,只在VFP9下运行正常        cBin = ''
117VFP的代码混淆器,只在VFP9下运行正常        For j=30 To 0 Step -1
118VFP的代码混淆器,只在VFP9下运行正常            cBin = cBin + Iif(Bittest(Rand()*100000000,i),'0','o')
119VFP的代码混淆器,只在VFP9下运行正常        Next
120VFP的代码混淆器,只在VFP9下运行正常        aXTbl(Alen(aXtbl,1),2= 'o' + cBin
121VFP的代码混淆器,只在VFP9下运行正常        
122VFP的代码混淆器,只在VFP9下运行正常        wait window nowait '取得变量:  ' + padr(cVarName + ' ---> ' + 'o'+cBin,50)
123VFP的代码混淆器,只在VFP9下运行正常    Next
124VFP的代码混淆器,只在VFP9下运行正常Enddo
125VFP的代码混淆器,只在VFP9下运行正常
126VFP的代码混淆器,只在VFP9下运行正常
127VFP的代码混淆器,只在VFP9下运行正常*--3.   替换变量VFP的代码混淆器,只在VFP9下运行正常.o0o0o0o0o0oooo000 --------------------------------------
128VFP的代码混淆器,只在VFP9下运行正常For i=1 To Alen(aXTbl,1)
129VFP的代码混淆器,只在VFP9下运行正常    If Vartype(aXtbl(i,1))='L'
130VFP的代码混淆器,只在VFP9下运行正常        Loop
131VFP的代码混淆器,只在VFP9下运行正常    Endif
132VFP的代码混淆器,只在VFP9下运行正常
133VFP的代码混淆器,只在VFP9下运行正常    nIdx = 1
134VFP的代码混淆器,只在VFP9下运行正常    Do While .T.
135VFP的代码混淆器,只在VFP9下运行正常        nPos = Atc(aXtbl(i,1),cCode,nIdx)
136VFP的代码混淆器,只在VFP9下运行正常        If nPos=0
137VFP的代码混淆器,只在VFP9下运行正常            Exit
138VFP的代码混淆器,只在VFP9下运行正常        Endif
139VFP的代码混淆器,只在VFP9下运行正常
140VFP的代码混淆器,只在VFP9下运行正常        nBeforeChar = Substr(cCode,nPos-1,1)
141VFP的代码混淆器,只在VFP9下运行正常        nAfterChar = Substr(cCode,nPos+Len(aXtbl(i,1)),1)
142VFP的代码混淆器,只在VFP9下运行正常        If Not (nBeforeChar $ cSep Or Empty(nBeforeChar)) or ;
143VFP的代码混淆器,只在VFP9下运行正常                Not (nAfterChar $ cSep Or Empty(nAfterChar))
144VFP的代码混淆器,只在VFP9下运行正常
145VFP的代码混淆器,只在VFP9下运行正常            nIdx = nIdx + 1
146VFP的代码混淆器,只在VFP9下运行正常            Loop
147VFP的代码混淆器,只在VFP9下运行正常        Endif
148VFP的代码混淆器,只在VFP9下运行正常        *-----
149VFP的代码混淆器,只在VFP9下运行正常        cCode =  Left(cCode, nPos-1+ aXTbl(i,2+ Substr(cCode,nPos + Len(aXTbl(i,1)) )
150VFP的代码混淆器,只在VFP9下运行正常    EndDo
151VFP的代码混淆器,只在VFP9下运行正常
152VFP的代码混淆器,只在VFP9下运行正常    wait window nowait 'obfuscating  ' +  Str( i / Alen(aXTbl,1)*100,5,2) +' %  ' && +cVarName + ' ---> ' + 'o'+cBin
153VFP的代码混淆器,只在VFP9下运行正常Next
154VFP的代码混淆器,只在VFP9下运行正常
155VFP的代码混淆器,只在VFP9下运行正常StrToFile(cCode,'obfuscated.prg')
156VFP的代码混淆器,只在VFP9下运行正常Wait clear 
157VFP的代码混淆器,只在VFP9下运行正常
158VFP的代码混淆器,只在VFP9下运行正常Modify Command obfuscated.prg
159VFP的代码混淆器,只在VFP9下运行正常
160VFP的代码混淆器,只在VFP9下运行正常
161VFP的代码混淆器,只在VFP9下运行正常
162VFP的代码混淆器,只在VFP9下运行正常
163VFP的代码混淆器,只在VFP9下运行正常        
164VFP的代码混淆器,只在VFP9下运行正常

相关文章:

  • 2022-01-28
  • 2021-07-29
  • 2021-05-20
  • 2021-07-21
  • 2021-12-02
  • 2021-12-15
  • 2021-10-13
  • 2021-07-23
猜你喜欢
  • 2021-06-06
  • 2021-08-29
  • 2022-12-23
  • 2021-04-29
  • 2021-09-02
  • 2021-09-27
  • 2022-12-23
相关资源
相似解决方案