Sherlock Holmes hade sitt förstoringsglas. Robert Krten och Sergei Sourjko har sin dekompilator. De utreder misstänkta intrång på programvarupatent. I en exklusiv artikel för Elektroniktidningens rapportserie Embedded Expert visar de steg för steg hur de går till väga för att förvandla rörig assembler till välstrukturerad C-kod.
Kompilatorns översättning till maskininstruktioner är en sofistikerad process som bland annat innefattar optimering. Det är därför mycket svårt att avgöra om det handlar om intrång genom att bara titta på maskinkoden.
Klicka här
för nedladdning!
PDF, 500 kbyte.Fler kostnadsfria rapporter finns på etn.se/expert
Det skriver Robert Krten och Sergei Sourjko. Syftet med förvandlingen är att undersöka om ett givet program möjligen kan vara en implementering av en patenterad algoritm.
Det mest sofistikerade steget består i att översätta den spaghettikod av goto-satser som assemblerspråk utgör, till hierarkiska kontrollstrukturer.
Tekniken för att göra detta är att rekursivt bygga upp vad som kallas en kontrollflödesgraf.
Kontrollflödesanalys omfattar ett antal algoritmer för detaljerade studier av kontrollflödesstrukturen. Till exempel är det inte tillräckligt att upptäcka var en loop finns, vi måste också identifiera villkoren, innehållet i loopen, vilken typ av loop det är (while, for, do-while, och så vidare), följa vilka vägar den kan ta, med mera.
Artikeln kan tankas hem här (pdf, 500 kbyte).