Ðàñïóòûâàíèå êîäà
Êàê áû õàêåð íå èçáåãàë àíàëèçà çàïóòàííîãî êîäà, ðàíî èëè ïîçäíî îí âëÿïàåòñÿ â ñèòóàöèþ, êîãäà ïîëíàÿ ðåêîíñòðóêöèÿ àëãîðèòìà áóäåò äåéñòâèòåëüíî íåîáõîäèìà! Ñðàæåíèå ñ îáôóñêàòîðîì íåèçáåæíî! À ðàç òàê, ê íåìó íóæíî ïîäãîòîâèòü ñåáÿ çàðàíåå. Ïîñìîòðèì, êàêèå òóçû ó íàñ åñòü â ðóêàâàõ è ÷åì ìû ìîæåì åìó ïðîòèâîñòîÿòü.
Íà÷íåì ñ òîãî, ÷òî íàïèøåì òðàññåð. Ñîáñòâåííî ãîâîðÿ, íàïèñàòü åãî âñå ðàâíî ïðèäåòñÿ, õîòÿ áû óæå çàòåì, ÷òîáû ïîíÿòü êàê ðàáîòàåò îòëàä÷èê. Ëó÷øå, åñëè ýòî áóäåò "òåðìîÿäåðíûé" òðàññåð, ðàáîòàþùèé íà íóëåâîì êîëüöå è îáõîäÿùèé àíòèîòëàäî÷íûå ïðèåìû, êîòîðûå òàê ëþáÿò èñïîëüçîâàòü îáôóñêàòîðû.
Ïðîòîêîë òðàññèðîâêè ïðîãðàììû, óæå çíàêîìîé íàì ïî ëèñòèíãó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