Fordított fájl patchelése
2009-07-28T18:51:10+02:00
2009-07-30T12:35:32+02:00
2022-07-19T10:01:12+02:00
-Thor-
Sziasztok!
Van egy problémám, amire nem tudok más megoldást, ezért is írok ide.
Van egy program, ami nyílt forráskódú, azonban ebben egy bizonyos érték elég alacsony, ezt szeretném valamilyen patch formájában megemelni, ha ez lehetséges. Azért írok ide, mert más megoldás nem jutott eszembe, és mivel annyi mindenhez jelent meg már patch, remélem, tudtok nekem ebben segíteni. Sajnos a C ismeretem nagyon alacsony, de sajnos muszáj valahogy megoldanom ezt...
A válaszokat előre is köszönöm.
Mutasd a teljes hozzászólást!
Szerintem amire te gondolsz hogy csak úgy átírod ezt az értéket az nem nagyon fog működni, max fogsz egy hexeditort és nekiesel és magában az exeben átírod, ilyet még nem csináltam, meg hogy hogyan lehetne megtalálni ezt a konstanst
Amit én használtam még /wix3.0/ ott a patchelés úgy működött, hogy rendelkezned kellett a lefordított újabb verzióval és a patch kb annyit csinált, hogy nem kellett az egész fájlot átmásolni (régit törölni, újat be), hanem csak a két álloány különbségeit tartalmazta és ez alapján írta fellül (patchelte) a régebbit, gondolom ez teljesen általánosságban is így múködik
ha nyílt forráskód az egész, akkor megoldható...
lefordítod a megfelelő értékkel, majd valami 3rd party applicationnal a patchet
Mutasd a teljes hozzászólást!

  • Milyen érték alacsony? Mit értesz azon, hogy 'patch formájában megemelni?'
    Mutasd a teljes hozzászólást!
  • A program a DC++, pontosabban a StrongDC++ és módozatai. Ebben a ChatCtrl.cpp-ben használt '#define MAX_EMOTICONS 48' kódot szeretném felülírni saccper 100-ra.
    Úgy gondolom, hogy a lefordított programban felülírni. Nem tudom lehetséges -e, de annyi mindenhez jelent már meg ilyen módosítás, hogy gondoltam, egy kérdést megér. (A fordítsd le azzal nem jó megoldás)
    Mutasd a teljes hozzászólást!
  • De, pontosan az a jó megoldás.
    Mutasd a teljes hozzászólást!
  • Mint mondtam, nem.
    1; az új verziókban továbbra is 48 lesz.
    2; A felhasználók cserélni nem fognak, csak azért, mert kérem. Viszont a kiegészítőm csomagjába be tudom tenni, hogy a régi kliensben is írja felül ezt az értéket.
    Mutasd a teljes hozzászólást!
  • Szerintem amire te gondolsz hogy csak úgy átírod ezt az értéket az nem nagyon fog működni, max fogsz egy hexeditort és nekiesel és magában az exeben átírod, ilyet még nem csináltam, meg hogy hogyan lehetne megtalálni ezt a konstanst
    Amit én használtam még /wix3.0/ ott a patchelés úgy működött, hogy rendelkezned kellett a lefordított újabb verzióval és a patch kb annyit csinált, hogy nem kellett az egész fájlot átmásolni (régit törölni, újat be), hanem csak a két álloány különbségeit tartalmazta és ez alapján írta fellül (patchelte) a régebbit, gondolom ez teljesen általánosságban is így múködik
    ha nyílt forráskód az egész, akkor megoldható...
    lefordítod a megfelelő értékkel, majd valami 3rd party applicationnal a patchet
    Mutasd a teljes hozzászólást!
  • Vannak olyan programok, amik képesek arra, hogy egy program nem kér regisztrációs kódot - arra gondoltam, ez ennél is megoldható. A patvhelés, amit írtál, a mai napig működik Linuxon, de hogy winen hogyan lehetne.. Nem tudom. Valahogy pedig az exe fájlban kellene felülírni.
    Mutasd a teljes hozzászólást!
  • (persze, például a notepad.exe is képes arra, hogy ne kérjen regisztrációs kódot;)
    Amit szeretnél, azt bináris patchnek hívják, és persze mindenféle joggal ellentétes.

    A normális eljárás az, hogy kapcsolatba lépsz a fejlesztővel, és megkéred, hogy ez a paraméter ne legyen hardkódolva, hanem konfigfájlból vegye az értéket.
    Mutasd a teljes hozzászólást!
  • Igen, meg lehet csinálni, mivel erre a makróra csak egyszer hivatkozik a kód. "Csak" annyi a feladatod, hogy kikeresed ezt az egyetlen helyet az exe fájlban. (A .cpp forrás segíthet.)
    Mutasd a teljes hozzászólást!
  • szinte esélytelen szerintem.

    ha az optimalizáló úgy találja, akkor minden hova beírta a 48at fixen, sok helyen kéne átírni. most nézem hogy define szóval tuti, hogy minden helyre bepakolta.

    de az is lehet hogy csak hivatkozás van rá, akkor elég lenne 1 helyen átírni.

    a jó megoldás: "De, pontosan az a jó megoldás." "fordítsd le azzal"

    az új verziókban meg elfog csúszni ez a cím(mármint ahol a 48 van). szóval a patch-elő programot is át kéne írni minden verzióhoz.

    jav.:
    esetleg visszafejted w32dasm-al és megkeresd azt az értéket. bár vicces lesz, ha sikerül, és onnan patch-eled.
    Mutasd a teljes hozzászólást!
  • Üdv!
    Végülis a Te megoldásodat fogadtam el, mert ezek szerint máshogy nem lehet ezt a problémát elhárítani. Köszönöm.
    Mutasd a teljes hozzászólást!
abcd