JOBFUSQ

Logiciels développés pour WINDOWS

Mac sous conditions :CrossOver, Boot Camp, Parallels, VMware Fusion

JOBFUSQ permet de renommer tous les mots utilisés dans les fichiers de l'application : noms des variables, des procédures, des fichiers.class ainsi que les noms des ressources utilisées, placées dans un dossier et sous-dossiers.

Pas de procédure infaillible, l'objectif étant simplement de rendre incompréhensibles les différentes procédures et fonctions utilisées.

Ce logiciel peut être utilisé sur de petites applications créées par des amateurs de JAVA, et n'a pas vocation à obfusquer des applications plus conséquentes.

L'objectif étant de coder tous les mots créés par le programmeur, le traitement ANALYSE permet d'extraire tous les mots de tous les fichiers du dossier sources.

Si certains ou tous les mots ont été précodés, avec un préfixe (exemple : toutes les variables commencent par "v_" , toutes les procédures par "p_"), il suffira de l'indiquer dans la zone "préfixe" de la rubrique concernée, le logiciel les enregistrera dans un fichier et seront d'office retirés de la liste des mots à classer. Tous les mots de cette liste qui sont réellement des mots à coder seront ensuite copiés/collés (manuellement) dans le fichier des variables à coder.

Si aucun mot n'a été précodé, il appartient au programmeur d'analyser la liste des mots du fichier des mots extraits et de ranger les mots dans le fichier des variables, ou dans le fichier des mots réservés, soit d'ajouter des phrases dans le fichier des phrases réservées. Tout ce qui est réservé ne sera pas codé.

Du fichier des mots extraits peuvent être retirés automatiquement les mots listés dans la bibliothèque des mots JAVA, et dans les listes des mots définis par le programmeur (variables et mots réservés).

Après le traitement A et plusieurs traitements B (tri des mots) on obtiendra :

- le fichier qui contient les mots à coder;

- le fichier qui contient les mots à ne pas coder;

- le fichier qui contient les phrases à ne pas coder.

- le fichier qui contient les mots non codés et non réservés, sans intérêt particulier pour l'obfusquation.

Les noms des fichiers java et des fichiers ressources sont ajoutés aux variables, sauf indication contraire.

Le programmeur doit retirer manuellement les noms des fichiers à ne pas coder : par exemple les fichiers dont les noms sont obtenus par concaténation ("Paris" + "75000" = "Paris_75000") , contenus dans des liens HTML, etc.

Création de la liste de codage "code mot"

- les mots à coder ont au moins : de 2 à 30 caractères, à choisir.

- utilisation de codes de : 2 à 7 caractères, à choisir.

- ajouter aux codes un préfixe et/ou un suffixe, longueur non limitée

- utiliser la bibliothèque de codes intégrée : 14000 mots (factices) ressemblant aux noms des mots réservés de java, en proportion de : 10 à 100 %, possibilité de coder avec des codes et des mots factices.

- utiliser la liste des codes personnels : utiliser sa propre liste, en proportion de 10 à 100 %, complétée par des codes sur X caractères

* Une option permet de créer ses propres codes (d'un même nombre de caractères) en utilisant comme base un texte quelconque : le texte sera débarrassé des caractères interdits puis découpé selon la longueur souhaitée, sans doublons (texte de 5000 car. = environ 5000 codes de 12 car.)

Les codes utilisés sont générés par la fonction aléatoire (Random), tous les fichiers obtenus doivent être remplacés lors des tests de vérification, fichiers .java ET ressources.

Exemples de codage d'une même procédure

Les commentaires encadrés par /** */ ou précédés par le préfixe "//" sont supprimés.

original

/**

* Recherche par saisie zone édition

*/

private void rechercheDirecte01() {

posi01 = new HQUtiles().ASSLKeyUp(x_01E.getText(), MonAppli.trgLSmot);

// sélection selon index

x_01L.setSelectedIndex(posi01);

// visibilité de la liste

x_01L.ensureIndexIsVisible (posi01+10);

}

avec préfixe (pref_) + code de 6 caractères + suffixe (_sufx)

private void pref_uezvoa_sufx() {

pref_ypuvoi_sufx = new pref_wovvip_sufx().pref_vujvhn_sufx(pref_aahwro_sufx.getText(), MonAppli.pref_vyvvla_sufx);

pref_aaeweb_sufx.setSelectedIndex(pref_ypuvoi_sufx);

pref_aaeweb_sufx.ensureIndexIsVisible (pref_ypuvoi_sufx+10);

}

avec les mots factices internes

private void atwAscUnionOperations() {

belowOutputAttributeValueTrxception = new

belosImportAccessTrrror().bannMultanpleSelectanons(binDresingOutputStreemSpi.getText(), MonAppli.belosAubert);

binDresingOutputStreemImpl.setSelectedIndex(belowOutputAttributeValueTrxception);

binDresingOutputStreemImpl.ensureIndexIsVisible (belowOutputAttributeValueTrxception+10);

}

avec des codes de trois caractères

private void aph() {

euy = new cqr().bzy(ggo.getText(), MonAppli.cef);

ggn.setSelectedIndex(euy);

ggn.ensureIndexIsVisible (euy+10);

}