Îáôóñêàöèÿ è åå ïðåîäîëåíèå

         

Ðàñïóòûâàíèå êîäà


Êàê áû õàêåð íå èçáåãàë àíàëèçà çàïóòàííîãî êîäà, ðàíî èëè ïîçäíî îí âëÿïàåòñÿ â ñèòóàöèþ, êîãäà ïîëíàÿ ðåêîíñòðóêöèÿ àëãîðèòìà áóäåò äåéñòâèòåëüíî íåîáõîäèìà! Ñðàæåíèå ñ îáôóñêàòîðîì íåèçáåæíî! À ðàç òàê, ê íåìó íóæíî ïîäãîòîâèòü ñåáÿ çàðàíåå. Ïîñìîòðèì, êàêèå òóçû ó íàñ åñòü â ðóêàâàõ è ÷åì ìû ìîæåì åìó ïðîòèâîñòîÿòü.

Íà÷íåì ñ òîãî, ÷òî íàïèøåì òðàññåð. Ñîáñòâåííî ãîâîðÿ, íàïèñàòü åãî âñå ðàâíî ïðèäåòñÿ, õîòÿ áû óæå çàòåì, ÷òîáû ïîíÿòü êàê ðàáîòàåò îòëàä÷èê. Ëó÷øå, åñëè ýòî áóäåò "òåðìîÿäåðíûé" òðàññåð, ðàáîòàþùèé íà íóëåâîì êîëüöå è îáõîäÿùèé àíòèîòëàäî÷íûå ïðèåìû, êîòîðûå òàê ëþáÿò èñïîëüçîâàòü îáôóñêàòîðû.

Ïðîòîêîë òðàññèðîâêè ïðîãðàììû, óæå çíàêîìîé íàì ïî ëèñòèíãó2, áóäåò âûãëÿäåòü òàê (åñëè òðàññåð ïèñàòü ëåíü, ìîæíî èñïîëüçîâàòü soft-ice, ïðîñòî îòêëþ÷èâ îêíî êîäà êîìàíäíîé WC, òîãäà ðåçóëüòàò òðàññèðîâêè êîìàíäîé T áóäåò "âûâàëèâàòü" â íèæíåå îêíî, îòêóäà åãî ìîæíî äîáûòü ñîõðàíèâ èñòîðèþ êîìàíä â Symbol Loader'å: File-> Save Soft-Ice History As):

001B:00434001  E800000000         CALL   00434006

001B:00434006  5D                 POP    EBP

001B:00434007  50                 PUSH   EAX

001B:00434008  51                 PUSH   ECX

001B:00434009  EB0F               JMP    0043401A             (JUMP v)

001B:0043401A  F2EBF5                    REPNZ  JMP 00434012         (JUMP ^)

001B:00434012* EB0F               JMP    00434023             (JUMP v)

001B:00434023  EBE9               JMP    0043400E             (JUMP ^)

001B:0043400E  B8EB07B9EB         MOV    EAX,EBB907EB

001B:00434013* 0F90EB                    SETO   BL



001B:00434016* 08FD               OR     CH,BH

001B:00434018  EB0B               JMP    00434025             (JUMP v)

001B:00434025  F3EBE4                    REPZ   JMP  0043400C        (JUMP ^)

001B:0043400C  EB0F               JMP    0043401D             (JUMP v)

001B:0043401D  EBF6               JMP    00434015             (JUMP ^)

001B:00434015  EB08               JMP    0043401F             (JUMP v)


001B:0043401F  F2EB08                    REPNZ  JMP 0043402A         (JUMP v)

001B:0043402A  59                 POP    ECX

001B:0043402B  58                 POP    EAX

001B:0043402C  50                 PUSH   EAX

001B:0043402D  51                 PUSH   ECX

001B:0043402E  EB0F               JMP    0043403F             (JUMP v)

001B:0043403F  F2EBF5                    REPNZ  JMP 00434037         (JUMP ^)

001B:00434037  EB0F               JMP    00434048             (JUMP v)

001B:00434048  EBE9               JMP    00434033             (JUMP ^)

001B:00434033  B8EB07B9EB         MOV    EAX,EBB907EB

001B:00434038  0F90EB                    SETO   BL

001B:0043403B  08FD               OR     CH,BH

001B:0043403D  EB0B               JMP    0043404A             (JUMP v)

001B:0043404A  F3EBE4                    REPZ   JMP  00434031        (JUMP ^)

001B:00434031  EB0F               JMP    00434042             (JUMP v)

001B:00434042  EBF6               JMP    0043403A             (JUMP ^)

001B:0043403A  EB08               JMP    00434044             (JUMP v)

001B:00434044  F2EB08                    REPNZ  JMP 0043404F         (JUMP v)

001B:0043404F  59                 POP    ECX

001B:00434050  58                 POP    EAX


Ñîäåðæàíèå ðàçäåëà