|
Debugger for Multiprocessor System on a Chip
Špaček, Michal ; Křoustek, Jakub (referee) ; Hruška, Tomáš (advisor)
The Lissom project deals with the hardware-software co-design methodology. In this project, an integrated desktop environment for a design of multiprocessor systems on chip was developed. This environment can be used also for developing applications for multiprocessor systems. One part of the environment is a debugger that can be used to debug single core systems. In this thesis, a single processor debugger tool is described in detail and an extension to this tool is proposed and implemented based on the Nexus standard. The extended debugger allows debugging of multiprocessor systems.
|
| |
| |
|
Interactive Debugger for MSIM
Martinec, Tomáš ; Děcký, Martin (advisor) ; Malohlava, Michal (referee)
The goal of this thesis is to extend the debugging possibilities of MSIM by connecting it to the Eclipse IDE. MSIM (MIPS Simulator) is a machine simulator based on a MIPS processor and a simple hardware model. The simulator is primarily used for education of operating systems. At the beginning of this work MSIM provided basic features for debugging the code that runs inside the virtual machine. The basic features are accomplished by implementing GNU Debugger (GDB) remote connection interface and also by several integrated debugging commands. The work presented in this thesis connects the Eclipse IDE debugging front-end to MSIM via the GDB remote connection interface. Necessary means to provide comfortable experience of both source-level and assembly-level debugging are implemented. Additionally, a discussion about advanced debugging features such as: user space code debugging with a thread scope; call tree construction; reverse execution; and other techniques is presented in the thesis.
|
|
Output breakpoints for Java
Jelínek, Jakub ; Kofroň, Jan (advisor) ; Hnětynka, Petr (referee)
The goal of this thesis was to design the support for output breakpoints in the Java language and implement the designed solution including integration into the Eclipse IDE. An output breakpoint represents a location in an output media (e.g. file, standard output or socket) where the execution of program should stop. The location in the output media is generalized as a stop condition - it can be in the form of absolute position, a particular line and a character or an occurrence of a text string. The designed solution is based on observing the classes responsible for output using entry method breakpoints that are a standard part of the Java language. This solution is dependent on a particular version and implementation of JRE because some of observed methods are not a part of public Java API.
|
|
"Edit and Continue" for the SharpDevelop IDE
Mareš, Jan ; Ježek, Pavel (advisor) ; Pop, Tomáš (referee)
Development of large projects requires usage of debugging tools, which makes developer's work - searching for bugs in code - easier. When developer discovers a bug in source code during debugging of application, the safest way is to fix this bug as soon as possible. The Edit and Continue functionality is a feature of .NET debugger that makes possible correction of source code of debugged application without the need of interrupting the debugging of application. The main concern of this thesis is to find a way to implement Edit and Continue for an OpenSource IDE SharpDevelop.
|
|
Retargetable Analysis of Machine Code
Křoustek, Jakub ; Janoušek, Jan (referee) ; Návrat,, Pavol (referee) ; Kolář, Dušan (advisor)
Analýza softwaru je metodologie, jejímž účelem je analyzovat chování daného programu. Jednotlivé metody této analýzy je možné využít i v dalších oborech, jako je zpětné inženýrství, migrace kódu apod. V této práci se zaměříme na analýzu strojového kódu, na zjištění nedostatků existujících metod a na návrh metod nových, které umožní rychlou a přesnou rekonfigurovatelnou analýzu kódu (tj. budou nezávislé na konkrétní cílové platformě). Zkoumány budou dva typy analýz - dynamická (tj. analýza za běhu aplikace) a statická (tj. analýza aplikace bez jejího spuštění). Přínos této práce v rámci dynamické analýzy je realizován jako rekonfigurovatelný ladicí nástroj a dále jako dva typy tzv. rekonfigurovatelného translátovaného simulátoru. Přínos v rámci statické analýzy spočívá v navržení a implementování rekonfigurovatelného zpětného překladače, který slouží pro transformaci strojového kódu zpět do vysokoúrovňové reprezentace. Všechny tyto nástroje jsou založeny na nových metodách navržených autorem této práce. Na základě experimentálních výsledků a ohlasů od uživatelů je možné usuzovat, že tyto nástroje jsou plně srovnatelné s existujícími (komerčními) nástroji a nezřídka dosahují i lepších výsledků.
|
|
Code Analysis and Transformation
Křoustek, Jakub ; Masařík, Karel (referee) ; Meduna, Alexandr (advisor)
This paper describes methods and procedures used for code analysis and transformation. It contains basic information of a science discipline called reverse engineering and its use in information technologies. The primary objective is a construction of tool that can disassemble from binary form to symbolic machine code. This operation is highly dependent on the concrete instruction set, and it has to be used for a beforehand known processor architecture. This problem is solved with patterns, plug-ins, and modularity of disassembler. These features provide users the ability to add new instruction sets into this disassembler. The output is the text representation of instructions and is functionally equivalent to the in-put. The thesis demonstrates usual methods of disassembly as well as the methods made by the author.
|
|
Windows Software Protection Against Reverse Engineering
Korvas, Pavol ; Ďurfina, Lukáš (referee) ; Hruška, Tomáš (advisor)
This thesis deals with familiarization with the reverse engineering, the modalities of its use and misuse in practice and becoming familiar with existing tools to protect software and tools developed within the Lissom project. It also focuses on the analysis of existing methods of security breaches and the proposal of protection for Lissom project applications in collaboration with the license server for operating system Windows.
|
|
Interactive Disassembler
Mrva, Milan ; Přikryl, Zdeněk (referee) ; Křoustek, Jakub (advisor)
This thesis describes procedures and tools of reverse engineering in terms of software development. There are introduces different techniques of protection against decomposition of executables. The work also mentions some programs used for decomposition analysis. Furthermore it contains information about architecture of processing units, with emphasis on microprocessors Intel and Motorola. Variety of executable formats is shown. Generic retargetable disassembler was implemented. There is a description of its structure and plugins. These plugins represents three algorithms used for disassembling a program. One of them applies a multi-process parsing engine, which is an own design by author of the thesis. At the end, these techniques are compared and further development is outlined.
|