Advanced

A new instruction overlapping technique for improved anti-disassembly and obfuscation of x86 binaries

Jämthagen, Christopher LU ; Lantz, Patrik LU and Hell, Martin LU (2013) Workshop on Anti-malware Testing Research (WATeR) In [Host publication title missing] p.25-33
Abstract
The problem of correctly recovering assembly instructions from a binary has received much attention and both malware and license validation code often relies on various anti-disassembly techniques in order to complicate analysis. One well-known anti-disassembly technique is to use overlapping code such that the disassembler starts decoding from an incorrect byte, but still recovers valid code. The actual code which is supposed to be executed is instead hidden inside a decoy instruction, and is overlapped with the disassembled code.



We propose and investigate a new novel anti-disassembly method that allows for exceptional flexibility in the hidden instructions, while at the same time providing a disassembled main path... (More)
The problem of correctly recovering assembly instructions from a binary has received much attention and both malware and license validation code often relies on various anti-disassembly techniques in order to complicate analysis. One well-known anti-disassembly technique is to use overlapping code such that the disassembler starts decoding from an incorrect byte, but still recovers valid code. The actual code which is supposed to be executed is instead hidden inside a decoy instruction, and is overlapped with the disassembled code.



We propose and investigate a new novel anti-disassembly method that allows for exceptional flexibility in the hidden instructions, while at the same time providing a disassembled main path that is executable. This allows the approach to be very efficient against static linear sweep disassembly, but also to be more difficult to detect using dynamic analysis methods. The idea is to utilize highly redundant instructions, e.g., multibyte no-operation instructions, and embed the hidden code in the

configurable portions of those instructions. By carefully selecting wrapping instructions, providing overlaps, the hidden execution path can be crafted with great flexibility. We also provide a detection-algorithm, together with testing results, for testing software such that the hidden execution path can be identified. (Less)
Please use this url to cite or link to this publication:
author
organization
publishing date
type
Chapter in Book/Report/Conference proceeding
publication status
published
subject
keywords
overlapping instructions anti-disassembly hidden execution path obfuscation malware x86
in
[Host publication title missing]
pages
25 - 33
publisher
IEEE--Institute of Electrical and Electronics Engineers Inc.
conference name
Workshop on Anti-malware Testing Research (WATeR)
external identifiers
  • WOS:000332987700004
  • Scopus:84893681398
DOI
10.1109/WATeR.2013.6707878
language
English
LU publication?
yes
id
12be0b5a-9e2f-431c-a4be-74494faf6064 (old id 4058297)
alternative location
http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=6707878
date added to LUP
2013-09-26 11:10:30
date last changed
2017-02-19 04:29:48
@inproceedings{12be0b5a-9e2f-431c-a4be-74494faf6064,
  abstract     = {The problem of correctly recovering assembly instructions from a binary has received much attention and both malware and license validation code often relies on various anti-disassembly techniques in order to complicate analysis. One well-known anti-disassembly technique is to use overlapping code such that the disassembler starts decoding from an incorrect byte, but still recovers valid code. The actual code which is supposed to be executed is instead hidden inside a decoy instruction, and is overlapped with the disassembled code.<br/><br>
<br/><br>
We propose and investigate a new novel anti-disassembly method that allows for exceptional flexibility in the hidden instructions, while at the same time providing a disassembled main path that is executable. This allows the approach to be very efficient against static linear sweep disassembly, but also to be more difficult to detect using dynamic analysis methods. The idea is to utilize highly redundant instructions, e.g., multibyte no-operation instructions, and embed the hidden code in the<br/><br>
configurable portions of those instructions. By carefully selecting wrapping instructions, providing overlaps, the hidden execution path can be crafted with great flexibility. We also provide a detection-algorithm, together with testing results, for testing software such that the hidden execution path can be identified.},
  author       = {Jämthagen, Christopher and Lantz, Patrik and Hell, Martin},
  booktitle    = {[Host publication title missing]},
  keyword      = {overlapping instructions anti-disassembly hidden execution path obfuscation malware x86},
  language     = {eng},
  pages        = {25--33},
  publisher    = {IEEE--Institute of Electrical and Electronics Engineers Inc.},
  title        = {A new instruction overlapping technique for improved anti-disassembly and obfuscation of x86 binaries},
  url          = {http://dx.doi.org/10.1109/WATeR.2013.6707878},
  year         = {2013},
}