Exe módosítsa saját magát

Exe módosítsa saját magát
2007-09-28T17:44:53+02:00
2007-09-29T19:37:23+02:00
2022-11-06T01:30:37+01:00
alakeli
Egyetlen exe file-ba szeretném összehozni a programot és a hozzá tartozó mentések tárolását (több régi DOS-os játék is tudott ilyet,pl mentette a score's table-t). Kevesebb mint 1Kb-t szeretnék beleírni. Read-only módon exe-be tenni file-okat tudok (resource-ként bele fordítom), de kéne valahogy módosítani.
Várom az ötleteket.
Előre is köszi.
Mutasd a teljes hozzászólást!
Egyszer egy nagyon agyalós társaság elől kellett levédeni a progimat, nem lehetett se regedit írás, se temp, és még csak rendszergazda jogot sem kaphatott a felhasználó, és valami hasonlót kellett elkövetnem.
Én azt csináltam, hogy mikor már kész volt a használni kívánt EXE, akkor tettem bele egy plusz memo-t.
Majd írtam egy kisebb progit ami azokat a bizonyos karaktereket volt hivatott átírni.
Természetesen azok az átírandó karakterek is egy memo-ban voltak.
Majd a már EXE formátumú segédprogramot karakterenként bemásolod, az üres memódba, majd ujrafordítod a használni kívánt EXE-t.
A gyakorlatban az a lényege, hogy program mikor fut, és a változtatásra kerül a sor, akkor a memo-ból kiolvassa az EXE-t és elmenti EXE fájlként.
Majd a fő programmból már kivált segédprogi bezárja az alkalmazást, és aztán kedve szerint módosíthatja.
Természetesen csak a string típusokat nehogy bajt csináljon.
A ReadFile, WriteFile parancsokkal érdemes mert ott be lehet állítani, hogy egy fájlnál honnan kezdje, és fejezze be az olvasást, írást.
Na meg persze nem fog úgy elvérezni mint a OpenFile-nél ahol az első két karakternél már megadja magát, ha EXE-t kezd el olvasni.
Aztán ha végzett, akkor újra elindítja a főprogidat, majd bezárja magát. stb.
Asszem ennyi elég, hogy sínre tegyelek. ha forrást vársz tőlem, akkor arra egy kicsit várnod kell mert ez már egy régi projekt volt, de nem lehetetlen.
Üdv.
Pinyő
Mutasd a teljes hozzászólást!

  • Aztán magyarázd meg vhogy a víruskeresőknek, hogy a file-od nem rosszindulatú program... Szvsz ez nem túl jó ötlet!
    Mutasd a teljes hozzászólást!
  • Nem lehet.
    Mutasd a teljes hozzászólást!
  • Szerintem meg tök jó 5let. Úgy is mindenki szeret a program files mappába írogatni (aztán szidni a Vista-t). Miért ne tenné ezt egyből az exe-be?
    Mutasd a teljes hozzászólást!
  • UpdateResource() tudja modositani a resourcekat egy exe fajlban de szerintem sajat magat az sem tudja irni. Itt egy peldaprogram.
    Mutasd a teljes hozzászólást!
  • "szerintem sajat magat az sem tudja irni"
    bizony igy van.
    Rá kell venni egy másik programot, hogy csinálja meg miután a hivó progrm leállt.
    Mutasd a teljes hozzászólást!
  • Ennek fenyeben itt egy eleg eroteljesen sufnituning megoldas es valoszinuleg a viruskeresok se szeretik :)

    A foprogram resource szekciojaban van egy elore elkeszitett exe. A foprogram futasanak vegen kiirja a resource szekciojaban levo exet a temp konyvtarba majd elinditja. Elso parametere a szulo processz handleja masodik pedig egy GlobalAlloc hivassal foglalt memoriaterulet. Az inditott exe megvarja a szulo process kilepeset majd atirja a fajlt es felszabaditja a memoriateruletet.

    Szerk:
    A kibontott exet CreateFile(..., FILE_FLAG_DELETE_ON_CLOSE) hivassal hozd letre es meg a CloseHandle() elott hivj CreateProcesst. Igy ha terminal az inditott program akkor torli magat leven akkor szabadul fel az utolso nyitott handle ami a fajlra vonatkozik. Legalabbis elmeletben.
    Mutasd a teljes hozzászólást!
  • A FILE_FLAG_DELETE_ON_CLOSE már nem működik mai OS alatt, azaz utoljára NT 4-en hasított csak futtatható állományra.
    Helyette a FILE_DELETE_ON_CLOSE és az NTCreateFile használható, de inkább az új exe-t egy batch wrappelből egyszerűbb törölni.
    Mutasd a teljes hozzászólást!
  • Szia!
    Keress rá erre: ExeMod Latest

    Ez is trükkösen dolgozik, tulajdonképpen másolatot készít magáról temp néven, stb, de nekem bevált.

    szerk: ez egy unit, sokféle hasznos függvénnyel.
    Mutasd a teljes hozzászólást!
  • Ments a registrybe, az exe fájl updatelése nehéz téma.

    De ha mindenképpen ezt akarod, akkor adok 1 tippet.

    Rakj el a resource-ba egy vbs scriptet és egy exe-t.
    Kilépés elött csomagold ki a resource-ból a vbs scriptet és az exe-t.
    Ezután a vbs inditsa el aszinkronban a kicsomagolt exe-t, ami majd updateli az eredetit miután az leállt, majd amikor ez lefutott, a vbs script törli az eredeti exe-t majd sajámagát.

    A script le tudja magát törölni, igy ugy tünik, h. nem jött létre új fájl.
    Mutasd a teljes hozzászólást!
  • Egyszer egy nagyon agyalós társaság elől kellett levédeni a progimat, nem lehetett se regedit írás, se temp, és még csak rendszergazda jogot sem kaphatott a felhasználó, és valami hasonlót kellett elkövetnem.
    Én azt csináltam, hogy mikor már kész volt a használni kívánt EXE, akkor tettem bele egy plusz memo-t.
    Majd írtam egy kisebb progit ami azokat a bizonyos karaktereket volt hivatott átírni.
    Természetesen azok az átírandó karakterek is egy memo-ban voltak.
    Majd a már EXE formátumú segédprogramot karakterenként bemásolod, az üres memódba, majd ujrafordítod a használni kívánt EXE-t.
    A gyakorlatban az a lényege, hogy program mikor fut, és a változtatásra kerül a sor, akkor a memo-ból kiolvassa az EXE-t és elmenti EXE fájlként.
    Majd a fő programmból már kivált segédprogi bezárja az alkalmazást, és aztán kedve szerint módosíthatja.
    Természetesen csak a string típusokat nehogy bajt csináljon.
    A ReadFile, WriteFile parancsokkal érdemes mert ott be lehet állítani, hogy egy fájlnál honnan kezdje, és fejezze be az olvasást, írást.
    Na meg persze nem fog úgy elvérezni mint a OpenFile-nél ahol az első két karakternél már megadja magát, ha EXE-t kezd el olvasni.
    Aztán ha végzett, akkor újra elindítja a főprogidat, majd bezárja magát. stb.
    Asszem ennyi elég, hogy sínre tegyelek. ha forrást vársz tőlem, akkor arra egy kicsit várnod kell mert ez már egy régi projekt volt, de nem lehetetlen.
    Üdv.
    Pinyő
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd