Unmantained Guida [Tutto]Sugli Autopatchers

Una guida contrassegnata come Unmantained contiene informazioni su un argomento obsoleto, non più utile o files non aggiornati da parte del creatore.
Stato
Discussione chiusa ad ulteriori risposte.

Luca Pavus

Utente Gold
25 Dicembre 2010
584
31
123
243
########Premetto che la guida è in aggiornamento è non è conclusa in definitiva , aggiornerò appena possibile


1. Cos'è un Autopatcher? E a che serve?

1.1 Un autopatcher è un programma che ha la funzione di "patchare" e quindi di aggiornare un programma/file/cartella eliminando files
"obsoleti" o "danneggiati" e sostituendoli con dei files nuovi e correttamente funzionanti.

1.2 La su funzione Negli MMO e in particolare su Metin2 è quella di far scaricare i pack necessari ad rendere il client idoneo all'evulozione
del gioco stesso. Ultimamente dato il dilagamento di Cheat o Mod (come ad esempio il "OneShot") ha assunto la funzione di protezione del client.

2. Come programmare un autopatcher?

2.1 Per programmare un autopatcher non serve un linguaggior specifico , di fatto se ne può programmare uno dal C all'Autoit al VB passando per il C++, ecc...

In questa guida cercheremo di abbracciare nel modo più ampio l'argomento.

2.2 Su cosa si basa il codice di un aggiornamento efficente?

2.2 Il codice per un aggiornamento efficace si basa sul controllo della versione locale del programma/file/cartella e quella disponibile Online , e se
paragonando le due versioni si trova qualche differenza , si procede a scaricare ed installare l'aggiornamento.

Per far questo si deve associare ad un file di testo (collocato nel client) una variabile e fare la stessa cosa con un file di testo collocato nel vostro sito
quindi comparare .

Esempi in Vari linguaggi:

VB:

Dim st As System.IO.Stream
Dim sr As System.IO.StreamReader
Dim req As System.Net.WebRequest = _
System.Net.WebRequest.Create(link & "versione.txt")
Dim resp As System.Net.WebResponse = _
req.GetResponse
st = resp.GetResponseStream
sr = New System.IO.StreamReader(st)
Dim a = sr.ReadLine()


'legge la versione del client e la equivale alla textbox2
b = My.Computer.FileSystem.ReadAllText("./versione.txt")

'mette a confronto le due versioni
If a = b Then 'se sono uguali....





AutoIt:


Func _ControlloAggiornamenti()
If IniRead("serverinfo.ini","Informazioni","Versione",0)<_INetGetSource($LinkVersione) then
$Lampeggio=true
else
GUICtrlSetState($Bottone5,128)
EndIf
EndFunc


C#:

Non disponibile al momento...







Però


- Secondo la mia personale esperienza un buon codice di controllo e aggiornamento si basa invece su l'identificazione dle file che si vuole analizzare e della conparazione (rispetto sempre ai dati online ) dello stesso file.
Per identificare un file ci sono svariati modi e quivi li elencherò:
- Controllo Hash e in particolare : MD5 :
Md5 è il nome di un algoritmo crittografico di hashing. In pratica si tratta di una funzione che preso in input una qualunque stringa (ad esempio un intero file)
restituisce in output una stringa di 128 bits. Dal momento che è estremamente improbabile che due files diversi restituiscano in uscita la stessa stringa, questo
algoritmo viene spesso usato per verificare l’integrità degli stessi mediante il confronto dei relativi codici checksum.

- Comparare il nome del file , il suo peso , la data di creazione e l'autore. (qui non penso debba argomentare ...)

Sembra difficile, vero? Beh in realtà non lo è molto!

Infatti basta creare un funzione che legga uno per uno i files interessati* (per portare un esempio con metin2: quelli della cartella "pack") tramite un Loop
e assegni ogni volta una variabile da confrontare con quella online.


Esempi in vari linguaggi:



VB:
Non disponibile al momento...

AutoIt:

Non disponibile al momento...

C#:
Non disponibile al momento..
.


[GUIDE/Eseguibili & Fonti Utili]
Compilatori Di Autoptcher:


Guide su come Crearne:


Link Utili:

None



*per lettura di files qui si intende l'ottenere i valori che ho sopra riportato! [Codice Hash o informazioni sul file]
 
Ultima modifica da un moderatore:
Centra, centra :asd:

Edit: e poi in chat hai chiesto tu di commentare :asd:
catturakd.jpg


:asd:
 
Stato
Discussione chiusa ad ulteriori risposte.
Indietro
Top Bottom