Reverse engineering er kunsten dumping den enkelte , maskin - nivå kommandoer som utgjør et samlet program og bruke den til å gjenskape sin originale kildekoden . Mens noen kompilert program kan omvendt utvikling , byte -kode som gjør opp kompilerte Java-programmer beholde flere individualiserende kjennetegn som gjør reverse engineering det mye enklere enn andre kompilert kode . Byte Code
Java ikke kompilere ikke direkte inn i maskinlesbar kode , men heller i det som kalles " byte -koden . " Programmereren distribuerer denne byte-kode , og når sluttbrukerne starte programmet , Java Virtual Machine kompilerer byte koden på plattform -spesifikk maskinkode . Selv om dette gir Java nytte av slik at en enkelt kilde kode satt til å arbeide på flere maskiner , bevarer byte kode flere beskrivende funksjoner i kildekoden som gjør det enklere for hackere å rekonstruere den originale kildekoden .
Reverse Engineering
Hackere kan lese en Java-programmets byte kode direkte ved hjelp av " java.io.inputstream " bibliotek . Med dette, kan de vise de viktigste komponentene og byte kode nivå kommandoer som utgjør den aktuelle klassen filen . Hackere kan deretter spore ulike variabler på tvers av ulike metoder for å gradvis rekonstruere kontroll flyt av programmet. Når hackere gjør dette, kan de gjenskape programmets kildekode for ulike skadelige formål .
Angrep
Etter en hacker reverse engineering et bestemt program , er det flere måter han kan utnytte dette for å få tilgang til maskiner som kjører det programmet. Disse inkluderer sårbarheter å utnytte for å gjøre programmet kjøre ondsinnet kode med brukerens tillatelse , eller gjennomføre en " mann i midten "-angrep. I det siste tilfellet , ville hacker legge sin egen ondsinnet kode programmets kildekode , rekompilere det , og sette den på Internett under dekke av det opprinnelige programmet . Uvitende brukere kan deretter laste ned programmet og direkte utføre hacker koden .
Forebygge Reverse Engineering
grunn av innholdet av Java byte-kode , er det nesten umulig å stoppe noen ser på kjernen byte kode . Mens metoder som kryptering kan gi en viss beskyttelse , jo mer effektiv kryptering er , jo mindre plattformuavhengig programmet blir . Programmerere kan imidlertid kaste reverse engineering av med noen koding triks. Disse omfatter skrive funksjoner som er irrelevant for programmets faktiske utførelsen , noe som kan kaste av de som prøver å reversere programmet.