[ALG] patching software

Pagina: 1
Acties:

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
[move maar naar SA als het niet van toepassing wordt geacht in P&W, ik verwacht echter dat ik hier de meeste repons kan krijgen]

Het is een typische vorm van Murphy's Law: In de eerste redelijk grote CD-ROM productie die we morgen releasen, zit ondanks uuuuren test en bugfixen toch nog een vervelende bug :'(. Op dit moment worden dus pak em beet 15.000 CD-ROMs met bug in de verpakking gestopt. Zuur. Maargoed, het zal niet de eerste keer zijn dat dit soort dingen gebeurt, en gelukkig hebben we gekozen voor een 'full harddisk install', zodat we zeer binnenkort een patch kunnen releasen die het probleem oplost (de bug is al gefixed).

Nu ben ik dus op zoek naar goed patching software voor Windows en Mac (OS9+OSX). Ik heb al iets gevonden voor Windows (van Funduc software), maar die maakt van een exe van 5MB een patch van 2.5MB, terwijl er slechts enkele regels code zijn veranderd. Dat moet toch beter kunnen? Heeft er iemand ervaring met het schrijven van patches of patching software?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je een stel programmeurs in de buurt hebt kun je dat toch makkelijk zelf maken?

Gewoon kijken wat de verschillen zijn tussen beide programma's (met bug en zonder bug) en die verschillen in een bestandje gooien. Vervolgense een exe maken die het bestandje inleest en uitvoert op de onge-patch-te software...

Relatief simpel te maken...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

RobIII schreef op 08 april 2003 @ 17:13:
Als je een stel programmeurs in de buurt hebt kun je dat toch makkelijk zelf maken?

Gewoon kijken wat de verschillen zijn tussen beide programma's (met bug en zonder bug) en die verschillen in een bestandje gooien. Vervolgense een exe maken die het bestandje inleest en uitvoert op de onge-patch-te software...

Relatief simpel te maken...
En hoe ga je het dan klein houden ??
Zelfs de minimale aanpassingen aan wat regels code, zorgt natuurlijk voor grote verschuivingen in een binair bestand (de gecompileerde EXE zeg maar). Om
op een redelijke compacte manier de verschillen duidelijk te maken, heb je toch
vrij geavanceerde software nodig denk ik.
Je moet rekening houden met
a. Veranderde binaire code.
b. Opgeschoven binaire code.

Ik heb zelf wel 's met wat pakketjes patches gemaakt, is al een tijd geleden, moet thuis eens ff kijken of ik die links nog heb. Weet alleen niet of het resultaat zeg maar ' compact' te noemen was.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Genoil schreef op 08 April 2003 @ 17:10:
Ik heb al iets gevonden voor Windows (van Funduc software), maar die maakt van een exe van 5MB een patch van 2.5MB, terwijl er slechts enkele regels code zijn veranderd. Dat moet toch beter kunnen?
dat hangt volledig van je code af. De compiler en linker zet al je code achter elkaar in 1 grote file. De functie-aanroepen zijn relatieve adressen vanaf het punt waarvandaan ze worden aangeroepen. Als jij dus bijvoorbeeld 4 functies hebt, functie1 t/m functie4, en functie3 verandert van grootte, dan wordt de inhoud van functie4 dus ook verandert, omdat de aanroepen naar functie1 t/m functie3 zich op hele andere relatieve adressen bevinden.

Bovendien, als je compiler of linker om een een of andere vage reden ineens besluit om de volgorde aan te passen (om alignment redenen bijvoorbeeld) verandert het resultaat ook ineens gigantisch. De geproduceerde machinecode hoeft dus totaal geen lineaire link te hebben met de programmacode, en daarom hoeft het ook lang niet altijd zo te zijn dat als een paar regels code veranderen ook slechts een paar bytes in de uiteindelijke executable wijzigen

Dit wordt nog eens verergerd als je ook nog een executable packer gebruikt, want dan is elke byte in de uiteindelijke executable min of meer afhankelijk van elke andere byte in de executable, en een wijziging van 1 kan dus enorme gevolgen hebben voor de rest

[ Voor 13% gewijzigd door .oisyn op 08-04-2003 17:24 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
okee bedankt voor de info :). we hebben helaas geen programmeurs die dat allemaal zelf kunnen, het is een Director produktie :). Dan maar een patch van 2.5 MB...