Vis enkel innførsel

dc.contributor.advisorDyrkolbotn, Geir Olav
dc.contributor.advisorBruvoll, Solveig
dc.contributor.authorHofgaard, Jacob
dc.date.accessioned2024-07-18T17:19:50Z
dc.date.available2024-07-18T17:19:50Z
dc.date.issued2024
dc.identifierno.ntnu:inspera:187437008:68626714
dc.identifier.urihttps://hdl.handle.net/11250/3142276
dc.description.abstractDe siste år har forståelse for programvares indre funksjoner og komponenter blitt stadig viktigere. Dette er på grunn av det økende antallet, størrelse og kompleksiteten i programmer. Forståelse for de mer detaljerte nivåene i et program er viktig innen analyse av skadevare og utvikling av lavnivå programmer som fastvare, firmware. Kompleksiteten i programmer er ofte et resultat av avanserte kompilatoroptimaliseringer som kan produsere programmer med kode der strukturen er vesentlig annerledes enn i den opprinnelige kildekoden. Når programvaresystemer blir større og mer omfattende, blir manuell analyse mer utfordrende og tidkrevende, noe som understreker viktigheten av automatiserte verktøy for å bistå i omvendt utvikling. Automatisering av programvareanalyse er avgjørende for effektivt å oppdage og identifisere forhåndsanalysert eller allerede dokumentert kode. Dette prosjektet utforsker bruken av kontrollflytgrafer for å oppdage duplikatkode og gjenkjenne kode fra biblioteker, med spesielt fokus på å identifisere kode påvirket av kompilatoroptimaliseringsteknikken kjent som funksjons inlining. Prosjektet utforsker også hvordan verifikasjon og testing av automatiserte analyseverktøy knyttet til funksjons identifisering kan gjennomføres. Funnene viser at analyse av kontrollflytgrafer er en effektiv metode for å oppdage og identifisere inlinede funksjoner, men det er en beregningsmessig kostbar teknikk.
dc.description.abstractIn recent years, understanding the inner workings and components of software has gained significant importance due to the increasing number, size and complexity of programs. Understanding the low-level details of a program is important in malware analysis and developing low-level components like firmware. The complexity in programs is often a result of advanced compiler optimizations. Optimizations can produce executable code that appears different in structure from its original source. As software systems scale up, manual analysis becomes more challenging and time-consuming, highlighting the need for automated tools to assist in reverse engineering. Automated software analysis is essential for efficiently detecting and identifying pre-analyzed or documented code. This project explores the use of control flow graphs (CFGs) to detect duplicate code and recognize code from libraries, focusing on identifying code affected by the compiler optimization technique known as function inlining. It also explores the verification and testing process of automated analysis tools related to function identification. The findings demonstrate that while control flow graph analysis is an effective method for detecting and identifying inlined functions, it remains computationally expensive.
dc.languageeng
dc.publisherNTNU
dc.titleStatic control flow graph analysis for inlined function detection and identification
dc.typeMaster thesis


Tilhørende fil(er)

Thumbnail

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel