Accueil > > > VBS POLYMORPHIC ENGINE V1.4.0
VBS POLYMORPHIC ENGINE V1.4.0
Information sur la source
Description
Voila un code qui, greffé sur vos vbscripts, les rendra polymorphes. Cela va bien plus loin que les moteurs polymorphiques traditionnels qui ne changent que la casse du script et rajoutent des lignes de commentaires. celui ci va modifier directement vos lignes de commandes et ainsi changer le code du fichier, sa structure, sa taille et sa casse. il est loin d'etre sans bug. j'essairai de le transformer en une classe cela sera bcp plus simple d'utilisation pour vous. Pour l'utiliser: -Copier coller le code source du moteur polymorphique a n'importe qu'elle endroit de votre script, de preference en dehors d'une procedure :) Pour optimiser l'efficacité: -Appliquer "option explicit" de maniere... implicite le moteur fonctionnera au maximum de ses capacités. Supprimez cette ligne de votre code source si elle est presente, elle ferait bugguer l'execution a coup sure. -Modifier les expressions regulieres de recherches de declarations/fonctions si vous avez des regles de codages strictes. Pour ceux qui n'aiment pas les regexp, celle definit par defaut fonctionneront dans la grande majorité des cas. Voila, faute de temps je dois vous laissez :) Bon décodage, Bye!
Source
- 'WONESEK POLYMORPHIC ENGINE v.1.4.0
-
- dim sIntIteration1 , sIntIteration2
- dim sStrVariables
- dim sArVariables
- dim sVarFlag1 , sVarFlag2 , sVarFlag3
- dim sArResultPosition()
- dim sArCodeStructure()
- dim sStrArIProcedure
- dim sStrArOProcedure
- dim sIntPointeurOProcedure, sIntPointeurIProcedure
- dim sIntVariableLength
- dim sObjFSO,sObjScriptPath,sObjScript,sObjRegExp
- dim sColResultat
- dim sIntResultat
- dim sStrCode
- dim sIntPositionPointeurCaractere
- dim sStrLigne2Code
- dim sIntPositionVBCRLF
-
- call initialiser()
- call rechercher_declaration("dim","(\( *\d* *\))|\(|\)| ")
- call rechercher_declaration("const","= *(\d*)| *")
- call rechercher_procedure("function")
- call rechercher_procedure("sub")
- call changer_position()
- call changer_variable()
- call changer_casse()
- call appliquer()
-
-
- sub initialiser()
- redim sArCodeStructure(1,0)
- set sObjRegExp = new regexp
- sObjRegExp.ignorecase = true
- sObjRegExp.global = true
- set sObjFSO = createobject("scripting.filesystemobject")
- set sObjScriptPath = sObjFSO.getfile(wscript.scriptfullname)
- set sObjScript = sObjFSO.opentextfile(sObjScriptPath, 1)
- sStrCode = sObjScript.readall
- sObjScript.close
- sStrCode = remplacer(sStrCode,"\n\r","")
- end sub
-
- sub appliquer()
- set sObjScript = sObjFSO.opentextfile(sObjScriptPath, 2)
- sObjScript.write sStrCode
- sObjScript.close
- end sub
-
- sub changer_variable()
- sStrVariables = remplacer("," & sStrVariables & ",",",+",",")
- sArVariables = split(sStrVariables,",")
- for sIntIteration1 = 1 to ubound(sArVariables)-1
- sStrCode = remplacer(sStrCode,"\b" & sArVariables(sIntIteration1) & "\b",creer_variable & sIntIteration1)
- next
- end sub
-
- sub changer_casse()
- sVarFlag3 = empty
- for sIntIteration1 = 1 to len(sStrCode)
- sVarFlag1 = mid(sStrCode, sIntIteration1, 1)
- if (asc(sVarFlag1) = 92) then
- sVarFlag2 = true
- else
- if sVarFlag2 then
- sVarFlag2 = false
- else
- randomize
- if cint(rnd * 1) = 1 then
- sVarFlag1 = lcase(sVarFlag1)
- else
- sVarFlag1 = ucase(sVarFlag1)
- end if
- end if
- end if
- sVarFlag3 = sVarFlag3 & sVarFlag1
- next
- sStrCode = sVarFlag3
- end sub
-
- function remplacer(pStrStr,pStrMotif2Recherche,pStrMotif2Remplacement)
- sObjRegExp.pattern = pStrMotif2Recherche
- remplacer = sObjRegExp.replace(pStrStr,pStrMotif2Remplacement)
- end function
-
- sub rechercher_procedure(procedure_type)
- call get_all_position_after_str(procedure_type)
- for sIntIteration1=1 to ubound(sArResultPosition)
- redim preserve sArCodeStructure(1,ubound(sArCodeStructure,2) + 1)
- sIntPositionPointeurCaractere = sArResultPosition(sIntIteration1)
- sArCodeStructure(1,ubound(sArCodeStructure,2)) = sIntPositionPointeurCaractere - len(procedure_type)
- sIntPositionVBCRLF = instr(sIntPositionPointeurCaractere,sStrCode,vbcr,1)
- sStrLigne2Code = mid(sStrCode,sIntPositionPointeurCaractere, sIntPositionVBCRLF - sIntPositionPointeurCaractere)
- sStrLigne2Code = remplacer( sStrLigne2Code , "(\( *\d* *\))|\(|\)| " , "," )
- sStrVariables = sStrVariables & "," & sStrLigne2Code
- sIntIteration1 = sIntIteration1+1
- sArCodeStructure(0,ubound(sArCodeStructure,2)) = sArResultPosition(sIntIteration1) + 4
- next
- end sub
-
- function creer_variable()
- randomize
- sIntVariableLength = int((20 * rnd) + 10)
- creer_variable = chr(int((25 * rnd) + 97))
- for sIntIteration2 = 1 to sIntVariableLength
- randomize
- if cint(rnd * 1) = 1 then
- creer_variable = creer_variable & chr(int((25 * rnd) + 97))
- else
- creer_variable = creer_variable & chr(int((10 * rnd) + 48))
- end if
- next
- end function
-
- sub rechercher_declaration(pStrType2Declaration,pStrMotif2Recherche)
- call get_all_position_after_str(pStrType2Declaration)
- for sIntIteration1=1 to ubound(sArResultPosition)
- sIntPositionPointeurCaractere = sArResultPosition(sIntIteration1)
- sIntPositionVBCRLF = instr(sIntPositionPointeurCaractere,sStrCode,vbcr,1)
- sStrLigne2Code = mid(sStrCode,sIntPositionPointeurCaractere, sIntPositionVBCRLF - sIntPositionPointeurCaractere)
- sStrLigne2Code = remplacer(sStrLigne2Code,pStrMotif2Recherche,",")
- sStrVariables = sStrVariables & "," & sStrLigne2Code
- next
- end sub
-
- sub get_all_position_after_str(pStrSrch)
- redim sArResultPosition(0)
- sObjRegExp.Pattern ="(\b" & pStrSrch & " +\w)|(end " & pStrSrch & ")"
- Set sColResultat = sObjRegExp.Execute(sStrCode)
- For each sIntResultat in sColResultat
- redim preserve sArResultPosition((ubound(sArResultPosition))+1)
- sArResultPosition(ubound(sArResultPosition)) = sIntResultat.FirstIndex + len(pStrSrch) + 1
- next
- end sub
-
- sub changer_position()
- redim sStrArIProcedure(ubound(sArCodeStructure,2)-1,1)
- for sIntIteration1 = 0 to ubound(sStrArIProcedure,1)
- sStrArIProcedure(sIntIteration1,0) = mid(sStrCode,sArCodeStructure(1,sIntIteration1+1),sArCodeStructure(0,sIntIteration1+1)-sArCodeStructure(1,sIntIteration1+1))
- randomize
- sStrArIProcedure(sIntIteration1,1) = rnd
- next
- for sIntIteration1 = 0 to ubound(sStrArIProcedure,1)
- for sIntIteration2 = sIntIteration1 to ubound(sStrArIProcedure,1)
- if (sStrArIProcedure(sIntIteration2,1) < sStrArIProcedure(sIntIteration1,1)) then
- sVarFlag1 = sStrArIProcedure(sIntIteration2,0)
- sVarFlag2 = sStrArIProcedure(sIntIteration2,1)
- sStrArIProcedure(sIntIteration2,0) = sStrArIProcedure(sIntIteration1,0)
- sStrArIProcedure(sIntIteration2,1) = sStrArIProcedure(sIntIteration1,1)
- sStrArIProcedure(sIntIteration1,0) = sVarFlag1
- sStrArIProcedure(sIntIteration1,1) = sVarFlag2
- end if
- next
- next
- sStrArOProcedure=sStrCode
- for sIntIteration1 = 0 to ubound(sStrArIProcedure,1)
- sStrArOProcedure = replace(sStrArOProcedure,sStrArIProcedure(sIntIteration1,0),"")
- next
- sStrArOProcedure = split(sStrArOProcedure,vbcrlf)
- sIntPointeurOProcedure = -1
- sIntPointeurIProcedure = -1
- sVarFlag1 = empty
- while ((sIntPointeurOProcedure <> ubound(sStrArOProcedure)) or (sIntPointeurIProcedure <> ubound(sStrArIProcedure,1)))
- randomize
- if (cint(rnd * 1) = 1) then
- if (sIntPointeurOProcedure <> ubound(sStrArOProcedure)) then
- sIntPointeurOProcedure = sIntPointeurOProcedure + 1
- sVarFlag1 = sVarFlag1 & sStrArOProcedure(sIntPointeurOProcedure) & vbcrlf
- end if
- else
- if (sIntPointeurIProcedure <> ubound(sStrArIProcedure)) then
- sIntPointeurIProcedure = sIntPointeurIProcedure + 1
- sVarFlag1 = sVarFlag1 & sStrArIProcedure(sIntPointeurIProcedure,0) & vbcrlf
- end if
- end if
- wend
- sStrCode = sVarFlag1
- end sub
'WONESEK POLYMORPHIC ENGINE v.1.4.0
dim sIntIteration1 , sIntIteration2
dim sStrVariables
dim sArVariables
dim sVarFlag1 , sVarFlag2 , sVarFlag3
dim sArResultPosition()
dim sArCodeStructure()
dim sStrArIProcedure
dim sStrArOProcedure
dim sIntPointeurOProcedure, sIntPointeurIProcedure
dim sIntVariableLength
dim sObjFSO,sObjScriptPath,sObjScript,sObjRegExp
dim sColResultat
dim sIntResultat
dim sStrCode
dim sIntPositionPointeurCaractere
dim sStrLigne2Code
dim sIntPositionVBCRLF
call initialiser()
call rechercher_declaration("dim","(\( *\d* *\))|\(|\)| ")
call rechercher_declaration("const","= *(\d*)| *")
call rechercher_procedure("function")
call rechercher_procedure("sub")
call changer_position()
call changer_variable()
call changer_casse()
call appliquer()
sub initialiser()
redim sArCodeStructure(1,0)
set sObjRegExp = new regexp
sObjRegExp.ignorecase = true
sObjRegExp.global = true
set sObjFSO = createobject("scripting.filesystemobject")
set sObjScriptPath = sObjFSO.getfile(wscript.scriptfullname)
set sObjScript = sObjFSO.opentextfile(sObjScriptPath, 1)
sStrCode = sObjScript.readall
sObjScript.close
sStrCode = remplacer(sStrCode,"\n\r","")
end sub
sub appliquer()
set sObjScript = sObjFSO.opentextfile(sObjScriptPath, 2)
sObjScript.write sStrCode
sObjScript.close
end sub
sub changer_variable()
sStrVariables = remplacer("," & sStrVariables & ",",",+",",")
sArVariables = split(sStrVariables,",")
for sIntIteration1 = 1 to ubound(sArVariables)-1
sStrCode = remplacer(sStrCode,"\b" & sArVariables(sIntIteration1) & "\b",creer_variable & sIntIteration1)
next
end sub
sub changer_casse()
sVarFlag3 = empty
for sIntIteration1 = 1 to len(sStrCode)
sVarFlag1 = mid(sStrCode, sIntIteration1, 1)
if (asc(sVarFlag1) = 92) then
sVarFlag2 = true
else
if sVarFlag2 then
sVarFlag2 = false
else
randomize
if cint(rnd * 1) = 1 then
sVarFlag1 = lcase(sVarFlag1)
else
sVarFlag1 = ucase(sVarFlag1)
end if
end if
end if
sVarFlag3 = sVarFlag3 & sVarFlag1
next
sStrCode = sVarFlag3
end sub
function remplacer(pStrStr,pStrMotif2Recherche,pStrMotif2Remplacement)
sObjRegExp.pattern = pStrMotif2Recherche
remplacer = sObjRegExp.replace(pStrStr,pStrMotif2Remplacement)
end function
sub rechercher_procedure(procedure_type)
call get_all_position_after_str(procedure_type)
for sIntIteration1=1 to ubound(sArResultPosition)
redim preserve sArCodeStructure(1,ubound(sArCodeStructure,2) + 1)
sIntPositionPointeurCaractere = sArResultPosition(sIntIteration1)
sArCodeStructure(1,ubound(sArCodeStructure,2)) = sIntPositionPointeurCaractere - len(procedure_type)
sIntPositionVBCRLF = instr(sIntPositionPointeurCaractere,sStrCode,vbcr,1)
sStrLigne2Code = mid(sStrCode,sIntPositionPointeurCaractere, sIntPositionVBCRLF - sIntPositionPointeurCaractere)
sStrLigne2Code = remplacer( sStrLigne2Code , "(\( *\d* *\))|\(|\)| " , "," )
sStrVariables = sStrVariables & "," & sStrLigne2Code
sIntIteration1 = sIntIteration1+1
sArCodeStructure(0,ubound(sArCodeStructure,2)) = sArResultPosition(sIntIteration1) + 4
next
end sub
function creer_variable()
randomize
sIntVariableLength = int((20 * rnd) + 10)
creer_variable = chr(int((25 * rnd) + 97))
for sIntIteration2 = 1 to sIntVariableLength
randomize
if cint(rnd * 1) = 1 then
creer_variable = creer_variable & chr(int((25 * rnd) + 97))
else
creer_variable = creer_variable & chr(int((10 * rnd) + 48))
end if
next
end function
sub rechercher_declaration(pStrType2Declaration,pStrMotif2Recherche)
call get_all_position_after_str(pStrType2Declaration)
for sIntIteration1=1 to ubound(sArResultPosition)
sIntPositionPointeurCaractere = sArResultPosition(sIntIteration1)
sIntPositionVBCRLF = instr(sIntPositionPointeurCaractere,sStrCode,vbcr,1)
sStrLigne2Code = mid(sStrCode,sIntPositionPointeurCaractere, sIntPositionVBCRLF - sIntPositionPointeurCaractere)
sStrLigne2Code = remplacer(sStrLigne2Code,pStrMotif2Recherche,",")
sStrVariables = sStrVariables & "," & sStrLigne2Code
next
end sub
sub get_all_position_after_str(pStrSrch)
redim sArResultPosition(0)
sObjRegExp.Pattern ="(\b" & pStrSrch & " +\w)|(end " & pStrSrch & ")"
Set sColResultat = sObjRegExp.Execute(sStrCode)
For each sIntResultat in sColResultat
redim preserve sArResultPosition((ubound(sArResultPosition))+1)
sArResultPosition(ubound(sArResultPosition)) = sIntResultat.FirstIndex + len(pStrSrch) + 1
next
end sub
sub changer_position()
redim sStrArIProcedure(ubound(sArCodeStructure,2)-1,1)
for sIntIteration1 = 0 to ubound(sStrArIProcedure,1)
sStrArIProcedure(sIntIteration1,0) = mid(sStrCode,sArCodeStructure(1,sIntIteration1+1),sArCodeStructure(0,sIntIteration1+1)-sArCodeStructure(1,sIntIteration1+1))
randomize
sStrArIProcedure(sIntIteration1,1) = rnd
next
for sIntIteration1 = 0 to ubound(sStrArIProcedure,1)
for sIntIteration2 = sIntIteration1 to ubound(sStrArIProcedure,1)
if (sStrArIProcedure(sIntIteration2,1) < sStrArIProcedure(sIntIteration1,1)) then
sVarFlag1 = sStrArIProcedure(sIntIteration2,0)
sVarFlag2 = sStrArIProcedure(sIntIteration2,1)
sStrArIProcedure(sIntIteration2,0) = sStrArIProcedure(sIntIteration1,0)
sStrArIProcedure(sIntIteration2,1) = sStrArIProcedure(sIntIteration1,1)
sStrArIProcedure(sIntIteration1,0) = sVarFlag1
sStrArIProcedure(sIntIteration1,1) = sVarFlag2
end if
next
next
sStrArOProcedure=sStrCode
for sIntIteration1 = 0 to ubound(sStrArIProcedure,1)
sStrArOProcedure = replace(sStrArOProcedure,sStrArIProcedure(sIntIteration1,0),"")
next
sStrArOProcedure = split(sStrArOProcedure,vbcrlf)
sIntPointeurOProcedure = -1
sIntPointeurIProcedure = -1
sVarFlag1 = empty
while ((sIntPointeurOProcedure <> ubound(sStrArOProcedure)) or (sIntPointeurIProcedure <> ubound(sStrArIProcedure,1)))
randomize
if (cint(rnd * 1) = 1) then
if (sIntPointeurOProcedure <> ubound(sStrArOProcedure)) then
sIntPointeurOProcedure = sIntPointeurOProcedure + 1
sVarFlag1 = sVarFlag1 & sStrArOProcedure(sIntPointeurOProcedure) & vbcrlf
end if
else
if (sIntPointeurIProcedure <> ubound(sStrArIProcedure)) then
sIntPointeurIProcedure = sIntPointeurIProcedure + 1
sVarFlag1 = sVarFlag1 & sStrArIProcedure(sIntPointeurIProcedure,0) & vbcrlf
end if
end if
wend
sStrCode = sVarFlag1
end sub
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|