Selasin tuossa ohjelmointiputkan koodivinkkejä ja siellä oli PHP:lla kirjoitettu heksaeditori. Alkoi nyt kiinnostamaan että mihin, miten ja miksi heksaeditoria yleensä käytetään? onko se jokin tehokaskin työkalu?? :O
Sillä näet tiedoston sisällön heksana. Tavallisesti ohjelmat näyttävät tiedoston niinkuin nyt sattuvat muotoilemaan sen, mutta heksaeditori näyttää "datan raakana" ja voit muokata tiedostoa "suoraan". Heksaeditorin käyttä tosin vaatii hieman tietämystä käytössä olevasta merkistöstä ja tiedostojen rakenteesta... (Jos nyt ihan normaalia tekstiä muokkaat niin ongelmia ei ole, mutta jos haluat muokata binääriä niin vaikeaa voi olla)
Tietäisitkö onko olemassa hyviä tutoraaleja heksaeditorin käytöstä ja siitä miten esim binäärejä saa muokattua? Tuo heksaeditorilla binäärien muokkaaminen kullostaa aika kiinnostavalta!
Tutoriaaleja en tiedä, mutta binäärien muokkaaminen on kyllä vaivalloista. Binääreissä merkkien paikoilla on merkityksensä, joten jos haluat esim muokata ohjelman tekstejä, ja laitat tekstiksi liian pitkän/lyhyen tekstin, ohjelma ei toimi.
EDIT: Decompilointi on sitten ihan eri asia... Sen avulla voisi olla helpompaa...
Kun nyt paikalle satuin, niin pakko suositella disassemblointiin ohjelmaa nimeltä IDA. Ohjelmasta on saatavilla ilmainen versio, joka taitaa olla DOS-pohjainen, mutta varsin toimiva ja tehokas työkalu. Hihii.. se sanoi "kalu"..
Juujuu, menee jo vähän offtopiciksi, mut kuiteski.
Muistutetaan nyt vielä, että pääsääntöisesti kaupallisten ohjelmien disassemblointi on laitonta, kuten myös niiden muokkaaminen muuten. Ei tule mieleen montakaan lukemaani lisenssiä, joissa tuota ei olisi kielletty.
Tiedetään että on kiellettyä, mutta kukas saatana sitä tulee meille kotiin valvomaan jos minua nyt sattuu kiinnostamaan miten joku ohjelma jonkun jutun tekee. Moraalisesti en ainakaan näe asiassa mitään väärää, kun kyse on puhtaasti huvi- ja kokeilumielessä tehdystä pikku tutkimuksesta.
Mutta niin, laki on laki.
edit: ts. lisenssi on lisenssi. Tiedätte mitä tarkoitan.
Onkos asiasta ennakkopäätöstä?
http://www.finlex.fi/fi/laki/ajantasa/1961/
Hmm, jotenkin ihmettelen miksi olisi disassemblointi kiellettyä, koska sehän on periaatteessa sama asia kuin purkaisi auton moottorin tutkiakseen miten se toimii... Kummallinen on laki...
EDIT:
Finlex kirjoitti:
Tietokoneohjelmia ja tietokantoja koskevia erityissäännöksiä (3.4.1998/250)
25 j § (24.3.1995/446)Joka on laillisesti hankkinut tietokoneohjelman, saa valmistaa ohjelmasta sellaiset kappaleet ja tehdä ohjelmaan sellaisia muutoksia, jotka ovat tarpeen ohjelman käyttämiseksi aiottuun tarkoitukseen. Tämä koskee myös virheiden korjaamista.
Se, jolla on oikeus käyttää tietokoneohjelmaa, saa valmistaa ohjelmasta varmuuskappaleen, jos se on tarpeen ohjelman käytön kannalta.
Se, jolla on oikeus käyttää tietokoneohjelmaa, saa tarkastella, tutkia tai kokeilla tietokoneohjelman toimintaa niiden ideoitten ja periaatteiden selvittämiseksi, jotka ovat ohjelman osan perustana, jos hän tekee sen ohjelman tietokoneen muistiin lukemisen tai ohjelman näyttämisen, ajamisen, siirtämisen tai tallentamisen yhteydessä.
Se, jolla on oikeus käyttää tietokantaa, saa valmistaa tietokannasta kappaleita ja tehdä kaikki muutkin toimet, jotka ovat tarpeen tietokannan sisältöön pääsyä ja sisällön tavanmukaista käyttöä varten. (3.4.1998/250)
Sopimuksen ehto, jolla rajoitetaan 2–4 momentin mukaista käyttöä, on tehoton. (3.4.1998/250)
Eli saa disassembloida... Ainakin jos tulkitsin oikein. Jos kopioi binäärin kun sitä ladataan muistiin niin on laillista :/
Niin, tuohan on nyt siis yleinen laki. Kuitenkin monen ohjelman lisenssisopimuksessa lukee, että ei.
Esimerkiksi Download Accelator Plus:
lainaus:
[- -] Other than the rights expressly granted to you hereunder, no other right is granted to you. Without limiting the foregoing, you may not: [- -] decompile, disassemble, reverse engineer, or otherwise attempt to derive the source code for the Product; [- -]
Mutta eikös se ole niin että tuollaisilla sopimuksilla ei ole merkitystä jos laki sanoo toisin...
Laissahan lukee
lainaus:
Sopimuksen ehto, jolla rajoitetaan 2–4 momentin mukaista käyttöä, on tehoton.
Ovatko nuo mainitut momentit tekstiä edeltäneitä kappaleita? Jos ovat, niin aivan varmasti ainakin
lainaus:
reverse engineer, or otherwise attempt to derive the source code for the Product
osuus on merkityksetön jos pitää oikeana Wikipediassa sanottuja reverse engineering metodeja koskien ohjelmistoja
lainaus:
Reverse engineering of software can be accomplished by various methods. The three main groups of reverse engineering are: 1) analysis through observation of information exchange (most prevalent in protocol reverse engineering), 2) disassembly using a disassembler, and 3) decompilation using a decompiler.
Erityisesti siis observation osuus.
[edit]Ja olisihan se aika naurettavaa kuvitella, että käyttäjä ei saisi ohjelman käyttäytymisestä päättelemällä yrittää tajuta kuinka se toimii[/edit]
Aihe on jo aika vanha, joten et voi enää vastata siihen.