8/12/2007

Holly Poly Batch pour remplir :)

[For english people : see at the EOF ;)]

Allez hop juste pour remplir un peu l'blog (ben ouais faut bien commencer :p) j'vais vous copier/coller un p'tit paper que j'ai ecrit ya un moment et que comme par hasard j'ai retrouvé :D
Et ce paper est sur ... Le polymorphisme en batch :D
ouais ouais je sais c'est useless mais bon sa permettra toujours de demystifier un peu le polymorphisme ;)

Allez ctrl+C ctrl+V et c'est parti :)
(d'ailleurs j'vais probablement copier coller divers autres petits papers ecrits en temps jadis ;) des petites idées interessantes et tout et tout ;))
------------------------------------------------
--Le polymorphisme en batch

--By 505

Coder un moteur polymorphe c'est assez pratique ! et
en batch c'est possible !!
et oui !!
tout d'abord le pricincipe :
Il faut ecrire une variable bidon a la suite d'un bloc de code, donc il
faut recuperer une partie du code dans un fichier, generer une variable
bidon, ecrire cette vairable bidon a la suite dans le fichier puis continuer ..


Pour mettre en pratique le polymorphisme nous allons utiliser la commande
"find" qui permet de chercher une chaine de caractere dans un fichier
et retourne la/les ligne(s) ou est/sont situé(s) la chaine.
de quoi nous avons besoin :
-la commande find
-Plusieurs chaines de caracteres
-Un truc pour generer des variables bidons

Pourquoi "Plusieurs chaines de caracteres" ??
ben une chaine pour chaque bloc a reecrire entre les variables bidons generés !

Pour generer les variables on a deux choix devant nous :
Sous XP : Utiliser la variable predefinie %random% qui genere
un chiffre aleatoire entre 1 et 32767 !!
Sinon utiliser un petit script batch, c'est plus long mais bon :
-----------
:: le code principal (idée originale : Philet0ast3r / rrlf) ::
set nb=0
if "%nb%" EQU "9" set nb=0
set /a nb=%nb%+1
ver|time|find ",%nb%" > nul
if not errorlevel 1 (
echo %nb%
)

-----------

Pour generer un chiffre aleatoire avec ce code il faut faire une boucle
(ben oui si errorlevel 1 sa genere pas le chiffre !!)

donc voici un petit exemple de script polymorphe utiliant %random%
et le code de generation precedent :
-------------
%aaa%@echo off
%bbb%set nb=0
%bbb%set i=0
:again %bbb%
%bbb%if "%i%" EQU "11" goto fin
%bbb%set /A i=%i%+1
:again2 %bbb%
%bbb%if "%nb%" EQU "9" set nb=0
%bbb%set /a nb=%nb%+1
%bbb%ver|time|find ",%nb%" > nul
%bbb%if errorlevel 1 (
%bbb%set gen%i%=%nb%
%bbb%goto again
%bbb%)
%bbb%goto again2
:fin %bbb%
%bbb%set /A number=%gen1%*%gen2%*%gen3%*%gen4%*%gen5%*%gen6%*%gen7%*%gen8%*%gen9%*%gen10%*%gen11%
%bbb%set /A numberd = %gen3%+%gen7%*%gen9%
%aaa%echo ceci est un petit exemple de
%aaa%echo script batch polymorphe !
%aaa%echo ce code ecrit un premier bloc de code
%aaa%echo puis des variables bidons .
find "aaa" <%0> poly.bat
%bbb%echo %%%numberd%%% >> poly.bat
%bbb%echo %%%number%%% >> poly.bat
find "bbb" <%0>>poly.bat
%ccc%if not %os% EQU Windows_NT goto bye
%ccc%echo %%%random%%% >> poly.bat
%ccc%echo %%%random%%% >> poly.bat
:bye %ccc%
find "ccc" <%0>> poly.bat
--------------

Explications :
D'abord : c'est quoi ces %aaa%,%bbb%,%ccc% ??
Ce sont des variables vides,non declarés que l'on
utilise comme chaine de caractere pour find !!

le script genere tout d'abord deux chiffres aleatoires qui sont stockés
dans %number% et %numberd%
ensuite il affiche un petit texte puis il ecrit le bloc %aaa%
(toutes les lignes qui contiennent la chaine "aaa") dans poly.bat
ensuite il ecrit les deux chiffres generés precedemment dans poly.bat
puis il ecrit le bloc %bbb% et enfin, si le systeme est sous NT
il ecrit deux variables aleatoires generés avec %random% puis le bloc %ccc% !!


-
On peut ameliorer ce code en rajoutant quelques commandes comme :
IF %random% LEQ %random% echo cls >> poly.bat
ou des choses dans le genre, on peut aussi , grace a un systeme
de boucles et de conditions ecrire chaque bloc de maniere aleatoire !!

c'est a creuser ^^

Fin

------------------------------

Tioouuuu !! sa fait de l'effet dis moi 0_o c'est louche un peu ce truc d'ailleurs ;)

hophop oublions pas les anglophones :


FOR ENGLISH PEOPLE : i know there can be some people you don't
speak french on my blog, so i decided to write this article in english too
it's not wrote right now but it will, if it not,send me a msg, a mail
anything you want to make me write this !!
So the english version will be here :

http://vahan.d.free.fr/505/blog/en/poly_batch.txt

cya