Ohjelma ja data yhdessä

Voiko jotenkin ohjelmatiedoston ja binääritiedoston yhdistää? Ja vielä niin että ohjelmasta pääsisi dataan käsiksi? Yritän tehdä itsepurkautuvan ohjelmatiedoston.

Ja kieli on ANSI C ja ympäristö Linux.
7615
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Voi yhdistää. Esim. allaoleva pätkä tulostaa ruutuun alkua tän foorumin html-koodista

#include
#include

int main(){
char data[]={
0x3C,0x68,0x74,0x6D,0x6C,0x3E,0x0D,0x0A,0x3C,0x68,0x65,0x61,0x64,0x3E,0x0D,0x0A,
0x3C,0x74,0x69,0x74,0x6C,0x65,0x3E,0x53,0x75,0x6F,0x6D,0x69,0x32,0x34,0x20,0x4B,
0x65,0x73,0x6B,0x75,0x73,0x74,0x65,0x6C,0x75,0x3C,0x2F,0x74,0x69,0x74,0x6C,0x65,
0x3E,0x0D,0x0A,0x3C,0x6D,0x65,0x74,0x61,0x20,0x68,0x74,0x74,0x70,0x2D,0x65,0x71,
0x75,0x69,0x76,0x3D,0x22,0x43,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x2D,0x54,0x79,0x70,
0x65,0x22,0x20,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x3D,0x22,0x74,0x65,0x78,0x74,
0x2F,0x68,0x74,0x6D,0x6C,0x3B,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3D,0x69,
0x73,0x6F,0x2D,0x38,0x38,0x35,0x39,0x2D,0x31,0x22,0x3E
};
int i;
int n;
n=strlen(data);
for (i=0;i

Äänestä
  • Mistä saisi ohjelman joka muuttaa binaari-tiedoston ascii Hex-tiedostoksi?

    Kuinka suuri ascii hex-tiedosto(char data[]) saa olla?(niin että kääntäjä hyväksyy sen?)

    Äänestä

  • Mutta jos datatiedosto on vaikka jpg-kuva?

    Eli tarkoitus tehdä ohjelman joka yhdistää vaikka 10 tiedostoa yhteen ja tekee siitä ajettavan ohjelman. Ja kun ajaa tämän ohjelman, niin se purkaa nämä tiedostot.

    Eli vähän niin kuin zip tiedosto exe päätteellä, mutta ilman pakkausta.

    Äänestä

  • ohjelma kirjoitti:

    Mistä saisi ohjelman joka muuttaa binaari-tiedoston ascii Hex-tiedostoksi?

    Kuinka suuri ascii hex-tiedosto(char data[]) saa olla?(niin että kääntäjä hyväksyy sen?)

    En ole c/c koodaaja niin ei varmana ole kovin laadukasta koodia =)

    Jos talletit ohjelman nimellä roska.cpp ja käänsit roska.exe:ksi niin rivillä:
    "roska binaryfile.dat" se lukee tuon tiedoston tavu kerrallaan muuttaen tavut lennosta 2 merkkisiksi heksakoodeiksi ja pukkaa ne couttiin mikä yleensä tarkoittaa näyttöä.

    "roska binaryfile.dat >outputti.txt" voi olla kätevämpi ;)

    Bugejakin voi olla, en vaivautunut testaamaan muuta kun että se näytti tekevän mitä pitää ;)

    #include
    #include
    using namespace std;

    void main(int argc, char *argv[])
    {
    char c, buf[3];
    ifstream infile;

    if(argc!=2) {
    cout

    Äänestä

  • aloittelija kirjoitti:

    Mutta jos datatiedosto on vaikka jpg-kuva?

    Eli tarkoitus tehdä ohjelman joka yhdistää vaikka 10 tiedostoa yhteen ja tekee siitä ajettavan ohjelman. Ja kun ajaa tämän ohjelman, niin se purkaa nämä tiedostot.

    Eli vähän niin kuin zip tiedosto exe päätteellä, mutta ilman pakkausta.

    >datatiedosto on vaikka jpg-kuva
    No eipä tuo tilanne muuksi muutu, dataksi taulukkoon vaan koko tiedosto. Taulukosta sitten tiedostoon levylle. Useille tiedostoille voi tehdä useita taulukoita (kankeaa) tai mielummin ehkä 2-ulotteisia, jossa 1. indeksi kertoo tiedoston ja toinen kys. tiedoston datan. Taulukkoon voi ennen varsinaista dataa pistää vaikka 32-bittisenä kokonaislukuna tiedoston pituuden eli vars. data alkaa vasta char-taulukossa indeksillä 4, 0-3 menevät pituudelle. Tai jotain tuohon suuntaan.

    Äänestä

  • Punikki & 7 hyypiötä kirjoitti:

    >datatiedosto on vaikka jpg-kuva
    No eipä tuo tilanne muuksi muutu, dataksi taulukkoon vaan koko tiedosto. Taulukosta sitten tiedostoon levylle. Useille tiedostoille voi tehdä useita taulukoita (kankeaa) tai mielummin ehkä 2-ulotteisia, jossa 1. indeksi kertoo tiedoston ja toinen kys. tiedoston datan. Taulukkoon voi ennen varsinaista dataa pistää vaikka 32-bittisenä kokonaislukuna tiedoston pituuden eli vars. data alkaa vasta char-taulukossa indeksillä 4, 0-3 menevät pituudelle. Tai jotain tuohon suuntaan.

    ..tiedä tuosta taulukosta. Mitä jos datatiedosto on gigan kokoinen? Aika iso taulukko pitäisi olla, ja muistia koneessa, jotta koko ohjelma mahtuisi muistiin.

    Äänestä

Tätä et kysynyt, mutta laitan kuitenkin tiedoksi, eli, ohjelmia itsepurkautuvan asennusohjelman tekemiseksi:
- 'Inno Setup' is a free installer for Windows programs. Käyttökelpoinen asennuspaketin kokoaja ja mikä tärkeintä, se on ilmainen ja toimii ok.
- 'WinZip Self-Extractor'lla voi tehdä itsepurkautuvia asennuspaketteja.
- 'InstallShield' kaupallinen asennuspaketteja kokoava ohjelma. Kevennetty versio sisältyy Borland C Builder kääntäjän mukana tuleviin apuohjelmiin.

Googlella löydetty eräs freeware asennusohjelma on 'GSfx Wizard' osoitteessa:
http://www.gdgsoft.com/gsfx/index.aspx
Ohjelman toimivuudesta ei ole mitään tietoa.

Äänestä

Kommentoi aloitusta


aloittelija kirjoitti:

Voiko jotenkin ohjelmatiedoston ja binääritiedoston yhdistää? Ja vielä niin että ohjelmasta pääsisi dataan käsiksi? Yritän tehdä itsepurkautuvan ohjelmatiedoston.

Ja kieli on ANSI C ja ympäristö Linux.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu