Mitenhän saisin työnnettyä valmiiksi käännetyn exen sisään tiedoston toisesta sovelluksesta niin, että sitä voi sen jälkeen lukea kummastakin exestä? Käsittääkseeni exen koodi pitää jollain tapaa hakkeroida. Jos tiedätte jonkun DLL:n jolla niin voi tehdä, laittakaa myös esimerkkikoodia, kiitos.
Kuulostaa aika mielenkiintoiselta, koska juuri tätä viruksien "replikaattorit" tekevät. Ne porautuvat käynnistettävän tiedoston sisälle, ja kun tiedosto käynnistetään, viruksen replikaattori ajaa itsensä ennen varsinaista ohjelmaa. Sitten kanssa yleensä replikaattorit jättävät merkkiä myös tiedoston loppuun, jolloin voi tarvittaessa vain hypätä alkupaikasta loppuun ilman ohjelman ajamista läpi.
edit. njoo, aika rajusti meni aiheen sivuun :)
Millähän tavalla olisit tunkemassa tiedostoa EXEn sisään? Eivätkös ne yleensä ole tiedostojärjestelmässä kaikkien luettavissa ihan normaaleilla tiedostonlukurutiineilla?
Ajattelin laittaa exen sisään tiedostoja niin, ettei käyttäjät pääsisi modaamaan niitä.
Siis... sittenhän sinun täytyy vain kirjoittaa ne koodisi sisään datana. Jos vaikka haluat, ettei pelaaja muokkaa kuvitteellisen rts-pelisi karttoja, on sinun koodattava ne ohjelmaan. En tiedä, miten tämmöinen olisi muuten toteutettavissa.
Jaa'a, turhan vaikeeksi menee ja vaatii tuntemusta PE headerista.
Yksi temppu olisi luoda uusi section tai etsiä code cave (suuri määrä "tyhjää tilaa", .data sectionin lopusta yleensä löytyy) ja sinne sitten nakata toisen exen sisältö. Tosin hieman epäilen, miten mahtaisi sen toisen exen ajaminen sieltä enään onnistua. Ainakin alkuperäisen exen EntryPointtia muuttamalla PE headerista saisi ohjelman suorituksen "ohjattua" sinne toiseen exeen, sieltä vain pitäisi osata hypätä myös alkuperäiseen ohjelmaan. Kaiken lisäksi windowsin loaderin pitäisi todennäköisesti osata ladata kummatkin exet, mutta tiedä sitten siitä...
HLL:t ei niin kovin hyviä tämmöiseen puuhaan muutenkaan ole, kuin esimerkiksi assembly.
edit. vai ollaanko tässä edes toista exeä toisen exen sisään tunkemassa?
Deffi kirjoitti:
edit. vai ollaanko tässä edes toista exeä toisen exen sisään tunkemassa?
Minä ymmärsin, että tässä oltaisiin tunkemassa jotain tiedostodataa exeen, ettei käyttäjä voisi muokata exen kaverina lojuvia tiedostoja. :)
Kyllä tuohon on joku tooli olemassa, olisiko jopa GCC:n mukana, googleta Bin2Obj. Itse käyttämäni bin2obj variantti tekee obj filejä datasta, jotka voi linkittää exeen ja lukea pelistä dataa extern const char* muuttujan avulla. Kasvattaa kyllä exen kokoa ja muistinkulutusta reippaasti, datapakettisi verran.
Jos dataa on kymmeniä-satoja megoja, suosittelen mieluummin datan kryptaamista jollain tai jonkun archiverin - esim zlib - käyttöä.
Bin2obj näyttäisi toimivan, kiitos.
Aihe on jo aika vanha, joten et voi enää vastata siihen.