Results 1 -
9 of
9
Rewriting Executable Files to Measure Program Behavior
- SOFTWARE PRACTICE & EXPERIENCE
, 1994
"... ..."
KSplice: Automatic Rebootless Kernel Updates
- In EuroSys 2009
, 2009
"... Ksplice allows system administrators to apply patches to their operating system kernels without rebooting. Unlike previous hot update systems, Ksplice operates at the object code layer, which allows Ksplice to transform many traditional source code patches into hot updates with little or no programm ..."
Abstract
-
Cited by 25 (1 self)
- Add to MetaCart
Ksplice allows system administrators to apply patches to their operating system kernels without rebooting. Unlike previous hot update systems, Ksplice operates at the object code layer, which allows Ksplice to transform many traditional source code patches into hot updates with little or no programmer involvement. In the common case that a patch does not change the semantics of persistent data structures, Ksplice can create a hot update without a programmer writing any new code. Security patches are one compelling application of hot updates. An evaluation involving all significant x86-32 Linux security patches from May 2005 to May 2008 finds that most security patches—56 of 64—require no new code to be performed as a Ksplice update. In other words, Ksplice can correct 88 % of the Linux kernel vulnerabilities from this interval without the need for rebooting and without writing any new code. If a programmer writes a small amount of new code to assist with the remaining patches (about 17 lines per patch, on average), then Ksplice can apply all 64 of the security patches from this interval without rebooting.
Fast and Flexible Shared Libraries
- In Proc. of the Summer 1993 USENIX Conf
, 1993
"... Existing implementations of shared libraries sacrifice speed (in loading, linking, and executed code), for essential flexibility (in symbol binding, address space use, and interface evolution). Modern operating systems provide the primitives needed to make the dynamic linker and loader a persistent ..."
Abstract
-
Cited by 15 (7 self)
- Add to MetaCart
Existing implementations of shared libraries sacrifice speed (in loading, linking, and executed code), for essential flexibility (in symbol binding, address space use, and interface evolution). Modern operating systems provide the primitives needed to make the dynamic linker and loader a persistent server which lives across program invocations. This can provide speed without sacrificing flexibility. The speed is gained primarily through caching of previous work, i.e., bound and relocated executable images and libraries. The flexibility comes from the server's being an active entity, capable of adapting to changing conditions, modifying its cached state, and responding to user directives. In this paper we present a shared library implementation based on OMOS, an Object/Meta-Object Server, which provides program linking and loading facilities as a special case of generic object instantiation. We discuss the architecture of OMOS and its support of module binding primitives, which make it ...
Partial Automation of an Integrated Reverse Engineering Environment of Binary Code
- In Third Working Conference on Reverse Engineering
, 1996
"... The constant development of newer and faster machines requires software to be made available on those new machines at a rate faster than what it takes to develop the software. The use of binary translation techniques to migrate software from one machine to another is effective---it makes software av ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
The constant development of newer and faster machines requires software to be made available on those new machines at a rate faster than what it takes to develop the software. The use of binary translation techniques to migrate software from one machine to another is effective---it makes software available in little time without incurring reprogramming costs. However, the development of such a tool is in itself an issue, as with each new architecture, a new tool needs to be written. We present a partially automated integrated environment for the reverse engineering of binary or executable code. This environment is suitable for the development of disassemblers, binary translators and decompilers. 1. Introduction Reverse engineering of software systems has been defined as the analysis of a subject system to identify the system 's components and their interrelationships, and to create a representation of the system in another form or at a higher level of abstraction [5]. The aim of rever...
Retargetable Binary Utilities
, 2002
"... Since software is playing an increasingly important role in systemon -chip, retargetable compilation has been an active research area in the last few years. However, the retargetting of equally important downstream system tools, such as assemblers, linkers and debuggers, has either been ignored, or ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Since software is playing an increasingly important role in systemon -chip, retargetable compilation has been an active research area in the last few years. However, the retargetting of equally important downstream system tools, such as assemblers, linkers and debuggers, has either been ignored, or falls short of meeting the requirements of modern programming languages and operating systems. In this paper, we present techniques that can automatically retarget the GNU binutils tool kit, which contains a large array of production-quality downstream tools. Other than having all the advantages enjoyed by open-source software by aligning to a de facto standard, our techniques are systematic, as a result of using a formal model of instruction set architecture (ISA) and application binary interface (ABI); and simple, as a result of leveraging free software to the largest extent.
An Embedded Error Recovery and Debugging Mechanism for Scripting Language Extensions
, 2001
"... In recent years, scripting languages such as Perl, Python, and Tcl have become popular development tools for the creation of sophisticated application software. One of the most useful features of these languages is their ability to easily interact with compiled languages such as C and C++. Although ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
In recent years, scripting languages such as Perl, Python, and Tcl have become popular development tools for the creation of sophisticated application software. One of the most useful features of these languages is their ability to easily interact with compiled languages such as C and C++. Although this mixed language approach has many benefits, one of the greatest drawbacks is the complexity of debugging that results from using interpreted and compiled code in the same application. In part, this is due to the fact that scripting language interpreters are unable to recover from catastrophic errors in compiled extension code. Moreover, traditional C/C++ debuggers do not provide a satisfactory degree of integration with interpreted languages. This paper describes an experimental system in which fatal extension errors such as segmentation faults, bus errors, and failed assertions are handled as scripting language exceptions. This system, which has been implemented as a general purpose shared library, requires no modifications to the target scripting language, introduces no performance penalty, and simplifies the debugging of mixed interpreted-compiled application software.
Synthesizing Scalable System Software for Wireless Sensor Networks Abstract
, 2007
"... Computer Science Sensor networks are being deployed at massive scales, containing a range of sensors and underlying computing platforms. Programming paradigms for sensor networks should meet the attendant challenges of scale and heterogeneity. Furthermore, with sensor networks expected to be deploye ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Computer Science Sensor networks are being deployed at massive scales, containing a range of sensors and underlying computing platforms. Programming paradigms for sensor networks should meet the attendant challenges of scale and heterogeneity. Furthermore, with sensor networks expected to be deployed for long periods of time, the ability to reprogram them remotely is necessary in order to provide new services, fix bugs, and enhance applications and system software. The operating system and whole system reprogramming approach in use today will have limited use in the future, given the envisioned scales of sensor network deployments. In order to address this challenge, researchers have treated virtual machines as system software. However, to satisfy the resource limitations of sensor nodes, they usually export only a minimal set of services to the application programmer. This makes applications of even moderate complexity difficult to implement. In this dissertation, methods to implement virtual machines that scale and export com-prehensive service-suites on a per-application basis are presented. The use of fine-grained software synthesis and scaling to build resource-efficient system software is advocated, and a new incre-mental linking technique to reduce the cost of application evolution to facilitate both application
EEL: Machine-Independent. . .
, 1995
"... EEL (Executable Editing Library) is a library for building tools to analyze and modify an executable (compiled) program. The systems and languages communities have built many tools for error detection, fault isolation, architecture translation, performance measurement, simulation, and optimization u ..."
Abstract
- Add to MetaCart
EEL (Executable Editing Library) is a library for building tools to analyze and modify an executable (compiled) program. The systems and languages communities have built many tools for error detection, fault isolation, architecture translation, performance measurement, simulation, and optimization using this approach of modifying executables. Currently, however, tools of this sort are difficult and timeconsuming to write and are usually closely tied to a particular machine and operating system. EEL supports a machine- and system-independent editing model that enables tool builders to modify an executable without being aware of the details of the underlying architecture or operating system or being concerned with the consequences of deleting instructions or adding foreign code. 1 Introduction A program executable holds instructions and data for a compiled program. In most situations, executables are atomic entities that are created, used (executed), and discarded. Sometimes, however, ...

