Kuinka päästä koodiin sisälle

Miten pääsen jonkun ohjelman koodiin sisälle? Imutin erään ilmaisohjelman jossa on muutama vit...ainen bugi jotka haluaisin yrittää korjata vaikka aloittelija olenkin. Ohjelma toimii visual basicilla.

Tarvitsenko jonkun ohjelman vai saanko sen auki omalla excelillä jossa siis VBA. Miten asia siis käytännössä hoituu, kuinka paljon täytyy kikkailla, niin ja onko se edes sallittua.
7971
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Lyhyt ja ytimekäs vastaus: mahdotonta. kerran käännettyä koodia on mahdotonta saada täsmälleen samanlaiseksi kuin lähdekoodi oli. ja erittäin hankalaa saada millaiseksi tahansa. ainoa mahdollisuus on disassemblerilla purkaa ohjelma assembly-koodiksi josta sitten yrität takaperin paikallistaa bugit. mutta tämä on ERITTÄIN vaikeaa, ja assembly-ohjelmointikieli on tunnettava oikeastaan täydellisesti ennenkuin tällaista voi lähteä kokeilemaan. ja excelin visual basicit ei liity asiaan mitenkään.

Äänestä
  • ...siis tarkoitatko että jos joku tekee könkkö ohjelman VBA:lla niin sitä ei pääse tutkailemaan, siis jos ymmärsin sinut oikein niin itse tekijäkään ei siis pysty sitä "avamaan", paitsi kertomallasi keinolla.

    Ilmeisesti minulla on pohjatiedoissa parantamista. Käännetäänkö ohjelman kieli siis jotenkin kun se on tehty vai mitä häh??? Miten virheet niistä onnistutaan jälkikäteen oikein korjaamaan jos asia on kuin esitit.

    -Pihalla

    Äänestä

  • Ex-programmer kirjoitti:

    ...siis tarkoitatko että jos joku tekee könkkö ohjelman VBA:lla niin sitä ei pääse tutkailemaan, siis jos ymmärsin sinut oikein niin itse tekijäkään ei siis pysty sitä "avamaan", paitsi kertomallasi keinolla.

    Ilmeisesti minulla on pohjatiedoissa parantamista. Käännetäänkö ohjelman kieli siis jotenkin kun se on tehty vai mitä häh??? Miten virheet niistä onnistutaan jälkikäteen oikein korjaamaan jos asia on kuin esitit.

    -Pihalla

    Mitäs muuten tarkotat VBA:lla? visual basic jotain?
    noh kuitenkin siis ohjelman tekijähän kirjoittaa lähdekoodin, ja sen jälkeen antaa sen kääntäjäohjelmalle joka tekee lähdekoodista binäärimuotoisen version, yleensä .exe päätteisen tiedoston. Ja tätä binäärimuotoista ei voi "purkaa" oikeastaan mitenkään. Ei edes ohjelman kirjoittaja. Ja bugikorjaukset tehdään siis lähdekoodiin joka käännetään sitten uudestaan. Sen takia on erittäin tyhmää heittää lähdekoodit pois kääntämisen jälkeen

    Äänestä

  • diufsdhfiop kirjoitti:

    Mitäs muuten tarkotat VBA:lla? visual basic jotain?
    noh kuitenkin siis ohjelman tekijähän kirjoittaa lähdekoodin, ja sen jälkeen antaa sen kääntäjäohjelmalle joka tekee lähdekoodista binäärimuotoisen version, yleensä .exe päätteisen tiedoston. Ja tätä binäärimuotoista ei voi "purkaa" oikeastaan mitenkään. Ei edes ohjelman kirjoittaja. Ja bugikorjaukset tehdään siis lähdekoodiin joka käännetään sitten uudestaan. Sen takia on erittäin tyhmää heittää lähdekoodit pois kääntämisen jälkeen

    OK!

    VBA siis ilmeisesti vain VB.

    Äänestä

  • Never-programmer kirjoitti:

    OK!

    VBA siis ilmeisesti vain VB.

    VBA (VisualBasic for Aplications) ei ole yhtä kuin VB. VBA:ta ohjelmoidaan toimisto-ohjelmillasi, eli Wordilla, Ecxelillä & kumppaneilla. Koodia ei käännetä, joten voit avata sen helposti ja korjata bugit (tosin jonkinlainen koodin korjaaminen saattaa olla ajateltavissa).

    Äänestä

  • ei, ei kirjoitti:

    VBA (VisualBasic for Aplications) ei ole yhtä kuin VB. VBA:ta ohjelmoidaan toimisto-ohjelmillasi, eli Wordilla, Ecxelillä & kumppaneilla. Koodia ei käännetä, joten voit avata sen helposti ja korjata bugit (tosin jonkinlainen koodin korjaaminen saattaa olla ajateltavissa).

    Perinteisesti Basic ei ole kääntäjä vaan tulkki, eli Basic ohjelma oli pelkkä tekstitiedosto, vapaasti muutettavissa (joskus avainsanat ("for", "next", "print" jne korvattiin avainkoodeilla tulkkausnopeuden parantamiseksi (ei tarvitse tarkista pienet/suuret kirjaimet, ylimääräiset välilyönnit ym), mutta ohjelmatiedosto oli kuitenkin tulkattavaa ohjelmakoodia mitä melko pienellä vaivalla voi muuttaa millä tahansa tekstieditorilla.

    Nykyään usemmat Basic-"tulkit" kääntävät ohjelmat kone (prosessorikohtaisiksi) käskyiksi. Käännetyssä ohjelmassa ei ole mitään jäljellä alkuperäisestä koodista (ei koodirivejä, ei muuttujanimiä, ei kommenttejä...ainoastaan prosessorikäskyjä!) Periaattessa konekoodista voi selvittää mitä ohjelma tekee, niitä konekielisiä käskyjä on vaan jokaista "korkeamman" kielen käskyä kohti 10-100 kertaa enemmän. Eli tällainen "reverse engineering" ei todella ole mikään harjoitustehtävä aloittelijalle!

    VBA on skriptikieli mitä MS käyttää tehtävien automatisointiin eri sovelluksissa (VBA-skripti esim Wordissa ei välttämättä ymmärrä yhtään mittän mitä sen ympärillä tapahtuu jos sitä yritetään käyttää Excelissa. VBA on aika pitkään oliopohjainen, ja oliot joihin vitataan ovat täysin erilaisia tekstinkäsittely- ja taulukkolaskentaohjelmassa.

    VBA toimii tavallisesti tulkkaavana (voit Wordissa tai Excelissä saada esille alkuperäisen koodin) mutta ei aina. VBA on paperitiikeri jolla on hampaat, tarvittaessa sekin pystyy kääntämään koodia konekieleksi (esim Excelin Add-in , .xla, ei enää ilman vaivaa ole luettavissa!

    Kuten sanoin, VBA on skriptikieli eri sovelluksille.

    Jos teet itsenäistä ohjelmaa Basicillä, MS tuotenimi ei ole VBA vaan Visual Basic. Tämä tekee myös (tai aina) käännettyjä ohjelmia.

    Ero tulkin ja kääntäjän välillä on karkeasti tämä: Kääntäjä tekee AINA kaksi tiedostoa, alkuperäinen koodi (.src, .c, .h, .cpp ym) sekä toinen tiedosto joka on tyypiltään .bin (tai .exe, .dll ym). Nämä kakkosvaiheen tiedostot eivät ymmärrä kukaan muu kuin kone itse. Tulkki tekee YHDEN tiedoston.

    Ei sinusta hakkeri tule kirjoittamalla viestejä tänne. Ei tällä palstalla sellaista tietämystä löydy, ei alkuunkaan (vaikka tavallisin nimimerkki on "heh-heh"). Helpompi ja halvempaa ostaa uusiversio siitä ohjelmasta, ellei enää saatavana, joku toinen tekee sitä modernimman version lyhyessä ajassa!

    nimim.:"Köyhän ei ole varaa ostaa halpaa!"

    Äänestä

  • diufsdhfiop kirjoitti:

    Mitäs muuten tarkotat VBA:lla? visual basic jotain?
    noh kuitenkin siis ohjelman tekijähän kirjoittaa lähdekoodin, ja sen jälkeen antaa sen kääntäjäohjelmalle joka tekee lähdekoodista binäärimuotoisen version, yleensä .exe päätteisen tiedoston. Ja tätä binäärimuotoista ei voi "purkaa" oikeastaan mitenkään. Ei edes ohjelman kirjoittaja. Ja bugikorjaukset tehdään siis lähdekoodiin joka käännetään sitten uudestaan. Sen takia on erittäin tyhmää heittää lähdekoodit pois kääntämisen jälkeen

    " Ja tätä binäärimuotoista ei voi "purkaa" oikeastaan mitenkään"

    toi ei ole ongelma, disassemplereita kyllä löytyy, ongelma on da:n tuottama koodi, koska binnärissä ei ole lähdekoodissa kirjoiteettuja symbooli ja funktio nimiä niin da:n pitää ne nimetä, ja se on hankala homma tyhmälle tietokoneohjelmalle, tai hankalaksihan se meenee vasta sitten kun ihminen sitä koodia yrittää lukea.

    Äänestä

Kommentoi aloitusta


programmer kirjoitti:

Miten pääsen jonkun ohjelman koodiin sisälle? Imutin erään ilmaisohjelman jossa on muutama vit...ainen bugi jotka haluaisin yrittää korjata vaikka aloittelija olenkin. Ohjelma toimii visual basicilla.

Tarvitsenko jonkun ohjelman vai saanko sen auki omalla excelillä jossa siis VBA. Miten asia siis käytännössä hoituu, kuinka paljon täytyy kikkailla, niin ja onko se edes sallittua.

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