• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 308
  • 163
  • 91
  • 68
  • 35
  • 19
  • 10
  • 10
  • 8
  • 6
  • 6
  • 5
  • 5
  • 5
  • 3
  • Tagged with
  • 823
  • 152
  • 113
  • 86
  • 81
  • 80
  • 80
  • 77
  • 75
  • 68
  • 67
  • 62
  • 61
  • 59
  • 59
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
111

Declarative modelling of parameter setting / Deklarativ modellering av parametersättning

Nordström, Didrik January 2015 (has links)
The parameter setting problem is part of a complex, automated process for customizing Scania's products; primarily trucks and buses. The problem is modelled as a stateless, acyclic graph of pure functions and variables. A subset of a deterministic, concurrent, demand-driven, declarative programming model is implemented under the Microsoft .NET framework. The implementation is evaluated based on suitability for solving the parameter setting problem, computational performance and general applicability within the organization. It is concluded that the model reduces the complexity of the parameter setting problem, mainly due to demand-driven (lazy) execution. The implementation scales as expected on sequential programs in time and memory with respect to input size. Parallel programs benefit partly from parallelism but bottlenecks in the .NET framework seem to limit the speedup. The general applicability of the programming model within the organization is potentially high and there are many extensions that can be added in the future, such as constraint programming. / Parametersättning är en del av en komplex, automatiserad process för att specialanpassa Scanias produkter – primärt lastbilar och bussar. Problemet är modellerat som en tillståndslös acyklisk graf av rena funktioner och variabler. En deterministisk, parallel, behovstyrd deklarativ programmeringsmodell har implementeras under Microsoft .NET-ramverket. Implementationen utvärderas utifrån lämplighet för parametersättning, prestanda och generell nytta inom organisationen. Modellen lyckas med att reducera komplexiteten för parametersättning, primärt tack vare behovstyrd (lat) exekvering. Implementationen skalar i både tid och minne i enlighet med förväntningarna för sekventiella program. Parallella program har delvis nytta av multipla processorkärnor men flaskhalsar i .NET-ramverket verkar begränsa prestandan. Programmeringsmodellens generella nytta inom organisationen är potentiellt hög och det finns många tillbyggnader som kan läggas till i framtiden, såsom villkorsprogrammering.
112

FORCED EXECUTION FOR SECURITY ANALYSIS OF SOFTWARE WITHOUT SOURCE CODE

Fei Peng (10682163) 03 May 2021 (has links)
<div><div><div><p>Binary code analysis is widely used in many applications, including reverse engineering, software forensics and security. It is very critical in these applications, since the analysis of binary code does not require source code to be available. For example, in one of the security applications, given a potentially malicious executable file, binary analysis can help building human inspectable representations such as control flow graph and call graph.</p><p>Existing binary analysis can be roughly classified into two categories, that are static analysis, and dynamic analysis. Both types of analysis have their own strengths and limitations. Static binary analysis is based on the result of scanning the binary code without executing it. It usually has good code coverage, but the analysis results are sometimes not quite accurate due to the lack of dynamic execution information. Dynamic binary analysis, on the other hand, is based on executing the binary on a set of inputs. On the contrast, the results are usually accurate but heavily rely on the coverage of the test inputs, which sometimes do not exist.</p><p>In this thesis, we first present a novel systematic binary analysis framework called X-Force. Basically, X-Force can force the binary to execute without using any inputs or proper environment setup. As part of the design of our framework, we have proposed a number of techniques, that includes (1) path exploration module which can drive the program to execute different paths; (2) a crash-free execution model that could detect and recover from execution exceptions properly; (3) overcoming a large number of technical challenges in making the technique work on real world binaries.</p><p>Although X-Force is a highly effective method to penetrate malware self-protection and expose hidden behavior, it is very heavy-weight. The reason is that it requires tracing individual instructions, reasoning about pointer alias relations on-the-fly, and repairing invalid pointers by on-demand memory allocation. To further solve this problem, we develop a light-weight and practical forced execution technique. Without losing analysis precision, it avoids tracking individual instructions and on-demand allocation. Under our scheme, a forced execution is very similar to a native one. It features a novel memory pre-planning phase that pre-allocates a large memory buffer, and then initializes the buffer, and variables in the subject binary, with carefully crafted values in a random fashion before the real execution. The pre-planning is designed in such a way that dereferencing an invalid pointer has a very large chance to fall into the pre-allocated region and hence does not cause any exception, and semantically unrelated invalid pointer dereferences highly likely access disjoint (pre-allocated) memory regions, avoiding state corruptions with probabilistic guarantees.</p></div></div></div>
113

Validating Software States Using Reverse Execution

Boland, Nathaniel Christian 03 May 2022 (has links)
No description available.
114

Finding Data Races in Software Binaries with Symbolic Execution

Jackson, Nathan D. 27 May 2020 (has links)
No description available.
115

Architecture for a Symbolic Execution Environment

Norlén, Joacim January 2022 (has links)
Program testing is an important aspect of software development. Symbolic execution can be used as a tool to automatically verify the correctness of programs for all feasible paths of execution. Moreover, for embedded systems symbolic execution can be used to generate test cases to estimate run times to help determine the worst-case execution time (WCET) and schedulability of systems. This thesis explores an architecture for symbolic execution for use in embedded Rust. Accompanied with the architecture are implementation details of a prototype Symex that can handle small programs. Symex evaluates all feasible paths of execution looking for errors and assertions, and reports which concrete inputs lead to errors. Included with the prototype is a command-line tool to automatically build and analyze Rust projects. The tool allows for easy analysis of projects, and an included library provides functions to manipulate symbolic variables to aid the analysis. The method of evaluating all feasible paths work well with the purpose of evaluating embedded systems, where the aim is typically to keep the code complexity low. The low code complexity lends the software to be resilient towards path explosion. For the cases where this cannot be helped the functions to manipulate the symbolic variables in the analysis can be used to further constrain the variables and lower the number of feasible paths. The evaluation shows the architecture is feasible for the intended use case in embedded systems. Furthermore, evaluation of the prototype shows how the system can be used to show the absence of errors, verify functions, and check for functional equivalence. Inherent to the symbolic execution approach the system cannot handle programs with a large branching factor.
116

Runtime of WebAssembly : A study into WebAssembly runtime

Eriksson, Adam January 2023 (has links)
WebAssembly is Assembly-like code that is created by compiling other languages into Wasm. The Wasm file can then be run on the web at near native speed. The objective of this study is to find how WebAssemblys runtime compares to JavaScript and native. The study will also see if different browsers impact WebAssembly runtime. To get the information two different methods were used. Firstly literature and articles were used to gather data on JavaScript and native runtime compared to WebAssembly. Secondly an empirical study was conducted to compare four different browsers WebAssembly runtime.  When comparing WebAssembly and JavaScript it was found that WebAssembly isn't always the fastest alternative due to many reasons but some major ones were how they were compiled and optimised.  When looking at WebAssembly compared to native we could clearly see that WebAssembly was slower. These slowdowns came primarily from the increase in code size but the virtual environment and security checks also contributed to this.  After the empirical study we could see some differences between browsers both in compilation speed and execution time. Between the chromium browsers the difference in execution time was very small and Firefox was always faster. But when looking at compilation time Chrome was faster with the other browsers having varying results. The research could conclude that WebAssembly can provide a useful boost to runtime on websites when used correctly. It is not something that is going to replace JavaScript but can be used together with it. We could also conclude that the user's choice of browser has a small impact on WebAssembly and can cause differences in runtime.
117

FUZZING DEEPER LOGIC WITH IMPEDING FUNCTION TRANSFORMATION

Rowan Brock Hart (14205404) 02 December 2022 (has links)
<p>Fuzzing, a technique for negative testing of programs using randomly mutated or gen?erated input data, is responsible for the discovery of thousands of bugs in software from web browsers to video players. Advances in fuzzing focus on various methods for enhancing the number of bugs found and reducing the time spent to find them by applying various static, dynamic, and symbolic binary analysis techniques. As a stochastic process, fuzzing is an inherently inefficient method for discovering bugs residing in deep logic of programs due to the compounding complexity of preconditions as paths in programs grow in length. We propose a novel system to overcome this limitation by abstracting away path-constraining preconditions from a statement level to a function level by identifying impeding functions, functions that inhibit control flow from proceeding. REFACE is an end-to-end system for enhancing the capabilities of an existing fuzzer by generating variant binaries that present an easier-to-fuzz interface and expands an ongoing fuzzing campaign with minimal offline overhead. REFACE operates entirely on binary programs, requiring no source code or sym?bols to run, and is fuzzer-agnostic. This enhancement represents a step forward in a new direction toward abstraction of code that has historically presented a significant barrier to fuzzing and aims to make incremental progress by way of several ancillary dataflow analysis techniques with potential wide applicability. We attain a significant improvement in speed of obtaining maximum coverage, re-discover one known bug, and discover one possible new bug in a binary program during evaluation against an un-modified state-of-the-art fuzzer with no augmentation.</p>
118

Performance evaluation of Multithreading, Hashtables, and Anonymous Functions for Rust and C++ : in Game Development

Nordström, Oscar, Raivio, Lowe January 2023 (has links)
Background C++ is a programming language introduced in 1985, while Rust was introduced in 2010. Rust focuses on speed and safety and was created with the need for concurrency in mind.These languages have different memory management systems as C++ originally only supported manual memory management, while Rust's memory management system performs checks before the compilation of the application begins to prevent issues such as dereferencing null pointers, use-after-free errors, and buffer overflows.These languages' standard libraries have some features in common such as anonymous functions,  hashtables, and threads.These features can be utilized in games by implementing resource management with hashtables, event systems with anonymous functions, and parallelization with threads. Objectives The objectives included designing two equivalent game implementations, one with Rust and one with C++. These games were the testing grounds used to test the standard library implementations of anonymous functions, hashtables, and threads. These features' execution times were measured and compared to determine if there existed a difference between them in Rust and C++. Methods Using Raylib, two identical games have been created that utilized and collected execution time metrics for anonymous functions, hashtables, and threads. These games were executed 90 times for a duration of 10 seconds. When all tests were completed, the execution time data was compiled. This data was visualized and analyzed to determine the differences in execution time between Rust and C++ for these specific features. Results The results indicate that Rust performs better at creating anonymous functions, searching and deleting entries in hashtables, and joining threads. The results also reveal that C++ performs better at calling anonymous functions, inserting into hashtables, and creating and starting threads. Conclusions A substantial statistical difference exists between the execution times for the selected features in Rust and C++. The performance differences are significant to the extent that a developer can gain some performance by selecting the language that performs best depending on their needs. In the end, both languages are well suited for game development based on the result of this limited study.
119

Implementering av Manufacturing Execution System : Kartläggning av funktioner och behov av ett MES för VBG / Implementation of a Manufacturing Execution System

Brattberg, Anton, Dirfors, Leo January 2021 (has links)
Detta examensarbete har genomförts i VBG Groups maskinverkstad i Vänersborg, där kommunikation mellan maskiner och affärssystem genomförs manuellt. Ett förslag har tagits fram på hur ett Manufacturing Execution System, MES, ska implementeras i maskinverkstaden. Ett MES är ett system som kommunicerar automatiskt mellan maskiner och affärssystem. Det har genomförts intervjuer och studiebesök på ett företag som har ett MES installerat i sin produktion. Det har skickats ut en enkät till de som kommer att använda systemet i framtiden för att få deras synpunkter. Resultatet från enkäten gav en bild över vilken data som är viktigast att ha tillgång till för att underlätta det dagliga arbetet för de anställda. Utifrån denna enkät och studiebesöket på VBG har behov kunnat fastställas, som det slutgiltiga förslaget har baserats på. Förslaget är att implementera Siemens Mindsphere tillsammans med Prevas eLIPS. Genom att använda sig av både Mindsphere och eLIPS kan alla nuvarande fastställda behov uppfyllas, med möjligheten att kunna uppfylla framtida behov, vilket är möjligt tack vare systemens modularitet. / This bachelor thesis has been carried out in VBG Group's machine workshop in Vänersborg, where the communication between machines and business systems is done manually. A proposal has been made on how a Manufacturing Execution System will be implemented in the machine workshop. MES is a system that communicates automatically between machines and business systems. Interviews have been conducted along with a visit to a company that has an MES installed in its production. A survey has been sent out to employees that will use the system in the future to get their opinion. The results from the survey provided a better understanding of which data is most important to have access to, in order to ease the daily work for the employees. The survey and the company visit to VBG h§as made it possible to determine the needs, on which the final proposal has been based on. The proposal is to implement Siemens Mindsphere together with Prevas eLIPS. By using both Mindsphere and eLIPS, all current needs can be fulfilled, with the ability to meet future needs, thanks to the modularity of the systems.
120

Towards attack-tolerant trusted execution environments : Secure remote attestation in the presence of side channels

Crone, Max January 2021 (has links)
In recent years, trusted execution environments (TEEs) have seen increasing deployment in computing devices to protect security-critical software from run-time attacks and provide isolation from an untrustworthy operating system (OS). A trusted party verifies the software that runs in a TEE using remote attestation procedures. However, the publication of transient execution attacks such as Spectre and Meltdown revealed fundamental weaknesses in many TEE architectures, including Intel Software Guard Exentsions (SGX) and Arm TrustZone. These attacks can extract cryptographic secrets, thereby compromising the integrity of the remote attestation procedure. In this work, we design and develop a TEE architecture that provides remote attestation integrity protection even when confidentiality of the TEE is compromised. We use the formally verified seL4 microkernel to build the TEE, which ensures strong isolation and integrity. We offload cryptographic operations to a secure co-processor that does not share any vulnerable microarchitectural hardware units with the main processor, to protect against transient execution attacks. Our design guarantees integrity of the remote attestation procedure. It can be extended to leverage co-processors from Google and Apple, for wide-scale deployment on mobile devices. / Under de senaste åren används betrodda exekveringsmiljöer (TEE) allt mera i datorutrustning för att skydda säkerhetskritisk programvara från attacker och för att isolera dem från ett opålitligt operativsystem. En betrodd part verifierar programvaran som körs i en TEE med hjälp av fjärrattestering. Nyliga mikroarkitekturella anfall, t.ex. Spectre och Meltdown, har dock visat grundläggande svagheter i många TEE-arkitekturer, inklusive Intel SGX och Arm TrustZone. Dessa attacker kan avslöja kryptografiska hemligheter och därmed äventyra integriteten av fjärrattestning. I det här arbetet utvecklar vi en arkitektur för en betrodd exekveringsmiljö (TEE) som ger integritetsskydd genom fjärrattestering även när TEE:s konfidentialitet äventyras. Vi använder den formellt verifierade seL4-mikrokärnan för att bygga TEE:n som garanterar stark isolering och integritet. För att skydda kryptografiska operationer, overför vi dem till en säker samprocessor som inte delar någon sårbar mikroarkitektur med huvudprocessorn. Vår arktektur garanterar fjärrattesteringens integritet och kan utnyttja medprocessorer från Google och Apple för att användas i stor skala på mobila enheter.

Page generated in 0.0509 seconds