Reverse engineering er kunsten dumping individuelle, maskin- niveau kommandoerne , der udgør en kompileret program og bruge det til at genskabe dets oprindelige kildekode. Mens enhver kompileret program kan reverse engineering , byte kode, der gør op kompileret Java-programmer bevarer flere identificerende egenskaber , der gør reverse engineering det meget lettere end andre kompileret kode. Byte Code
Java udarbejder ikke direkte ind i maskinlæsbar kode, men snarere i, hvad der kaldes " byte kode . " The programmør distribuerer byte kode , og når slutbrugerne starte programmet , Java Virtual Machine kompilerer byte kode i platform -specifikke maskine kode . Mens dette giver Java den fordel, at en enkelt kildekode sat til at arbejde på flere maskiner , byte koden bevarer flere beskrivende funktioner i kildekoden , der gør det lettere for hackere at rekonstruere den oprindelige kildekode .
< br > Reverse Engineering
Hackere kan læse et Java-program s byte kode direkte ved hjælp af " java.io.inputstream " biblioteket. Med dette, kan de se de centrale komponenter og byte kode niveau kommandoer , der udgør den pågældende klasse -fil. Hackere kan derefter spore forskellige variabler på tværs af forskellige metoder til gradvist at rekonstruere kontrol flow af programmet. Når hackere gør dette, kan de kopiere programmets kildekode til forskellige ondsindede formål.
Angreb
Efter et hacker reverse ingeniører et bestemt program, der er flere måder han kan udnytte dette til at få adgang til maskiner, der kører programmet . Disse omfatter sårbarheder til at udnytte til at gøre programmet eksekvere skadelig kode med brugerens tilladelse , eller fuldbyrdelse af en " mand i midten" angreb. I sidstnævnte scenario ville hackeren tilføje sin egen skadelig kode programmets kildekode, kompilere det og sætte det på internettet under dække af det oprindelige program. Intetanende brugere kan derefter downloade programmet og direkte udføre hackerens kode.
Forebyggelse Reverse Engineering
grund af karakteren af Java byte kode , er det næsten umuligt at stoppe nogen fra at se kernen byte kode . Mens metoder som kryptering kan give en vis beskyttelse , jo mere effektiv kryptering er , jo mindre platformsuafhængig bliver programmet . Programmører kan dog kaste reverse ingeniører off med et par kodning tricks. Disse omfatter skrivning funktioner, som er irrelevante for programmets faktiske gennemførelse, som kan kaste dem, der forsøger at foretage reverse engineering af programmet.