Patcher express (générateur de patch)

Soyez le premier à donner votre avis sur cette source.

Vue 7 028 fois - Téléchargée 1 229 fois

Description

Voilà, comme je fait de plus en plus de petit crack et autre patch, j’ai eu mare de recode a chaque foi le « patcheur » et même si il existe déjà une ou deux source sur vbfrance a se sujet (en particulier celle EBArtSoft) je me suis fait plaisir :) .
Donc principale avantage de ma source par rapport au autre (et oui faut quand même que j’arrive a refiler se bout de code lol), déjà le look, si y a bien un point essentielle pour un crack c’est son look (enfin je trouve) a vous de juger (regarder la capture), après il est extrêmement personnalisable (Couleur des texte des titre, modification des titre des texte des bouton etc…)

L’exécutable qui permet la création des patch est le même que le « patcheur » la configuration du patcheur se met elle même a la fin du fichier et est « crypter » enfin si j’ose dir car c’est juste un passage des chaînes en hexa pour éviter que n’importe qui change les données.

Pour vous faciliter la tache il peu comparer 2 fichiers et déterminer tous seul les bit a patcher suivent les différences entre ces fichiers.

Vous trouverez dans le zip les sources du prog ainsi qu’un programme d’exemple et un patch pour enlever la pub en bas d’MSN Messenger pour voir se que sa peu donner.

Sinon pour se qui est du code intéressent vous trouverez une classe pour gérer facilement les icon dans le systray, un ContrôlUser, c ‘est un mélange entre un de flat bouton et des optionbutton, ainsi qu’un module de hash qui lui n’est pas de moi mais que j’utilise pour vérifier si le fichier a patcher est le bon (il est rapide et utilise les API de windows)

Voilà a vous de donner votre avis, et n’oublier pas de commenter :) .

Source / Exemple :


'Un petit extrait du code :

Private Sub comCompar_Click()
 Dim vFileOld() As Byte, vFileNew() As Byte
 Dim i As Long, j As Long, Ret As Long
 Dim vHwnd As Long, nSize As Long
    
    progBar.Value = 0
    
    If FileLen(txtFileOld.Text) <> FileLen(txtFileNew.Text) Then
        MsgBox "Les fichiers ne sont pas de la même taille !!!" & vbCrLf & _
               "Impossible d'appliquer de patch sur un fichier qui n'a pas la même taille", vbInformation, "Action impossible :"
        Exit Sub
    End If
    
    vHwnd = CreateFile(txtFileOld.Text, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
    
    nSize = GetFileSize(vHwnd, 0)
    Call SetFilePointer(vHwnd, 0, 0, FILE_BEGIN)
    ReDim vFileOld(nSize) As Byte
    Call ReadFile(vHwnd, vFileOld(0), UBound(vFileOld), Ret, ByVal 0&)
    Call CloseHandle(vHwnd)
    
    If Ret <> UBound(vFileOld) Then MsgBox "Erreur de lecture !!": Exit Sub
    
    vHwnd = CreateFile(txtFileNew.Text, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
    
    nSize = GetFileSize(vHwnd, 0)
    Call SetFilePointer(vHwnd, 0, 0, FILE_BEGIN)
    ReDim vFileNew(nSize) As Byte
    Call ReadFile(vHwnd, vFileNew(0), UBound(vFileNew), Ret, ByVal 0&)
    Call CloseHandle(vHwnd)
    
    If Ret <> UBound(vFileNew) Then MsgBox "Erreur de lecture !!": Exit Sub
    
    progBar.Max = nSize
    j = 10
    
    For i = 0 To UBound(vFileOld)
        If vFileOld(i) <> vFileNew(i) Then
            lstView.ListItems.Add(, , "&H" & Hex(i)).SubItems(1) = "&H" & Hex(vFileOld(i))
            lstView.ListItems(lstView.ListItems.Count).SubItems(2) = "&H" & Hex(vFileNew(i))
        End If
        
        If i = j Then progBar.Value = i: j = j + 20
    Next i
    
    progBar.Value = nSize
End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
18 janvier 2012

le language vb6fr.dll est introuvable dit ton fichier
Messages postés
122
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 février 2011

pour que mon programme fonctionne corectement dans l'IDE VB il faut au prealable le compiler une premiere foi car lors de son lencement il se "lit lui meme" pour voir s'il possed des information sur un crack (en fin de fichier) ou bien s'il n'a rien et de cet façon lance l'interface pr cree un crack. se ki explique l'erreur
Messages postés
463
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
21 avril 2010

Aprés analyse :
-au premier lancement de ton soft tu fais un Path = App.Path & "" & App.EXEName & ".exe"
puis Open Path For Binary As #1 donc la comme c est la premiere execution et que "pjt_Patcher_Express.exe" n existe pas encore tu le crée et il fait donc 0 Ko
ensuite tu demande a laligne suivante :
Get #1, LOF(1), Chaine ce qui n est pas possible sur un fichier de 0 Ko
j ai remplacer le fichier de 0Ko par un exe qui avais quelque Ko je le renomer en "pjt_Patcher_Express.exe" et la tout vas bien donc il faut que tu ecrive quelque chose dans le fichier "1" avant de faire un "LOF(1).
Messages postés
463
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
21 avril 2010

Je viens de me souvenir que j avais rencontré le meme probleme dans mon "Xcopyplus" et en effet cela vien du fait de ton "Option Explicit" qui est sur la premier ligne de ton module "M_Main".
Mais ce que je me souvient plus (c est trop loin),c est la solution que j avai trouvé car j avais effectivement besoin du option explicite
Messages postés
463
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
21 avril 2010

meme probleme que Sharkiller
-si je lance l exe j ai un message d erreur :"erreur d execution '7':mémoire insufisante".
-Si je lance depuis vb :erreur d execution '63':numéro d enregistrement incorect." sur effectivement le "get"
Open Path For Binary As #1
Get #1, LOF(1), Chaine
Close #1
qui se trouve dans :"Private Sub Main()"
et donc selon "Bilou" :
Une erreur est survenue lors d'une tentative d'accès à un fichier. Cause et solution de cette erreur :

Le numéro d'enregistrement dans une instruction Put ou Get est inférieur ou égal à zéro.
Vérifiez les calculs utilisés dans la génération du numéro d'enregistrement. Vérifiez que lesvariables contenant le numéro d'enregistrement ou utilisées dans le calcul des numéros d'enregistrement ne comportent pas de fautes de frappe. Un nom de variable mal orthographié est implicitement déclaré et mis à zéro, sauf si vous avez correctement placé Option Explicit dans lemodule.
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.