Jonas Maebe's research while affiliated with Ghent University and other places

Publications (21)

Article
This paper presents a feasibility study to protect smart card software against fault-injection attacks by means of link-time code rewriting. This approach avoids the drawbacks of source code hardening, avoids the need for manual assembly writing, and is applicable in conjunction with closed third-party compilers. We implemented a range of cookbook...
Conference Paper
We present a feasibility study to protect smart card software against fault-injection attacks by means of binary code rewriting. We implemented a range of protection techniques in a link-time rewriter and evaluate and discuss the obtained coverage, the associated overhead and engineering effort, as well as its practical usability.
Article
As described in many blog posts and in the scientific literature, exploits for software vulnerabilities are often engineered on the basis of patches. For example, “Microsoft Patch Tuesday” is often followed by “Exploit Wednesday” during which yet unpatched systems become vulnerable to patch-based exploits. Part of the patch engineering includes the...
Conference Paper
The instruction cache is a critical component in any microprocessor. It must have high performance to enable fetching of instructions on every cycle. However, current designs waste a large amount of energy on each access as tags and data banks from all cache ways are consulted in parallel to fetch the correct instructions as quickly as possible. Ex...
Article
Full-text available
The HiPEAC roadmap describes the HiPEAC vision on high-performance embedded architecture and compilation for the coming decade. It starts from societal challenges, application and industry trends, and technological constraints which lead to 7 technical challenges. This forms the basis for the HiPEAC vision "keep it simple for humans, and let the co...
Conference Paper
Full-text available
Javana is a tool for creating customized Java program analysis tools. It comes with an easy-to-use instrumentation framework that enables programmers to develop profiling tools that crosscut the Java application, the Java Virtual Machine (JVM) and the native execution layers. The goal of this poster isto demonstrate the power of Javana, using objec...
Article
Understanding the behavior of applications running on high-level language virtual machines, as is the case in Java, is non-trivial because of the tight entanglement at the lowest execution level between the application and the virtual machine. This paper proposes Javana, a system for building Java program analysis tools. Javana provides an easy-to-...
Conference Paper
Full-text available
Understanding the behavior of applications running on high-level language virtual machines, as is the case in Java, is non-trivial because of the tight entanglement at the lowest execution level between the application and the virtual machine. This paper proposes Javana, a system for building Java program analysis tools. Javana provides an easy-to-...
Conference Paper
Full-text available
In this paper we show that data races, a type of bug that generally only causes havoc in parallel programs, can also occur in sequential programs that use signal handlers. Fortunately, it turns out that adapting existing data race detectors to detect such bugs for sequential programs is straightforward. We present such a tool, and we describe the m...
Conference Paper
Full-text available
In this paper we show that data races, a type of bug that generally only causes havoc in parallel programs, can also occur in se- quential programs that use signal handlers. Fortunately, it turns out that adapting existing data race detectors to detect such bugs for sequential programs is straightforward. We present such a tool, and we describe the...
Article
Adding small code snippets at key points to existing code fragments is called instrumentation. It is an established technique to debug certain otherwise hard to solve faults, such as memory management issues and data races. Dynamic instrumentation can already be used to analyse code which is loaded or even generated at run time.With the advent of e...
Conference Paper
Full-text available
This chapter describes data race backend developed for DIOTA (Dynamic Instrumentation, Optimization and Transformation of Applications). DIOTA is generic instrumentation tool, and this tool uses so-called backend to use the information gathered using the instrumentation. Data race backend uses innovative technologies like multilevel bitmaps, snoope...
Article
Full-text available
In this paper, we describe DIOTA, a dynamic in- strumentation technique. The technique correctly deals with pro- grams that contain traditionally hard to instrument features such as data in code and code in data. The technique does not require reverse engineering, program understanding tools or heuristics about the compiler or linker used. The basi...
Article
Full-text available
A memory leak occurs when a program allocates a block of memory, but does not release it after its last use. In case such a block is still referenced by one or more reachable pointers at the end of the execution, fixing the leak is of- ten quite simple as long as it is known where the block was allocated. If, however, all references to the block ar...
Article
Full-text available
Software designers and developers face many problems in designing, building, deploying, and maintaining cutting-edge software applications–reliability,security,performance,power,legacy code,use of multi-core platforms,and maintenance are just a few of the issues that must be considered. Many of these issues are fundamental parts of the grand challe...
Article
Full-text available
Adding small code snippets at key points to existing code fragments is called instrumentation. It is an established technique to debug certain otherwise hard to solve faults, such as memory management issues and data races. Dynamic instru- mentation can already be used to analyse code which is loaded or even generated at run time. With the advent o...
Article
Full-text available
In this paper, we describe DIOTA, a novel method for instrumenting binaries. The technique correctly deals with programs that contain traditionally hard to instrument features such as data in code and code in data. The technique does not re- quire reverse engineering, program understanding tools or heuris- tics about the compiler or linker used. Th...
Article
Full-text available
Memory leaks are caused by allocating memory blocks and not releasing them after their last use. In most modern programs, dynamic data structures are used quite extensively. In this case, only knowing the allocation site of leaked memory blocks, as reported by most current tools, is often not enough to fix said leaks. It is also possible that all p...

Citations

... Computer scientists consider that we have entered the Centaur Era (humans and computers working together). People are interacting with the physical world in completely new ways, with sensory input devices, smartphones, wearables, smart applications, cars, robots and computers augmenting reality to assist humans [1]. A rich variety of sensors are present in almost all smart phones: accelerometers, gyroscope, magnetometer, GPS technology, barometer, proximity sensor, ambient light sensor, sound sensor (microphone), touchscreen sensors, fingerprint sensor, pedometer, barcode/QR code sensors, heart rate sensor, thermometer, air humidity sensor and even Geiger counter which can measure the radiation level. ...
... Applications for binary rewriters have been code compaction [149], instrumentation [63], performance optimization [116,135], and protection [147]. A wide range of protections have been implemented in binary rewriters, examples of which are hardening techniques [125,128], protections against fault injection [65,109], and protections against MATE attacks [28,147,150]. Section 2.4.2 provides an in-depth discussion on the use of link-time rewriters for code protection. ...
... 4. Accessibility: for older adults or disabled persons, voice-command systems can control the lights, lock the doors, operate a telephone or use a computer. Automation allows the user to set a schedule for automatic tasks like watering the lawn. 5. Providing convenience [5,6]: by giving the consumers control all the appliances [7] like making the accessibility for controlling the systems including air conditioning systems, intercoms, music, and multimedia devices throughout the home. Integrated hardware allows inhabitants to watch a video or listen to audio in all rooms. ...
... Dynamic instrumentation frameworks such as Valgrind (Nethercote and Seward 2007) or Javana (Maebe et al. 2006) serve as the basis for profilers and other kinds of performance tools. These frameworks resemble the use of continuation marks in our framework and could potentially be used to build feature-specific profilers. ...
... This makes it important to detect and prevent fault injection attacks on IoT systems as it can have disastrous consequences. Software vulnerability analysis techniques discover the IoT software system vulnerabilities to fault injection attacks and subsequently safeguard the software against the attack effects using software hardening techniques [3], [4]. ...
... Notice that a single tool can serve multiple purposes, such as building and protecting software. Importantly, when a software analysis tool such as BinDiff, IDA Pro, or KLEE is used in a feedback-driven protection approach in some paper (e. g., [181]), we count that as a tool's use for protection. Of course, when the tool is also used to evaluate the strength of the eventually obtained protection, we mark it as a tool's use for analysis. ...
... The monitor could then prevent the SIGSEGV signal from being delivered, thus effectively emulating all accesses to the shared memory pages. Emulating accesses to shared memory is unfortunately prohibitively slow [83] and completely negates the performance benefits of using shared memory in the first place. ...
... Determining precise locations of memory leakage has also been investigated. Maebe et al. [10] have presented a technique that tracks all pointers to the allocated memory using reference count. In their approach authors keep track of pointers by monitoring load and store operations that may change pointer structure of a program, detecting locations of memory leakage. ...
... The same approach is used by DynInst [25,48] 27 . Diota [87] utilizes this approach as well, but retains an original copy of the altered program's parts in memory to handle the data in code and code in data rewriting problem for CISC machines. ...
... Concurrency bugs are generally associated with multithreaded programs. However, researchers have shown that they also exist in sequential [14], interrupt-driven [15], and event-based programs [16]. The execution of signal-handlers, interrupt-handlers, and other asynchronously invoked eventhandlers interrupts the control flow of these programs and so introduces fine-grained concurrency. ...