¦þ¹ ¼³¾Šł
¦þ¹ ¼³¾Šł
¦þ¹ ¼³¾Šł
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Âçëîì<br />
ÇÀÙÈÒÀ JAVA-ÀÏÏËÅÒÎÂ<br />
Àíäðåé Êàðîëèê (andrusha@sl.ru)<br />
ÕÀÊÅÐ\¹53\Ìàé\2003<br />
ÇÀÙÈÒÀ<br />
JAVA- ÀÏÏËÅÒÎÂ<br />
ÏÐÀÊÒÈ×ÅÑÊÎÅ ÏÎÑÎÁÈÅ Ñ ÊÀÐÒÈÍÊÀÌÈ ;)<br />
 ïðåäûäóùåé ñòàòüå ÿ íàãëÿäíî ïðîäåìîíñòðèðîâàë, êàê íåïðèíóæäåííî ïîèìåòü ëþáîé âðàæåñêèé ÿâà-àïïëåò.<br />
Âìåñòî òîãî ÷òîáû ïëàòèòü íåçíàêîìîìó äÿäå çà ÷èñòûé (áåç çàùèòû) èñõîäíèê, òû ñ ïîìîùüþ ïîäðó÷íûõ ñðåäñòâ<br />
(ê ïðèìåðó, NMI's Java Code Viewer) äåêîìïèëèðóåøü áàéò-êîä è âûêîâûðèâàåøü çàùèòó ðó÷êàìè. Ïîòîì êîìïèëèðóåøü<br />
îáðàòíî è èñïîëüçóåøü â ñâîå óäîâîëüñòâèå. Âñå äîâîëüíî ïðîñòî, áûñòðî è áåñïëàòíî. Âîçíèêàåò ëîãè÷íûé<br />
âîïðîñ: ïîëó÷àåòñÿ, ÷òî ñàìûé ïîñëåäíèé ëàìåð, ñêà÷àâ äåêîìïèëÿòîð èç èíåòà, ñìîæåò áåç òðóäà ïîëîìàòü è<br />
òâîé àïïëåò, êîòîðûé ïî-ñâîåìó óíèêàëåí è íà êîòîðûé òû óáèë êó÷ó ñâîáîäíîãî âðåìåíè Äà, ýòî, êîíå÷íî, òàê,<br />
íî ïðè æåëàíèè òû ìîæåøü ñâåñòè ÷óæèå ïîïûòêè âçëîìà íà íåò. Äëÿ ýòîãî òåáå ïîíàäîáèòñÿ îáôóñêàòîð (obfuscator).<br />
Ýòî íå ðóãàòåëüíîå ñëîâî :). ×òî ýòî òàêîå, ãäå íàäûáàòü è êàê ýòèì ïîëüçîâàòüñÿ, ÿ òåáå ñåé÷àñ ðàññêàæó.<br />
ÐÀÇÍÎÂÈÄÍÎÑÒÈ ÇÀÙÈÒÛ<br />
Ñêîëüêî îáôóñêàòîðîâ - ñòîëüêî è àëãîðèòìîâ çàùèòû.<br />
Íî âñå èõ ìîæíî óñëîâíî ðàçäåëèòü íà òðè<br />
êàòåãîðèè ïî ñïîñîáó ìîäèôèêàöèè áàéò-êîäà:<br />
èçìåíåíèå ñòðóêòóðû ïðîãðàììû, èçìåíåíèå ïîòîêà<br />
óïðàâëåíèÿ è èçìåíåíèå ñòðóêòóðû äàííûõ.<br />
Íàèáîëåå ýôôåêòèâíû èçìåíåíèå ïîòîêà óïðàâëåíèÿ<br />
è èçìåíåíèå ñòðóêòóðû äàííûõ, îñîáåííî<br />
åñëè â êà÷åñòâå çàùèòû èñïîëüçóåòñÿ òàíäåì ýòèõ<br />
àëãîðèòìîâ.<br />
ÇÀÙÈÒÀ: ÈÇÌÅÍÅÍÈÅ ÑÒÐÓÊÒÓÐÛ<br />
ÏÐÎÃÐÀÌÌÛ<br />
Ýòî ñàìàÿ ðàñïðîñòðàíåííàÿ è îòíîñèòåëüíî ïðîñòàÿ<br />
ïî ñóòè çàùèòà, êîòîðóþ ðåàëèçóþò âñå áåç<br />
èñêëþ÷åíèÿ îáôóñêàòîðû. Óäàëÿåòñÿ îòëàäî÷íàÿ<br />
èíôîðìàöèÿ (åå ðîæàåò îòëàä÷èê ïðè êîìïèëÿöèè)<br />
è êîììåíòàðèè, à èñõîäíûå èìåíà ìåòîäîâ è<br />
ïåðåìåííûõ çàìåíÿþòñÿ áåññìûñëåííîé (ñëó÷àéíîé)<br />
êîðîòêîé ïîñëåäîâàòåëüíîñòüþ ñèìâîëîâ.<br />
Ýòî äåëàåò êîä ìåíåå èíôîðìàòèâíûì. Êðîìå òîãî,<br />
â ðåçóëüòàòå ÷èñòêè ðàçìåð áàéò-êîäà óìåíüøàåòñÿ<br />
â 1,5-2 ðàçà, ïîýòîìó òàêàÿ îáôóñêàöèÿ<br />
÷àñòî èñïîëüçóåòñÿ è êàê îäèí èç ñïîñîáîâ îïòè<br />
ìèçàöèè êîäà.<br />
ÇÀÙÈÒÀ: ÈÇÌÅÍÅÍÈÅ ÏÎÒÎÊÀ<br />
ÓÏÐÀÂËÅÍÈß<br />
Áîëåå ñëîæíàÿ çàùèòà, âíåäðÿþùàÿ â êîä äîïîëíèòåëüíûå<br />
óñëîâíûå îïåðàòîðû è, ñëåäîâàòåëüíî,<br />
ëîæíûå ëîãè÷åñêèå ðàçâÿçêè.  ðåçóëüòàòå èçìåíÿåòñÿ<br />
ñïîñîá ãðóïïèðîâêè âûðàæåíèé, ïîðÿäîê<br />
âûïîëíåíèÿ îïåðàòîðîâ èëè ñêðûâàåòñÿ îò äåêîìïèëÿòîðà<br />
ðåàëüíûé ïîòîê óïðàâëåíèÿ.<br />
Ïîÿñíþ íà íàãëÿäíîì ñõåìàòè÷åñêîì ïðèìåðå.<br />
Äîïóñòèì, â êîäå åñòü äâà ôóíêöèîíàëüíûõ áëîêà<br />
A è B, êîòîðûå âûïîëíÿþòñÿ áåçóñëîâíî è ïîñëåäîâàòåëüíî.<br />
Åñëè ïðèìåíèòü ðàññìàòðèâàåìóþ<br />
çàùèòó, òî îäíà èç âîçìîæíûõ ðåàëèçàöèé ïîäîáíîãî<br />
àëãîðèòìà ñëåäóþùàÿ - áóäåò äîáàâëåí äîïîëíèòåëüíûé<br />
áëîê, îáðàçóþùèé ïðè ïîìîùè<br />
îïåðàòîðà óñëîâíîãî ïåðåõîäà ðàçâÿçêó ñ äâóìÿ<br />
âåòâëåíèÿìè. Ñäåëàòü ýòî ìîæíî êàê ìèíèìóì<br />
òðåìÿ ñïîñîáàìè:<br />
1-ÛÉ ÑÏÎÑÎÁ<br />
Ìåæäó áëîêàìè A è B âíåäðÿåòñÿ óñëîâíûé áëîê<br />
IF, îäíà èç ëîãè÷åñêèõ âåòîê (ïðè ëîæíîì óñëîâèè)<br />
êîòîðîãî èäåò â îáõîä áëîêà B. Íî óñëîâèå â<br />
áëîêå IF âñåãäà çàâåäîìî "èñòèíà", ïîýòîìó àïïëåò<br />
âûïîëíÿåòñÿ êîððåêòíî. Ëîæíîå âåòâëåíèå<br />
íåîáõîäèìî, ÷òîáû ñáèòü ñ òîëêó äåêîìïèëÿòîð è<br />
óñëîæíèòü àíàëèç êîäà ïîñëå äåêîìïèëÿöèè.<br />
2-ÎÉ ÑÏÎÑÎÁ<br />
Èç áëîêà B êëîíèðóåòñÿ äâà áëîêà B' è B", ÿâëÿþùèõñÿ<br />
äâóìÿ èäåíòè÷íûìè êîïèÿìè îäíîãî è òîãî<br />
æå áëîêà B. Äàëåå îíè øèôðóþòñÿ ïî-ðàçíîìó,<br />
ñîõðàíÿÿ ïðè ýòîì ñâîþ ôóíêöèîíàëüíîñòü. Àïïëåò<br />
îñòàåòñÿ ðàáîòîñïîñîáíûì, à âûïîëíÿåòñÿ<br />
òîëüêî îäèí èç áëîêîâ (B' èëè B") â çàâèñèìîñòè<br />
îò óñëîâèÿ â áëîêå IF, êîòîðîå ãåíåðèðóåòñÿ ñëó-<br />
÷àéíûì îáðàçîì. Íåïðåäñêàçóåìàÿ ëîâóøêà äëÿ<br />
äåêîìïèëÿòîðà è çàðÿäêà äëÿ ìîçãîâ :).<br />
3-ÈÉ ÑÏÎÑÎÁ<br />
Èç áëîêà B êëîíèðóåòñÿ äâà áëîêà B' è B" àíàëîãè÷íî<br />
ïðåäûäóùåìó ñïîñîáó, íî â áëîê B" âíîñÿòñÿ<br />
ôàòàëüíûå èçìåíåíèÿ, ïîñëå êîòîðûõ áëîê<br />
B" ðàáîòàåò íåêîððåêòíî. Ïðè ýòîì â áëîêå IF<br />
âñåãäà ãåíåðèðóåòñÿ óñëîâèå äëÿ âûáîðà âåòâè ñ<br />
B'. Âìåñòî áëîêà B" ìîæåò áûòü ïîäñòàâëåí ñîâåðøåííî<br />
ëþáîé ôóíêöèîíàëüíûé áëîê, íå èìåþùèé<br />
íèêàêîãî îòíîøåíèÿ ê äàííîé ïðîãðàììå.<br />
Äåêîìïèëÿòîð ýòîãî âñå ðàâíî íå çíàåò :).<br />
Ýòî î÷åíü óïðîùåííûé ïðèìåð äëÿ íàãëÿäíîñòè.<br />
Ðåàëüíî äåëà îáñòîÿò íàìíîãî ñëîæíåå. Ïðîùå<br />
ãîâîðÿ, ïîñëå ïðèìåíåíèÿ ýòîé çàùèòû ïîÿâëÿþòñÿ<br />
ñîâåðøåííî ëåâûå ëîãè÷åñêèå âåòâè, íå<br />
âëèÿþùèå íà ðàáîòîñïîñîáíîñòü àïïëåòà. Â ðåçóëüòàòå<br />
ýòîãî ïîñëå äåêîìïèëÿöèè ïîÿâëÿåòñÿ<br />
êó÷à ìóñîðà, êîòîðàÿ ïðåâðàòèò àíàëèç ïîëó÷åííîãî<br />
"èñõîäíèêà" â çàòÿæíîé êîøìàð.<br />
ÇÀÙÈÒÀ: ÈÇÌÅÍÅÍÈÅ ÑÒÐÓÊÒÓÐÛ ÄÀÍÍÛÕ<br />
Ñàìûé ïðîäâèíóòûé ñïîñîá çàùèòû, ïîçâîëÿþùèé<br />
ïîëíîñòüþ èçìåíèòü ïåðâîíà÷àëüíóþ ñòðóêòóðó<br />
áàéò-êîäà. Øèôðîâàííûé êîä óñëîæíÿåòñÿ<br />
1 2 3 4<br />
66 Íüþñû Ôåððóì Inside PC_Zone Âçëîì