Java bytekode Reverse Engineering

Java bytekode Reverse Engineering


Reverse engineering er kunsten dumping de enkelte, maskin-nivå kommandoer som utgjør et samlet program og bruke den til å gjenskape den opprinnelige kildekoden. Mens noen kompilert program kan reverskonstruert, den bytekode som gjør opp kompilert Java-programmer beholde flere karakteristiske trekk som gjør reverse engineering det mye enklere enn andre kompilert kode.

byte-koden

Java samler ikke direkte inn i maskinlesbar kode, men heller til det som kalles "bytekode". Programmereren distribuerer denne bytekode, og når sluttbrukerne starter programmet, kompilerer Java Virtual Machine byte kode i plattformspesifikk maskinkode. Selv om dette gir Java nytte av slik at en enkelt kilde kode satt til å jobbe på flere maskiner, bevarer bytekode flere beskrivende funksjoner i kildekoden som gjør det lettere for hackere å rekonstruere den originale kildekoden.

Reverse Engineering

Hackere kan lese et Java-program er bytekode direkte ved hjelp av "java.io.inputstream" bibliotek. Med dette, kan de se de viktigste komponentene og bytekode nivå kommandoer som utgjør den aktuelle klassen filen. Hackere kan deretter spore ulike variabler på tvers av ulike metoder for å gradvis rekonstruere kontrollflyt av programmet. Når hackere gjør dette, kan de gjenskape programmets kildekode for ulike skadelige formål.

angrep

Etter en hacker omvendt ingeniører et bestemt program, er det flere måter han kan utnytte dette til å få tilgang til maskiner som kjører det programmet. Disse inkluderer sårbarheter å utnytte for å gjøre programmet kjøre ondsinnet kode med bruker tillatelse, eller utføring av en "mann i midten" -angrep. I det siste tilfellet, ville hacker legge sin egen ondsinnet kode programmets kildekode, rekompilere den, og sette den på internett under dekke av det opprinnelige programmet. Uvitende brukere kan deretter laste ned programmet og direkte utføre hacker-kode.

Forebygging Reverse Engineering

På grunn av innholdet av Java bytekode, er det nesten umulig å stoppe noen fra å vise kjernen bytekode. Mens metoder som kryptering kan gi en viss beskyttelse, jo mer effektiv kryptering er, jo mindre plattformuavhengig programmet blir. Programmerere kan imidlertid kaste omvendt ingeniører med noen koding triks. Disse inkluderer skriving funksjoner som er irrelevante for programmets selve utførelsen, som kan kaste av de som prøver å reversere programmet.