The task to this thesis has been to create an application, Katana-databas 1.0, for analysing c-code. The generated output gets stored in a data structure which content in the end of the program run gets written in a textfile which gets used by Katana. It's a tool for reverse engineering, developed by Johan Kraft at Mälardalens institute. Katana-databas has got the following limitations. (1) It can only handle preprocessed files, meaning it doesn't contain any rows beginning with "#". (2) Only complete files can be handled. (3) No references to unknown functions or variables are allowed. (4) A further limitation is that the application can't handle any ADT's. It can only handle primitive types. (5) Finally the application is only written for pure c-code, and thus doesn't handle code written C++. The task has been solved by creating an automatically generated lexer with Flex and Bison rules in Visual Studio. There after a limited parser has been developed which purpose is to process the lexemes which the lexer generates. The underlying causes for the thesis is to replace Understand with Katana-databas. Katana has this far used the database in Understand, but it contains closed source code. What is seeked is open source code, which Katana-databas is based on. / Programmeringsuppgiften till detta arbete har bestått i att skapa en applikation, Katana-databas 1.0, för analys av C-kod. Utflödet som applikationen skapar sparas i en datastruktur vars innehåll i slutet av programkörningen skrivs ut i en textfil som används av Katana. Det är ett verktyg för reverse engineering, utvecklat av Johan Kraft på Mälardalens högskola. Katana-databas har fått följande begränsningar. (1) Den kan bara hantera filer som är preprocessade, dvs. den innehåller inga rader som inleds med ”#”. (2) Endast kompletta filer kan hanteras. (3) Inga referenser till okända funktioner eller variabler är tillåtna. (4) En ytterligare begränsning är att applikationen inte kan hantera ADT:er. Den kan bara hantera primitiva typer. (5) Tillsist är applikationen endast skriven för ren c-kod, och klarar således inte av att hantera kod skriven i C++. Uppgiften har lösts genom att skapa en automatgenererad lexer med Flex och Bisonrules i Visual Studio. Därefter har en limiterad parser utvecklats vars syfte är att bearbeta de lexem som lexern genererar. Det bakomliggande syftet med arbetet är att ersätta Understand med Katana-databas. Katana har hittills använt sig av databasen i Understand, men den består av sluten källkod. Det som eftersträvas är öppen källkod, vilket Katana-databas baseras på.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:mdh-7575 |
Date | January 2009 |
Creators | Bärling, Leo |
Publisher | Mälardalens högskola, Akademin för innovation, design och teknik |
Source Sets | DiVA Archive at Upsalla University |
Language | Swedish |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.002 seconds