Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Tiedoston liittäminen exeen?

Sivun loppuun

Sweiz [28.05.2007 21:29:39]

#

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.

tgunner [28.05.2007 21:34:50]

#

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 :)

Metabolix [29.05.2007 15:41:52]

#

Millähän tavalla olisit tunkemassa tiedostoa EXEn sisään? Eivätkös ne yleensä ole tiedostojärjestelmässä kaikkien luettavissa ihan normaaleilla tiedostonlukurutiineilla?

Sweiz [29.05.2007 16:51:01]

#

Ajattelin laittaa exen sisään tiedostoja niin, ettei käyttäjät pääsisi modaamaan niitä.

tgunner [29.05.2007 16:59:49]

#

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.

Deffi [29.05.2007 17:04:49]

#

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?

tgunner [29.05.2007 17:36:48]

#

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. :)

pieslice [29.05.2007 19:43:19]

#

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öä.

Sweiz [31.05.2007 14:29:42]

#

Bin2obj näyttäisi toimivan, kiitos.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta