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.
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.
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.
...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
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).
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!"
" 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.