IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Remplacer plusieurs lignes de code hexadécimal dans un fichier


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 24
    Par défaut Remplacer plusieurs lignes de code hexadécimal dans un fichier
    Bonjour, je suis entrain de créer un logiciel du type SkinChanger pour le jeu Fortnite battle royale. Je voudrais que quand nous cliquons sur un certain bouton, le programme remplace une ligne précise contre une autres dans un fichiers .pak.
    Exemple de ligne :
    Chercher ça :
    50 6C 61 79 65 72 2F 4D 61 6C 65 2F 4D 65 64 69 75 6D 2F 42 6F 64 69 65 73 2F 4D 5F 4D 65 64 5F 53 6F 6C 64 69 65 72 5F 30 34 2F 53 6B 69 6E 73 2F 42 52 5F 54 61 63 74 69 63 61 6C 4A 75 6E 67 6C 65 2F 4D 61 74 65 72 69 61 6C 73 2F 4D 5F 4D 65 64 5F 53 6F 6C 64 69 65 72 5F 54 61 63 74 69 63 61 6C 4A 75 6E 67 6C 65 5F 30 31 2E 4D 5F 4D 65 64 5F 53 6F 6C 64 69 65 72 5F 54 61 63 74 69 63 61 6C 4A 75 6E 67 6C 65 5F 30 31

    Remplacer par ça :
    50 6C 61 79 65 72 2F 4D 61 6C 65 2F 4D 65 64 69 75 6D 2F 42 6F 64 69 65 73 2F 4D 5F 4D 65 64 5F 53 6F 6C 64 69 65 72 5F 30 34 2F 53 6B 69 6E 73 2F 48 57 30 31 5F 52 65 64 2F 4D 5F 4D 65 64 5F 53 6F 6C 64 69 65 72 5F 30 34 5F 48 57 30 31 5F 52 65 64 2E 4D 5F 4D 65 64 5F 53 6F 6C 64 69 65 72 5F 30 34 5F 48 57 30 31 5F 52 65 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


    Généralement pour faire se remplacement il faut le logiciel HxD. Je tiens a préciser que je ne suis pas très fort en tout se qui est technique niveau VB, je sais un petit peu programmer avec Microsoft Visual Basic 2010.

    Merci à ceux qui m'aideront.

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir,

    Le fichier .pak peut-il être lisible avec Notepad, peut-on y lire la chaine hex "en clair", c-à-d comme ça : 50 6C 61 79 65 72 2F 4D ... ou bien comme ça : 506C617965722F4D .... ?
    ou bien au contraire c'est du "binaire", comme ça : 8HD$XH‰ËH‰T$XL‰D ...


    ....

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 24
    Par défaut
    Tout d'abord bonjour, Phil Rob, merci de m'aider.

    Le fichier .pak est trop lourd pour être ouvert avec notepad ( 4,07 GB (4*370*878*770 bytes)).

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Je n'ai pas le moyen de répondre à ton problème pour 2 raisons.

    Nul ne peut chercher ce que tu ne sembles pas pouvoir définir. Des codes Hexa séparés par des espaces, ou non séparés, ou bien des caractères Ascii à convertir en Hexa pour faire les comparaisons. Mais comment peux-tu donner des exemples de contenu si tu ne peux "voir" l'intérieur du fichier ?

    Mais pis, la taille du fichier empêche de le lire entier en mémoire. Il faut donc le lire par blocs de tailles acceptables (pour une simple copie "manuelle" du fichier, je choisirais un buffer de quelques dizaines de Mo., voire quelques centaines ...) Dés lors qu'on lit le fichier par morceau, la recherche d'une suite de valeurs (qu'elle soit Ascii ou autre) relève d'un algorithme un peu complexe parce la suite cherchée peut se trouver "à cheval" sur deux morceaux de fichiers.
    Par exemple, ma 1ère phrase ci-dessus : 'Je n'ai pas le moyen de répondre à ton problème pour 2 raisons.'
    Aucune difficulté pour trouver le mot 'Problème' dans la phrase entière mais si la phrase est lue par buffer de 20 caractères, le mot 'Problème' n'est présent dans aucun bloc de lecture, il est 'à cheval' sur les 2ème et 3ème blocs lus :


    Je n'ai pas le moyen
    de répondre à ton p
    roblème pour 2 raiso
    ns.

    J'espère que d'autres sur le forum ont déjà été confrontés à ce type de problème ...

  5. #5
    Membre confirmé
    Homme Profil pro
    Trader / Formateur / Développeur Options CBOE
    Inscrit en
    Septembre 2018
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Trader / Formateur / Développeur Options CBOE
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2018
    Messages : 86
    Par défaut
    Bonsoir
    J'avais hésité à répondre avant même de lire que la taille pourrait être un obstacle, encore que pas forcément sur une plateforme 64 bits. Ça vaut le coup de tenter avec un StreamReader.
    HxD est un des outils de base que tout "hacker" a dans sa panoplie mais le problème que j'anticipe est que la chaîne à identifier n'est a priori pas exactement de la même taille que celle de substitution.
    Or si le programme est en hexadecimal donc en format exécutable, il est peu probable qu'il fonctionnera si sa taille est modifiée, sans même présager de l'efficacité du "patch".
    Il faut alors réfléchir à faire du "padding" généralement avec des 00 ou FF.
    Bonne chance !

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 323
    Par défaut
    Bonjour,

    si vous voulez remplacer le code hexadécimal par rapport a votre code à vous. il faut faire avec BinaryReader et BinaryWriter.
    voici un exemple dans ce lien :
    https://www.developpez.net/forums/d1...tomatiquement/

    tous les réponses sont dans ce lien.

    Cordialement,

  7. #7
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Quelques recherches simples amènent vite à se rendre compte que le but de la manoeuvre est d'obtenir gratuitement des skins pour perso qui normalement sont payants.
    Par conséquent, il y a fort à parier que c'est contre les CGU du jeu (flemme de vérifier) et donc est illégal.

  8. #8
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Sehnsucht Voir le message
    Quelques recherches simples amènent vite à se rendre compte que le but de la manoeuvre est d'obtenir gratuitement des skins pour perso qui normalement sont payants.
    Par conséquent, il y a fort à parier que c'est contre les CGU du jeu (flemme de vérifier) et donc est illégal.
    Je me fais exactement la même réflexion. Et puis, même si l'opération était légale, il n'en demeure pas moins, qu'un pirate, ou un bandit quelconque, pourrait utiliser les réponses obtenues pour perpétrer des geste illégaux. Et les règles du forum interdisent les questions qui pourraient porter sur le piratage.

    Mais comme je ne connais rien à Fortnite, ni à ses skins, je ne sais pas si l'opération est légale ou non. Mais je peux dire que je n'aime pas tellement ce sujet; parce que la frontière entre la légalité et l'illégalité reste floue.

  9. #9
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    La lecture du fichier en binaire (BinaryReader) et l'enregistrement de sa copie (BinaryWriter) avec les remplacements nécessaires en cours de copie est bien évidemment la meilleure solution car elle dispense de lire l'entièreté du fichier (ce qui ne peut être possible si notre PC à 4 Go. de Ram, par exemple) et permet l'écriture d'une chaine de remplacement plus longue ou plus courte que la chaine cherchée (sous réserve de la validité future du fichier produit, comme le signalait Bruno).
    Simplement, sauf à lire octet par octet (bonjour la durée), les lectures et écritures se font par lots (on lit et on écrit un vecteur, d'une taille donnée, de bytes). On en revient ainsi à la difficulté que je soulignais précédemment, de trouver la chaine cherchée lorsqu'elle est "à cheval" sur 2 vecteurs lus. C'est la principale difficulté de l'algorithme de Recherche-Remplace lorsqu'on ne dispose pas du fichier en seul lot d'octets en mémoire.

    Enfin, dans le cas précis de la question posée, nul ne pourra y répondre tant qu'un ne sait pas comment sont stockés les octets cherchés ni sous quelle forme il faut écrire ceux de remplacement ...

    Bon week-end à tous


Discussions similaires

  1. [XL-2010] Sélection de plusieurs ligne avec condition (Problème dans le code)
    Par yassine0077 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/02/2015, 10h18
  2. [Batch] Remplacer une ligne par une autre dans un fichier txt
    Par tinwul dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 03/07/2009, 13h58
  3. Réponses: 5
    Dernier message: 27/09/2007, 13h39
  4. Réponses: 34
    Dernier message: 08/03/2007, 14h51
  5. Réponses: 9
    Dernier message: 22/05/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo