From: <Saved by Microsoft Internet Explorer 5>
Subject: Mihai Christodorescu, Somesh Jha "Static Analysis of Executables to Detect Malicious Patterns"
Date: Tue, 16 Oct 2007 02:26:23 +0800
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C80F9B.F234E740"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: text/html;
	charset="gb2312"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/cj03.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Mihai Christodorescu, Somesh Jha "Static Analysis of =
Executables to Detect Malicious Patterns"</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dgb2312">
<STYLE>P {
	TEXT-ALIGN: justify
}
TABLE {
	TEXT-ALIGN: justify
}
TBODY {
	TEXT-ALIGN: justify
}
TD {
	TEXT-ALIGN: justify
}
.Math {
	FONT-WEIGHT: bold; COLOR: green
}
</STYLE>

<META content=3D"MSHTML 6.00.2900.3059" name=3DGENERATOR></HEAD>
<BODY bgColor=3Dwhite>
<CENTER>
<H1>Static Analysis of Executables to Detect Malicious Patterns<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Footnote-=
Star"><SUP>*</SUP></A></H1>
<P>
<TABLE align=3Dcenter>
  <TBODY>
  <TR>
    <TD><B>Mihai Christodorescu</B><BR><A=20
      href=3D"mailto:mihai@cs.wisc.edu"><TT>mihai@cs.wisc.edu</TT></A> =
</TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp; </TD>
    <TD><B>Somesh Jha</B><BR><A=20
      href=3D"mailto:mihai@cs.wisc.edu"><TT>mihai@cs.wisc.edu</TT></A>=20
  </TD></TR></TBODY></TABLE></P>
<P>
<CENTER><I><A href=3D"http://www.cs.wisc.edu/">Computer Sciences=20
Department</A><BR><A href=3D"http://www.wisc.edu/">University of =
Wisconsin,=20
Madison</A> </I></CENTER>
<P></P></CENTER>
<CENTER>
<P>
<H3>Abstract</H3>
<P></P>
<TABLE width=3D"75%">
  <TBODY>
  <TR>
    <TD>
      <P>Malicious code detection is a crucial component of any defense=20
      mechanism. In this paper, we present a unique viewpoint on =
malicious code=20
      detection. We regard malicious code detection as an=20
      obfuscation-deobfuscation game between malicious code writers and=20
      researchers working on malicious code detection. Malicious code =
writers=20
      attempt to obfuscate the malicious code to subvert the malicious =
code=20
      detectors, such as anti-virus software. We tested the resilience =
of three=20
      commercial virus scanners against code-obfuscation attacks. The =
results=20
      were surprising: the three commercial virus scanners could be =
subverted by=20
      very simple obfuscation transformations! We present an =
architecture for=20
      detecting malicious patterns in executables that is resilient to =
common=20
      obfuscation transformations. Experimental results demonstrate the =
efficacy=20
      of our prototype tool, SAFE (a <U>s</U>tatic <U>a</U>nalyzer =
<U>f</U>or=20
      <U>e</U>xecutables). </P></TD></TR></TBODY></TABLE></CENTER><BR><A =

name=3DFootnote-Star></A>
<TABLE width=3D"65%" align=3Dcenter>
  <TBODY>
  <TR>
    <TD vAlign=3Dtop><B><SUP>*</SUP></B></TD>
    <TD>This work was supported in part by the Office of Naval Research =
under=20
      contracts N00014-01-1-0796 and N00014-01-1-0708. The U.S. =
Government is=20
      authorized to reproduce and distribute reprints for Governmental =
purposes,=20
      notwithstanding any copyright notices affixed=20
      thereon.<BR>&nbsp;&nbsp;&nbsp;&nbsp;The views and conclusions =
contained=20
      herein are those of the authors, and should not be interpreted as=20
      necessarily representing the official policies or endorsements, =
either=20
      expressed or implied, of the above government agencies or the U.S. =

      Government. </TD></TR></TBODY></TABLE><!-- =
---------------------------------------------------------------------- =
--><!-- -- INTRODUCTION =
------------------------------------------------------ --><!-- =
---------------------------------------------------------------------- =
--><A=20
name=3DSection-Introduction></A>
<H2>1 Introduction</H2>
<P>In the interconnected world of computers, malicious code has become =
an=20
omnipresent and dangerous threat. Malicious code can infiltrate hosts =
using a=20
variety of methods such as attacks against known software flaws, hidden=20
functionality in regular programs, and social engineering. Given the =
devastating=20
effect malicious code has on our cyber infrastructure, identifying =
malicious=20
programs is an important goal. Detecting the presence of malicious code =
on a=20
given host is a crucial component of any defense mechanism. </P>
<P>Malicious code is usually classified [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#mcgrawmor=
risett2000-taxonomy">16</A>]=20
according to its propagation method and goal into the following =
categories:=20
<UL>
  <LI><I>viruses</I> are programs that self-replicate within a host by =
attaching=20
  themselves to programs and/or documents that become carriers of the =
malicious=20
  code;=20
  <LI><I>worms</I> self-replicate across a network;=20
  <LI><I>trojan horses</I> masquerade as useful programs, but contain =
malicious=20
  code to attack the system or leak data;=20
  <LI><I>back doors</I> open the system to external entities by =
subverting the=20
  local security policies to allow remote access and control over a =
network;=20
  <LI><I>spyware</I> is a useful software package that also transmits =
private=20
  user data to an external entity. </LI></UL>
<P></P>
<P>Combining two or more of these malicious code categories can lead to =
powerful=20
attack tools. For example, a worm can contain a payload that installs a =
back=20
door to allow remote access. When the worm replicates to a new system =
(via email=20
or other means), the back door is installed on that system, thus =
providing an=20
attacker with a quick and easy way to gain access to a large set of =
hosts.=20
Staniford <I>et al.</I> have demonstrated that worms can propagate =
extremely=20
quickly through a network, and thus potentially cripple the entire cyber =

infrastructure [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Staniford=
Paxson">1</A>].=20
In a recent outbreak, the Sapphire/SQL Slammer worm reached the peak =
infection=20
rate in about 10 minutes since launch, doubling every 8.5 seconds [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#caida-sap=
phire">32</A>].=20
Once the back-door tool gains a large installed base, the attacker can =
use the=20
compromised hosts to launch a coordinated attack, such as a distributed=20
denial-of-service (DDoS) attack [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#cert-ddos=
what">2</A>].=20
</P>
<P>In this paper, we develop a methodology for detecting malicious =
patterns in=20
executables. Although our method is general, we have initially focused =
our=20
attention on viruses. A computer virus replicates itself by inserting a =
copy of=20
its code (the <I>viral code</I>) into a host program. When a user =
executes the=20
infected program, the virus copy runs, infects more programs, and then =
the=20
original program continues to execute. To the casual user, there is no =
perceived=20
difference between the clean and the infected copies of a program until =
the=20
virus activates its malicious payload. </P>
<P>The classic virus-detection techniques look for the presence of a=20
virus-specific sequence of instructions (called a <I>virus =
signature</I>) inside=20
the program: if the signature is found, it is highly probable that the =
program=20
is infected. For example, the Chernobyl/CIH virus is detected by =
checking for=20
the hexadecimal sequence [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#wang1998-=
chernobyl">5</A>]:=20
</P>
<CENTER>
<TABLE>
  <TBODY>
  <TR>
    <TD>
      <HR height=3D"1">
      <TT>E800 0000 005B 8D4B 4251 5050</TT><BR><TT>0F01 4C24 FE5B 83C3 =
1CFA=20
      8B2B</TT>=20
      <HR height=3D"1">
    </TD>
    <TD></TD></TR></TBODY></TABLE></CENTER>
<P>This corresponds to the following IA-32 instruction sequence, which=20
constitutes part of the virus body: </P>
<CENTER><TT>
<TABLE>
  <TBODY>
  <TR>
    <TD>
      <HR height=3D"1">
      <TT>E8 00000000</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD>
      <HR height=3D"1">
      <TT>call 0h</TT></TD></TR>
  <TR>
    <TD><TT>5B</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>pop ebx</TT></TD></TR>
  <TR>
    <TD><TT>8D 4B 42</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>lea ecx, [ebx + 42h]</TT></TD></TR>
  <TR>
    <TD><TT>51</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>push ecx</TT></TD></TR>
  <TR>
    <TD><TT>50</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>push eax</TT></TD></TR>
  <TR>
    <TD><TT>50</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>push eax</TT></TD></TR>
  <TR>
    <TD><TT>0F01 4C 24 FE</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>sidt [esp - 02h]</TT></TD></TR>
  <TR>
    <TD><TT>5B</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>pop ebx</TT></TD></TR>
  <TR>
    <TD><TT>83 C3 1C</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>add ebx, 1Ch</TT></TD></TR>
  <TR>
    <TD><TT>FA</TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>cli</TT></TD></TR>
  <TR>
    <TD><TT>8B 2B
      <HR height=3D"1">
      </TT></TD>
    <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD><TT>mov ebp, [ebx]
      <HR height=3D"1">
      </TT></TD></TR></TBODY></TABLE></TT></CENTER>
<P>This classic detection approach is effective when the virus code does =
not=20
change significantly over time. Detection is also easier when viruses =
originate=20
from the same source code, with only minor modifications and updates. =
Thus, a=20
virus signature can be common to several virus variants. For example,=20
Chernobyl/CIH versions 1.2, 1.3, and 1.4 differ mainly in the trigger =
date on=20
which the malicious code becomes active and can be effectively detected =
by=20
scanning for a single signature, namely the one shown above. </P>
<P>The virus writers and the antivirus software developers are engaged =
in an=20
<I>obfuscation-deobfuscation</I> game. Virus writers try to obfuscate =
the=20
"vanilla" virus so that signatures used by the antivirus software cannot =
detect=20
these "morphed" viruses. Therefore, to detect an obfuscated virus, the =
virus=20
scanners first must undo the obfuscation transformations used by the =
virus=20
writers. In this game, virus writers are obfuscators and researchers =
working on=20
malicious code detection are deobfuscators. A method to detect malicious =
code=20
should be resistant to common obfuscation transformations. This paper =
introduces=20
such a method. The main contributions of this paper include: </P>
<P>&#8226; <B>The obfuscation-deobfuscation game and attacks on =
commercial virus=20
scanners</B><BR>We view malicious code detection as an =
obfuscation-deobfuscation=20
game between the virus writers and the researchers working to detect =
malicious=20
code. Background on some common obfuscation techniques used by virus =
writers is=20
given in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-B=
ackground">Section=20
3</A>. We also have developed an obfuscator for executables. =
Surprisingly, the=20
three commercial virus scanners we considered could be easily thwarted =
by simple=20
obfuscation transformations (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-A=
ttacks">Section=20
4</A>). For example, in some cases the Norton antivirus scanner could =
not even=20
detect insertions of <TT>nop</TT> instructions. </P>
<P>&#8226; <B>A general architecture for detecting malicious patterns in =

executables</B><BR>We introduce a general architecture for detecting =
malicious=20
patterns in executables. An overview of the architecture and its novel =
features=20
is given in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-A=
rchitecture">Section=20
5</A>. External predicates and uninterpreted symbols are two important =
elements=20
in our architecture. External predicates are used to summarize results =
of=20
various static analyses, such as points-to and live-range analysis. We =
allow=20
these external predicates to be referred in the abstraction patterns =
that=20
describe the malicious code. Moreover, we allow uninterpreted symbols in =

patterns, which makes the method resistant to renaming, a common =
obfuscation=20
transformation. Two key components of our architecture, <I>the program=20
annotator</I> and <I>the malicious code detector</I>, are described in =
Sections=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-A=
nnotator">6</A>=20
and <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-M=
Checker">7</A>=20
respectively. </P>
<P>&#8226; <B>Prototype for x86 executables</B><BR>We have implemented a =
prototype for=20
detecting malicious patterns in x86 executables. The tool is called a=20
<I><U>s</U>tatic <U>a</U>nalyzer <U>f</U>or <U>e</U>xecutables</I> or=20
<I>SAFE</I>. We have successfully tried SAFE on multiple viruses; for =
brevity we=20
report on our experience with four specific viruses. Experimental =
results (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-E=
xperiments">Section=20
8</A>) demonstrate the efficacy of SAFE. There are several interesting=20
directions we intend to pursue as future work, which are summarized in =
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-C=
onclusion">Section=20
9</A>. </P>
<P>&#8226; <B>Extensibility of analysis</B><BR>SAFE depends heavily on =
static analysis=20
techniques. As a result, the precision of the tool directly depends on =
the=20
static analysis techniques that are integrated into it. In other words, =
<I>SAFE=20
is as good as the static analysis techniques it is built upon</I>. For =
example,=20
if SAFE uses the result of points-to analysis, it will be able to track =
values=20
across memory references. In the absence of a points-to analyzer, SAFE =
makes the=20
conservative assumption that a memory reference can access any memory =
location=20
(i.e., everything points to everything). We have designed SAFE so that =
various=20
static analysis techniques can be readily integrated into it. Several =
simple=20
static analysis techniques are already implemented in SAFE. </P><!-- =
---------------------------------------------------------------------- =
--><!-- -- RELATED WORK =
------------------------------------------------------ --><!-- =
---------------------------------------------------------------------- =
--><A=20
name=3DSection-Related></A>
<H2>2 Related Work</H2><A name=3DSection-Theory></A>
<H3>2.1 Theoretical Discussion</H3>
<P>The theoretical limits of malicious code detection (specifically of =
virus=20
detection) have been the focus of many researchers. Cohen [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#cohen1987=
-viruses">13</A>]=20
and Chess-White [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#chesswhit=
e2000-undetectable">14</A>]=20
showed that in general the problem of virus detection is undecidable. =
Similarly,=20
several important static analysis problems are undecidable or =
computationally=20
hard [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#landi1992=
-undecidability">31</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#myers1981=
-interdataflow">30</A>].=20
</P>
<P>However, the problem considered in this paper is slightly different =
than the=20
one considered by Cohen [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#cohen1987=
-viruses">13</A>]=20
and Chess-White [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#chesswhit=
e2000-undetectable">14</A>].=20
Assume that we are given a vanilla virus <SPAN class=3DMath>V</SPAN> =
which=20
contains a malicious sequence of instructions <SPAN =
class=3DMath>=A6=D3</SPAN>. Next we=20
are given an obfuscated version <SPAN class=3DMath>O(V)</SPAN> of the =
virus. The=20
problem is to find whether there exists a sequence of instructions <SPAN =

class=3DMath>=A6=D3</SPAN> in <SPAN class=3DMath>O(V)</SPAN> which is =
"semantically=20
equivalent" to <SPAN class=3DMath>=A6=D3</SPAN>. A recent result by =
Vadhan <I>et=20
al.</I> [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#barakgold=
reichimpagliazzorudichsahaivadhanyang2001-impossible">25</A>]=20
proves that in general program obfuscation is impossible. This leads us =
to=20
believe that a computationally bounded adversary will not be able to =
obfuscate a=20
virus to completely hide its malicious behavior. We will further explore =
these=20
theoretical issues in the future. </P><A name=3DSection-Other></A>
<H3>2.2 Other Detection Techniques</H3>
<P>Our work is closely related to previous results on static analysis =
techniques=20
for verifying security properties of software [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#AshcraftE=
ngler">42</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#BishopDil=
ger">47</A>,=20
<A =
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Chess">44=
</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#ChenWagne=
r">39</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#JensenMet=
ayerThorn">40</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#CAS:LLO95=
">48</A>].=20
In a larger context, our work is similar to existing research on =
software=20
verification [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#SLAMSpin"=
>41</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Bandera">=
45</A>].=20
However, there are several important differences. First, viewing =
malicious code=20
detection as an obfuscation-deobfuscation game is unique. The=20
obfuscation-deobfuscation viewpoint lead us to explore obfuscation =
attacks upon=20
commercial virus scanners. Second, to our knowledge, all existing work =
on static=20
analysis techniques for verifying security properties analyze source =
code. On=20
the other hand, our analysis technique works on executables. In certain=20
contexts, such as virus detection, source code is not available. =
Finally, we=20
believe that using uninterpreted variables in the specification of the =
malicious=20
code is unique (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-P=
atterns">Section=20
6.2</A>). </P>
<P>Currie <I>et al.</I> looked at the problem of automatically checking =
the=20
equivalence of DSP routines in the context of verifying the correctness =
of=20
optimizing transformations [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#curriehur=
ajan2000-dspverification">33</A>].=20
Their approach is similar to ours, but they impose a set of simplifying=20
assumptions for their simulation tool to execute with reasonable =
performance.=20
Feng and Hu took this approach one step further by using a theorem =
prover to=20
determine when to unroll loops [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#fenghu200=
2-vliwverification">34</A>].=20
In both cases the scope of the problem is limited to VLIW or DSP code =
and there=20
is limited support for user-specified analyses. Our work is applied to =
x86=20
(IA-32) assembly and can take full advantage of static analyses =
available to the=20
user of our SAFE tool. Necula adopts a similar approach based on =
comparing a=20
transformed code sequence against the original code sequence in the =
setting of=20
verifying the correctness of the GNU C compiler [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#necula200=
0-translationvalidation">35</A>].=20
Using knowledge of the transformations performed by the compiler, =
equivalence=20
between the compiler input and the compiler output is proven using a =
simulation=20
relation. In our work, we require no <I>a priori</I> knowledge of the=20
obfuscation transformations performed, as it would be unrealistic to =
expect such=20
information in the presence of malicious code. </P>
<P>We plan to enhance our framework by using the ideas from existing =
work on=20
type systems for assembly code. We are currently investigating Morrisett =
<I>et=20
al.</I>'s <I>Typed Assembly Language</I> [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#morrisett=
craryglewwalker1998-stal">27</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#morrisett=
walkercraryglew1998-tal">26</A>].=20
We apply a simple type system (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-A=
nnotator">Section=20
6</A>) to the binaries we analyze by manually inserting the type =
annotations. We=20
are unaware of a compiler that can produce Typed Assembly Language, and =
thus we=20
plan to support external type annotations to enhance the power of our =
static=20
analysis. </P>
<P>Dynamic monitoring can also be used for malicious code detection. =
Cohen [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#cohen1987=
-viruses">13</A>]=20
and Chess-White [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#chesswhit=
e2000-undetectable">14</A>]=20
propose a virus detection model that executes code in a sandbox. Another =

approach rewrites the binary to introduce checks driven by an =
enforceable=20
security policy [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Erlingsso=
nSchneiderIRM">43</A>]=20
(known as the <I>inline reference monitor</I> or the <I>IRM</I> =
approach). We=20
believe static analysis can be used to improve the efficiency of dynamic =

analysis techniques, e.g., static analysis can remove redundant checks =
in the=20
IRM framework. We construct our models for executables similar to the =
work done=20
in specification-based monitoring [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#giffinjha=
miller2002-ids">29</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#deanwagne=
r2001-ids">28</A>],=20
and apply our detection algorithm in a context-insensitive fashion. =
Other=20
research used context-sensitive analysis by employing push-down systems =
(PDSs).=20
Analyses described in [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#ChenWagne=
r">39</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#JensenMet=
ayerThorn">40</A>]=20
use the model checking algorithms for pushdown systems [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#CAV:EHRS0=
0">38</A>]=20
to verify security properties of programs. The data structures used in=20
interprocedural slicing [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#kn:HRB90"=
>36</A>],=20
interprocedural DFA [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#kn:RHS95"=
>37</A>],=20
and Boolean programs [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#SLAMSpin"=
>41</A>]=20
are hierarchically structured graphs and can be translated to pushdown =
systems.=20
</P><A name=3DSection-OtherObf></A>
<H3>2.3 Other Obfuscators</H3>
<P>While deciding on the initial obfuscation techniques to focus on, we =
were=20
influenced by several existing tools. <I>Mistfall</I> (by <I>z0mbie</I>) =
is a=20
library for binary obfuscation, specifically written to blend malicious =
code=20
into a host program [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#z0mbie-mi=
stfall">9</A>].=20
It can encrypt, morph, and blend the virus code into the host program. =
Our=20
binary obfuscator is very similar to Mistfall. Unfortunately, we could =
not=20
successfully morph binaries using Mistfall, so we could not perform a =
direct=20
comparison between our obfuscator and Mistfall. <I>Burneye</I> (by =
<I>TESO</I>)=20
is a Linux binary encapsulation tool. Burneye encrypts a binary =
(possibly=20
multiple times), and packages it into a new binary with an extraction =
tool [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#teso-burn=
eye">10</A>].=20
In this paper, we have not considered encryption based obfuscation =
techniques.=20
In the future, we will incorporate encryption based obfuscation =
techniques into=20
our tool, by incorporating or extending existing libraries. </P><A=20
name=3DSection-Background></A>
<H2>3 Background on Obfuscating Viruses</H2>
<P>To detect obfuscated viruses, antivirus software have become more =
complex.=20
This section discusses some common obfuscation transformations used by =
virus=20
writers and how antivirus software have historically dealt with =
obfuscated=20
viruses. </P>
<P>A <I>polymorphic virus</I> uses multiple techniques to prevent =
signature=20
matching. First, the virus code is encrypted, and only a small in-clear =
routine=20
is designed to decrypt the code before running the virus. When the =
polymorphic=20
virus replicates itself by infecting another program, it encrypts the =
virus body=20
with a newly-generated key, and it changes the decryption routine by =
generating=20
new code for it. To obfuscate the decryption routine, several =
transformations=20
are applied to it. These include: <TT>nop</TT>-insertion, code =
transposition=20
(changing the order of instructions and placing jump instructions to =
maintain=20
the original semantics), and register reassignment (permuting the =
register=20
allocation). These transformations effectively change the virus =
signature (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-Si=
mpleMutation">Figure=20
1</A>), inhibiting effective signature scanning by an antivirus tool. =
</P>
<CENTER><A name=3DFigure-SimpleMutation></A>
<TABLE cellSpacing=3D0 border=3D0>
  <TBODY style=3D"FONT-FAMILY: monospace">
  <TR style=3D"FONT-STYLE: italic; FONT-FAMILY: serif">
    <TD colSpan=3D3>Original code<BR>
      <HR height=3D"1">
    </TD>
    <TD rowSpan=3D21>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD colSpan=3D3>Obfuscated code<BR>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>E8 00000000</TD>
    <TD rowSpan=3D12>&nbsp;&nbsp;</TD>
    <TD>call 0h</TD>
    <TD>E8 00000000</TD>
    <TD rowSpan=3D15>&nbsp;&nbsp;</TD>
    <TD>call 0h</TD></TR>
  <TR>
    <TD>E8 00000000</TD>
    <TD>call 0h</TD>
    <TD>E8 00000000</TD>
    <TD>call 0h</TD></TR>
  <TR>
    <TD>5B</TD>
    <TD>pop ebx</TD>
    <TD>5B</TD>
    <TD>pop ebx</TD></TR>
  <TR>
    <TD>8D 4B 42</TD>
    <TD>lea ecx, [ebx + 42h]</TD>
    <TD>8D 4B 42</TD>
    <TD>lea ecx, [ebx + 45h]</TD></TR>
  <TR>
    <TD>51</TD>
    <TD>push ecx</TD>
    <TD bgColor=3D#cccccc>90</TD>
    <TD bgColor=3D#cccccc>nop</TD></TR>
  <TR>
    <TD>50</TD>
    <TD>push eax</TD>
    <TD>51</TD>
    <TD>push ecx</TD></TR>
  <TR>
    <TD>50</TD>
    <TD>push eax</TD>
    <TD>50</TD>
    <TD>push eax</TD></TR>
  <TR>
    <TD>0F01 4C 24 FE</TD>
    <TD>sidt [esp - 02h]</TD>
    <TD>50</TD>
    <TD>push eax</TD></TR>
  <TR>
    <TD>5B</TD>
    <TD>pop ebx</TD>
    <TD bgColor=3D#cccccc>90</TD>
    <TD bgColor=3D#cccccc>nop</TD></TR>
  <TR>
    <TD>83 C3 1C</TD>
    <TD>add ebx, 1Ch</TD>
    <TD>0F01 4C 24 FE</TD>
    <TD>sidt [esp - 02h]</TD></TR>
  <TR>
    <TD>FA</TD>
    <TD>cli</TD>
    <TD>5B</TD>
    <TD>pop ebx</TD></TR>
  <TR>
    <TD>8B 2B</TD>
    <TD>mov ebp, [ebx]</TD>
    <TD>83 C3 1C</TD>
    <TD>add ebx, 1Ch</TD></TR>
  <TR>
    <TD colSpan=3D3>
      <HR height=3D"1">
    </TD>
    <TD bgColor=3D#cccccc>90</TD>
    <TD bgColor=3D#cccccc>nop</TD></TR>
  <TR>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>FA</TD>
    <TD>cli</TD></TR>
  <TR>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>8B 2B</TD>
    <TD>mov ebp, [ebx]</TD></TR>
  <TR>
    <TD colSpan=3D4></TD>
    <TD colSpan=3D3>
      <HR height=3D"1">
    </TD></TR>
  <TR style=3D"FONT-STYLE: italic; FONT-FAMILY: serif">
    <TD colSpan=3D3>Signature<BR>
      <HR height=3D"1">
    </TD>
    <TD colSpan=3D3>New signature<BR>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD colSpan=3D3>E800 0000 005B 8D4B 4251 5050</TD>
    <TD colSpan=3D3>E800 0000 005B 8D4B 42<SPAN=20
      style=3D"BACKGROUND-COLOR: #cccccc">90</SPAN> 5150</TD></TR>
  <TR>
    <TD colSpan=3D3>0F01 4C24 FE5B 83C3 1CFA 8B2B<BR>
      <HR height=3D"1">
    </TD>
    <TD colSpan=3D3>50<SPAN style=3D"BACKGROUND-COLOR: =
#cccccc">90</SPAN> 0F01=20
      4C24 FE5B 83C3 1C<SPAN style=3D"BACKGROUND-COLOR: =
#cccccc">90</SPAN><BR>
      <HR height=3D"1">
    </TD></TR></TBODY></TABLE>Figure 1: Original code and obfuscated =
code from=20
Chernobyl/CIH, and their corresponding signatures. Newly added =
instructions are=20
highlighted. </CENTER>
<P>The obfuscated code in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-Si=
mpleMutation">Figure=20
1</A> will behave in the same manner as before since the <TT>nop</TT>=20
instruction has no effect other than incrementing the program counter<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Footnote-=
1"><SUP>1</SUP></A>.=20
However the signature has changed. Analysis can detect simple =
obfuscations, like=20
<TT>nop</TT>-insertion, by using regular expressions instead of fixed=20
signatures. To catch <TT>nop</TT> insertions, the signature should allow =
for any=20
number of <TT>nop</TT>s at instruction boundaries (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-No=
pSmartSig">Figure=20
2</A>). In fact, most modern antivirus software use regular expressions =
as virus=20
signatures. </P>
<CENTER><A name=3DFigure-NopSmartSig></A>
<TABLE>
  <TBODY style=3D"FONT-FAMILY: monospace">
  <TR>
    <TD colSpan=3D7>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>E800 </TD>
    <TD rowSpan=3D5>&nbsp;&nbsp;</TD>
    <TD>0000 </TD>
    <TD rowSpan=3D5>&nbsp;&nbsp;</TD>
    <TD>00(90)* </TD>
    <TD rowSpan=3D5>&nbsp;&nbsp;</TD>
    <TD>5B(90)* </TD></TR>
  <TR>
    <TD>8D4B </TD>
    <TD>42(90)* </TD>
    <TD>51(90)* </TD>
    <TD>50(90)* </TD></TR>
  <TR>
    <TD>50(90)* </TD>
    <TD>0F01 </TD>
    <TD>4C24 </TD>
    <TD>FE(90)* </TD></TR>
  <TR>
    <TD>5B(90)* </TD>
    <TD>83C3 </TD>
    <TD>1C(90)* </TD>
    <TD>FA(90)* </TD></TR>
  <TR>
    <TD>8B2B </TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD colSpan=3D7>
      <HR height=3D"1">
    </TD></TR></TBODY></TABLE>Figure 2: Extended signature to catch=20
<TT>nop</TT>-insertion. </CENTER>
<P>Antivirus software deals with polymorphic viruses by performing =
heuristic=20
analyses of the code (such as checking only certain program locations =
for virus=20
code, as most polymorphic viruses attach themselves only at the =
beginning or end=20
of the executable binary [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#nachenber=
g1997-usptopolyvirus-2">18</A>]),=20
and even emulating the program in a sandbox to catch the virus in action =
[<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#nachenber=
g1997-usptopolyvirus-1">17</A>].=20
The emulation technique is effective because at some point during the =
execution=20
of the infected program, the virus body appears decrypted in main =
memory, ready=20
for execution; the detection comes down to frequently scanning the =
in-memory=20
image of the program for virus signatures while the program executes. =
</P>
<P><I>Metamorphic viruses</I> attempt to evade heuristic detection =
techniques by=20
using more complex obfuscations. When they replicate, these viruses =
change their=20
code in a variety of ways, such as code transposition, substitution of=20
equivalent instruction sequences, and register reassignment [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#szorferri=
e2001-metamorphic">11</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#z0mbie-ho=
mepage">7</A>].=20
Furthermore, they can "weave" the virus code into the host program, =
making=20
detection by traditional heuristics almost impossible since the virus =
code is=20
mixed with program code and the virus entry point is no longer at the =
beginning=20
of the program (these are designated as <U>e</U>ntry <U>p</U>oint=20
<U>o</U>bscuring (EPO) viruses [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#kaspersky=
2002-epo">15</A>]).=20
</P>
<P>As virus writers employ more complex obfuscation techniques, =
heuristic=20
virus-detection techniques are bound to fail. Therefore, <I>there is =
need to=20
perform a deeper analysis of malicious code based upon more =
sophisticated=20
static-analysis techniques</I>. In other words, inspection of the code =
to detect=20
malicious patterns should use structures that are closer to the =
semantics of the=20
code, as purely syntactic techniques, such as regular expression =
matching, are=20
no longer adequate. </P>
<H3>3.1 The Suite of Viruses</H3>
<P>We have analyzed multiple viruses using our tool, and discuss four of =
them in=20
this paper. Descriptions of these viruses are given below. </P><A=20
name=3DSection-DescriptionViruses></A>
<H4>3.1.1 Detailed Description of the Viruses</H4>
<P><B>Chernobyl (CIH)</B><BR>According to the Symantec Antivirus Reseach =
Center=20
(SARC), <I>Chernobyl/CIH</I> is a virus that infects 32-bit Windows =
95/98/NT=20
executable files [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#sarc1998-=
cih">22</A>].=20
When a user executes an infected program under Windows 95/98/ME, the =
virus=20
becomes resident in memory. Once the virus is resident, CIH infects =
other files=20
when they are accessed. Infected files may have the same size as the =
original=20
files because of CIH's unique mode of infection: the virus searches for =
empty,=20
unused spaces in the file<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Footnote-=
2"><SUP>2</SUP></A>.=20
Next it breaks itself up into smaller pieces and inserts its code into =
these=20
unused spaces. Chernobyl has two different payloads: the first one =
overwrites=20
the hard disk with random data, starting at the beginning of the disk =
(sector 0)=20
using an infinite loop. The second payload tries to cause permanent =
damage to=20
the computer by corrupting the Flash BIOS. </P>
<P><B>zombie-6.b</B><BR>The <I>z0mbie-6.b</I> virus includes an =
interesting=20
feature -- the polymorphic engine hides every piece of the virus, and =
the virus=20
code is added to the infected file as a chain of differently-sized =
routines,=20
making standard signature detection techniques almost useless. </P>
<P><B>f0sf0r0</B><BR>The <I>f0sf0r0</I> virus uses a polymorphic engine =
combined=20
with an EPO technique to hide its entry point. According to Kaspersky =
Labs [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#kaspersky=
">21</A>],=20
when an infected file is run and the virus code gains control, it =
searches for=20
portable executable files in the system directories and infects them. =
While=20
infecting, the virus encrypts itself with a polymorphic loop and writes =
a result=20
to the end of the file. To gain control when the infected file is run, =
the virus=20
does not modify the program's start address, but instead writes a =
"<TT>jmp=20
&lt;virus_entry&gt;</TT>" instruction into the middle of the file. </P>
<P><B>Hare</B><BR>Finally, the <I>Hare</I> virus infects the bootloader =
sectors=20
of floppy disks and hard drives, as well as executable programs. When =
the=20
payload is triggered, the virus overwrites random sectors on the hard =
disk,=20
making the data inaccessible. The virus spreads by polymorphically =
changing its=20
decryption routine and encrypting its main body. </P>
<P>The Hare and Chernobyl/CIH viruses are well known in the antivirus =
community,=20
with their presence in the wild peaking in 1996 and 1998, respectively. =
In spite=20
of this, we discovered that <I>current commercial virus scanners could =
not=20
detect slightly obfuscated versions of these viruses.</I> </P><A=20
name=3DSection-Attacks></A>
<H2>4 Obfuscation Attacks on Commercial Virus Scanners</H2>
<P>We tested three commercial virus scanners against several common =
obfuscation=20
transformations. To test the resilience of commercial virus scanners to =
common=20
obfuscation transformations, we have developed an obfuscator for =
binaries. Our=20
obfuscator supports four common obfuscation transformations: dead-code=20
insertion, code transposition, register reassignment, and instruction=20
substitution. While there are other generic obfuscation techniques [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#collbergt=
homborsonlow1997-taxonomy">12</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#collbergt=
homborsonlow1997-opaque">23</A>],=20
those described here seem to be preferred by malicious code writers, =
possibly=20
because implementing them is easy and they add little to the memory =
footprint.=20
</P><A name=3DSection-Obfusc></A>
<H3>4.1 Common Obfuscation Transformations</H3><A =
name=3DSection-ObfuscTrash></A>
<H4>4.1.1 Dead-Code Insertion</H4>
<P>Also known as <I>trash insertion</I>, dead-code insertion adds code =
to a=20
program without modifying its behavior. Inserting a sequence of =
<TT>nop</TT>=20
instructions is the simplest example. More interesting obfuscations =
involve=20
constructing challenging code sequences that modify the program state, =
only to=20
restore it immediately. </P>
<P>Some code sequences are designed to fool antivirus software that =
solely rely=20
on signature matching as their detection mechanism. Other code sequences =
are=20
complicated enough to make automatic analysis very time-consuming, if =
not=20
impossible. For example, passing values through memory rather than =
registers or=20
the stack requires accurate pointer analysis to recover values. The =
example=20
shown in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-Ob=
fuscTrash">Figure=20
3</A> should clarify this. The code marked by <TT>(*)</TT> can be easily =

eliminated by automated analysis. On the other hand, the second and =
third=20
insertions, marked by <TT>(**)</TT>, do cancel out but the analysis is =
more=20
complex. Our obfuscator supports dead-code insertion. </P>
<P>Not all dead-code sequence can be detected and eliminated, as this =
problem=20
reduces to program equivalence (i.e., <I>is this code sequence =
equivalent to an=20
empty program?</I>), which is undecidable. We believe that many common =
dead-code=20
sequences can be detected and eliminated with acceptable performance. To =
quote=20
the documentation of the RPME virus permutation engine [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#z0mbie-rp=
me2000">8</A>],=20
</P>
<BLOCKQUOTE>[T]rash [does not make the] program more complex [...]. If =
[the]=20
  detecting algorithm will be written such as I think, then there is no=20
  difference between NOP and more complex trash. </BLOCKQUOTE>
<P>Our detection tool, SAFE, identifies several kinds of such dead-code=20
segments. </P>
<DIV align=3Dcenter><A name=3DFigure-ObfuscTrash></A>
<TABLE cellSpacing=3D0 cellPadding=3D2>
  <TBODY style=3D"FONT-FAMILY: monospace">
  <TR style=3D"FONT-STYLE: italic; FONT-FAMILY: sans-serif" =
vAlign=3Dbottom>
    <TD>Original code<BR>
      <HR height=3D"1">
    </TD>
    <TD>&nbsp;&nbsp;</TD>
    <TD>&nbsp;&nbsp;</TD>
    <TD colSpan=3D3>Code obfuscated through<BR>dead-code insertion<BR>
      <HR height=3D"1">
    </TD>
    <TD>&nbsp;&nbsp;</TD>
    <TD colSpan=3D2>Code obfuscated through<BR>code transposition<BR>
      <HR height=3D"1">
    </TD>
    <TD>&nbsp;&nbsp;</TD>
    <TD>&nbsp;&nbsp;</TD>
    <TD>Code obfuscated through<BR>instruction substitution<BR>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>call 0h</TD>
    <TD></TD>
    <TD></TD>
    <TD>call 0h</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>call 0h</TD>
    <TD></TD>
    <TD></TD>
    <TD>call 0h</TD></TR>
  <TR>
    <TD>pop ebx</TD>
    <TD></TD>
    <TD></TD>
    <TD>pop ebx</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>pop ebx</TD>
    <TD></TD>
    <TD></TD>
    <TD>pop ebx</TD></TR>
  <TR>
    <TD>lea ecx, [ebx+42h]</TD>
    <TD></TD>
    <TD></TD>
    <TD>lea ecx, [ebx+42h]</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>jmp S2</TD>
    <TD></TD>
    <TD></TD>
    <TD>lea ecx, [ebx+42h]</TD></TR>
  <TR>
    <TD>push ecx</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>nop</TD>
    <TD></TD>
    <TD>(*)</TD>
    <TD></TD>
    <TD>S3:</TD>
    <TD>push eax</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>sub esp, 03h</TD></TR>
  <TR>
    <TD>push eax</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>nop</TD>
    <TD></TD>
    <TD>(*)</TD>
    <TD></TD>
    <TD></TD>
    <TD>push eax</TD>
    <TD></TD>
    <TD></TD>
    <TD>sidt [esp - 02h]</TD></TR>
  <TR>
    <TD>push eax</TD>
    <TD></TD>
    <TD></TD>
    <TD>push ecx</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>sidt [esp - 02h]</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>add [esp], 1Ch</TD></TR>
  <TR>
    <TD>sidt [esp - 02h]</TD>
    <TD></TD>
    <TD></TD>
    <TD>push eax</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>jmp S4</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>mov ebx, [esp]</TD></TR>
  <TR>
    <TD>pop ebx</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>inc eax</TD>
    <TD></TD>
    <TD>(**)</TD>
    <TD></TD>
    <TD></TD>
    <TD>add ebx, 1Ch</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>inc esp</TD></TR>
  <TR>
    <TD>add ebx, 1Ch</TD>
    <TD></TD>
    <TD></TD>
    <TD>push eax</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>jmp S6</TD>
    <TD></TD>
    <TD></TD>
    <TD>cli</TD></TR>
  <TR>
    <TD>cli</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>dec [esp - 0h]</TD>
    <TD></TD>
    <TD>(**)</TD>
    <TD></TD>
    <TD>S2:</TD>
    <TD>lea ecx, [ebx+42h ]</TD>
    <TD></TD>
    <TD></TD>
    <TD>mov ebp, [ebx]</TD></TR>
  <TR>
    <TD>mov ebp, [ebx]</TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>dec eax</TD>
    <TD></TD>
    <TD>(**)</TD>
    <TD></TD>
    <TD></TD>
    <TD>push ecx</TD>
    <TD></TD>
    <TD></TD>
    <TD>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>
      <HR height=3D"1">
    </TD>
    <TD></TD>
    <TD></TD>
    <TD>sidt [esp - 02h]</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>jmp S3</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>pop ebx</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>S4:</TD>
    <TD>pop ebx</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>add ebx, 1Ch</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>cli</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>cli</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD bgColor=3D#cccccc>jmp S5</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>mov ebp, [ebx]</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD>S5:</TD>
    <TD>mov ebp, [ebx]</TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD></TD>
    <TD></TD>
    <TD colSpan=3D3>
      <HR height=3D"1">
    </TD>
    <TD></TD>
    <TD colSpan=3D2>
      <HR height=3D"1">
    </TD>
    <TD></TD>
    <TD></TD>
    <TD></TD></TR></TBODY></TABLE>Figure 3: Examples of obfuscation =
through=20
dead-code insertion, code transposition, and instruction substitution. =
Newly=20
added instructions are highlighted. </DIV><A=20
name=3DSection-ObfuscTransposition></A>
<H4>4.1.2 Code Transposition</H4>
<P>Code transposition shuffles the instructions so that the order in the =
binary=20
image is different from the execution order, or from the order of =
instructions=20
assumed in the signature used by the antivirus software. To achieve the =
first=20
variation, we randomly reorder the instructions and insert unconditional =

branches or <I>jumps</I> to restore the original control-flow. The =
second=20
variation swaps instructions if they are not interdependent, similar to =
compiler=20
code generation, but with the different goal of randomizing the =
instruction=20
stream. </P>
<P>The two versions of this obfuscation technique differ in their =
complexity.=20
The code transposition technique based upon unconditional branches is =
relatively=20
easy to implement. The second technique that interchanges independent=20
instructions is more complicated because the independence of =
instructions must=20
be ascertained. On the analysis side, code transposition can complicate =
matters=20
only for a human. Most automatic analysis tools (including ours) use an=20
intermediate representation, such as the control flow graph (CFG) or the =
program=20
dependence graph (PDG) [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#kn:HRB90"=
>36</A>],=20
that is not sensitive to superfluous changes in control flow. Note that =
an=20
optimizer acts as a deobfuscator in this case by finding the unnecessary =

unconditional branches and removing them from the program code. =
Currently, our=20
obfuscator supports only code transposition based upon inserting =
unconditional=20
branches. </P><A name=3DSection-RegReass></A>
<H4>4.1.3 Register Reassignment</H4>
<P>The register reassignment transformation replaces usage of one =
register with=20
another in a specific live range. This technique exchanges register =
names and=20
has no other effect on program behavior. For example, if register =
<TT>ebx</TT>=20
is dead throughout a given live range of the register <TT>eax</TT>, it =
can=20
replace <TT>eax</TT> in that live range. In certain cases, register =
reassignment=20
requires insertion of prologue and epilogue code around the live range =
to=20
restore the state of various registers. Our binary obfuscator supports =
this code=20
transformation. </P>
<P>The purpose of this transformation is to subvert the antivirus =
software=20
analyses that rely upon signature-matching. There is no real obfuscatory =
value=20
gained in this process. Conceptually, the deobfuscation challenge is =
equally=20
complex before or after the register reassignment. </P><A=20
name=3DSection-ObfuscSubstitution></A>
<H4>4.1.4 Instruction Substitution</H4>
<P>This obfuscation technique uses a dictionary of equivalent =
instruction=20
sequences to replace one instruction sequence with another. Since this=20
transformation relies upon human knowledge of equivalent instructions, =
it poses=20
the toughest challenge for automatic detection of malicious code. The =
IA-32=20
instruction set is especially rich, and provides several ways of =
performing the=20
same operation. Coupled with several architecturally ambivalent features =
(e.g.,=20
a memory-based stack that can be accessed both as a stack using =
dedicated=20
instructions and as a memory area using standard memory operations), the =
IA-32=20
assembly language provides ample opportunity for instruction =
substitution. </P>
<P>To handle obfuscation based upon instruction substitution, an =
analysis tool=20
must maintain a dictionary of equivalent instruction sequences, similar =
to the=20
dictionary used to generate them. This is not a comprehensive solution, =
but it=20
can cope with the common cases. In the case of IA-32, the problem can be =

slightly simplified by using a simple intermediate language that =
"unwinds" the=20
complex operations corresponding to each IA-32 instruction. In some =
cases, a=20
theorem prover such as Simplify [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Simplify"=
>49</A>]=20
or PVS [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#PVS">46</=
A>] can=20
also be used to prove that two sequences of instructions are equivalent. =
</P>
<H3>4.2 Testing Commercial Antivirus Tools</H3>
<P>We tested three commercial virus scanners using obfuscated versions =
of the=20
four viruses described earlier. The results were quite surprising: <I>a=20
combination of <TT>nop</TT>-insertion and code transposition was enough =
to=20
create obfuscated versions of the viruses that the commercial virus =
scanners=20
could not detect</I>. Moreover, the Norton antivirus software could not =
detect=20
an obfuscated version of the Chernobyl virus using just =
<TT>nop</TT>-insertions.=20
SAFE was resistant to the two obfuscation transformations. The results =
are=20
summarized in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-AVC=
omparison">Table=20
1</A>. A =A1=CC indicates that the antivirus software detected the =
virus. A =A1=C1 means=20
that the software did not detect the virus. Note that unobfuscated =
versions of=20
all four viruses were detected by all the tools. </P>
<DIV align=3Dcenter><A name=3DTable-AVComparison></A>
<TABLE cellSpacing=3D1 cellPadding=3D5 align=3Dcenter bgColor=3D#cccccc =
border=3D0>
  <TBODY bgColor=3Dwhite>
  <TR vAlign=3Dbottom>
    <TD colSpan=3D2></TD>
    <TD>Norton<SUP>&reg;</SUP><BR>Antivirus<BR>7.0</TD>
    <TD>McAfee<SUP>&reg;</SUP><BR>VirusScan<BR>6.01</TD>
    <TD>Command<SUP>&reg;</SUP><BR>Antivirus<BR>4.61.2</TD>
    <TD>SAFE</TD></TR>
  <TR bgColor=3D#cccccc>
    <TD rowSpan=3D2>Chernobyl</TD>
    <TD>original</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD></TR>
  <TR bgColor=3D#cccccc>
    <TD>obfuscated</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD></TR>
  <TR>
    <TD rowSpan=3D2>z0mbie-6.b</TD>
    <TD>original</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD></TR>
  <TR>
    <TD>obfuscated</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD></TR>
  <TR bgColor=3D#cccccc>
    <TD rowSpan=3D2>f0sf0r0</TD>
    <TD>original</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD></TR>
  <TR bgColor=3D#cccccc>
    <TD>obfuscated</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD></TR>
  <TR>
    <TD rowSpan=3D2>Hare</TD>
    <TD>original</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=CC</TD></TR>
  <TR>
    <TD>obfuscated</TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: center">=A1=C1<SUP>[1,2]</SUP></TD>
    <TD style=3D"TEXT-ALIGN: =
center">=A1=CC</TD></TR></TBODY></TABLE><BR>
<TABLE border=3D0>
  <TBODY>
  <TR>
    <TD align=3Dright>Obfuscations considered:</TD>
    <TD align=3Dleft><SUP>[1]</SUP> =3D <TT>nop</TT>-insertion (a form =
of=20
      dead-code insertion)</TD></TR>
  <TR>
    <TD></TD>
    <TD align=3Dleft><SUP>[2]</SUP> =3D code=20
transposition</TD></TR></TBODY></TABLE><BR>Table 1: Results of testing =
various=20
virus scanners on obfuscated viruses. </DIV><A =
name=3DSection-Architecture></A>
<H2>5 Architecture</H2>
<P>This section gives an overview of the architecture of <I>SAFE</I> (<A =

href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-Ar=
ch">Figure=20
4</A>). Subsequent sections provide detailed descriptions of the major=20
components of SAFE. </P>
<DIV align=3Dcenter><A name=3DFigure-Arch></A>
<P style=3D"TEXT-ALIGN: center"><IMG=20
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/overall_archi=
tecture.png">=20
</P>Figure 4: Architecture of the static analyzer for executables =
(SAFE). </DIV>
<P>To detect malicious patterns in executables, we build an abstract=20
representation of the malicious code (here a virus). The abstract =
representation=20
is the "generalization" of the malicious code, e.g., it incorporates =
obfuscation=20
transformations, such as superfluous changes in control flow and =
register=20
reassignments. Similarly, one must construct an abstract representation =
of the=20
executable in which we are trying to find a malicious pattern. Once the=20
generalization of the malicious code and the abstract representation of =
the=20
executable are created, we can then detect the malicious code in the =
executable.=20
We now describe each component of SAFE. </P>
<P><B>Generalizing the malicious code: Building the malicious code=20
automaton</B><BR>The malicious code is generalized into an automaton =
with=20
uninterpreted symbols. Uninterpreted symbols (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-P=
atterns">Section=20
6.2</A>) provide a generic way of representing data dependencies between =

variables without specifically referring to the storage location of each =

variable. </P>
<P><B>Pattern-definition loader</B><BR>This component takes a library of =

<I>abstraction patterns</I> and creates an internal representation. =
These=20
abstraction patterns are used as alphabet symbols by the malicious code=20
automaton. </P>
<P><B>The executable loader</B><BR>This component transforms the =
executable into=20
an internal representation, here the collection of control flow graphs =
(CFGs),=20
one for each program procedure. The executable loader (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-Ex=
eLoader">Figure=20
5</A>) uses two off-the-shelf components, <I>IDA Pro</I> and =
<I>CodeSurfer</I>.=20
IDA Pro (by DataRescue [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#datarescu=
e">20</A>])=20
is a commercial interactive disassembler. <I>CodeSurfer</I> (by =
GrammaTech, Inc.=20
[<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#grammatec=
h">19</A>])=20
is a program-understanding tool that performs a variety of static =
analyses.=20
CodeSurfer provides an API for access to various structures, such as the =
CFGs=20
and the call graph, and to results of a variety of static analyses, such =
as=20
points-to analysis. In collaboration with GrammaTech, we have developed =
a=20
connector that transforms IDA Pro internal structures into an =
intermediate form=20
that CodeSurfer can parse. </P>
<DIV align=3Dcenter><A name=3DFigure-ExeLoader></A>
<P style=3D"TEXT-ALIGN: center"><IMG=20
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/infrastructur=
e_executable_loader.png">=20
</P>Figure 5: Implementation of executable loader module. </DIV>
<P><B>The annotator</B><BR>This component inputs a CFG from the =
executable and=20
the set of abstraction patterns and produces an annotated CFG, the =
abstract=20
representation of a program procedure. The annotated CFG includes =
information=20
that indicates where a specific abstraction pattern was found in the =
executable.=20
The annotator runs for each procedure in the program, transforming each =
CFG. <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-A=
nnotator">Section=20
6</A> describes the annotator in detail. </P>
<P><B>The detector</B><BR>This component computes whether the malicious =
code=20
(represented by the malicious code automaton) appears in the abstract=20
representation of the executable (created by the annotator). This =
component uses=20
an algorithm based upon language containment and unification. Details =
can be=20
found in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-M=
Checker">Section=20
7</A>. </P>
<P>Throughout the rest of the paper, the malicious code fragment shown =
in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14a">Figure=20
6</A> is used as a running example. This code fragment was extracted =
from the=20
Chernobyl virus version 1.4. </P>
<DIV align=3Dcenter><A name=3DFigure-CIH14a></A>
<TABLE border=3D0>
  <TBODY style=3D"FONT-FAMILY: monospace">
  <TR>
    <TD style=3D"FONT-STYLE: italic; FONT-FAMILY: serif" =
colSpan=3D3>Original=20
    Code</TD></TR>
  <TR>
    <TD colSpan=3D3>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>WVCTF:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>eax, dr1 </TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>ebx, [eax+10h] </TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>edi, [eax] </TD></TR>
  <TR>
    <TD>LOWVCTF:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>ecx </TD></TR>
  <TR>
    <TD></TD>
    <TD>jecxz</TD>
    <TD>SFMM </TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>esi, ecx </TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>eax, 0d601h </TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>edx </TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>ecx </TD></TR>
  <TR>
    <TD></TD>
    <TD>call</TD>
    <TD>edi </TD></TR>
  <TR>
    <TD></TD>
    <TD>jmp</TD>
    <TD>LOWVCTF </TD></TR>
  <TR>
    <TD>SFMM:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>ebx </TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>eax </TD></TR>
  <TR>
    <TD></TD>
    <TD>stc</TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>pushf</TD>
    <TD></TD></TR>
  <TR>
    <TD colSpan=3D3>
      <HR height=3D"1">
    </TD></TR></TBODY></TABLE>Figure 6: Original code fragment from =
Chernobyl virus=20
version 1.4. </DIV>
<P>To obtain the obfuscated code fragment depicted (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14b">Figure=20
7</A>), we applied the following obfuscation transformations: dead-code=20
insertion, code transposition, and register reassignment. Incidentally, =
the=20
three commercial antivirus software (Norton, McAfee, and Command) =
detected the=20
original code fragment shown. However, the obfuscated version was not =
detected=20
by any of the three commercial antivirus software. </P>
<DIV align=3Dcenter><A name=3DFigure-CIH14b></A>
<TABLE border=3D0>
  <TBODY style=3D"FONT-FAMILY: monospace">
  <TR>
    <TD style=3D"FONT-STYLE: italic; FONT-FAMILY: serif" =
colSpan=3D3>Obfuscated=20
      Code</TD></TR>
  <TR>
    <TD colSpan=3D3>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>WVCTF:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>eax, dr1 </TD></TR>
  <TR>
    <TD></TD>
    <TD>jmp</TD>
    <TD>Loc1 </TD></TR>
  <TR>
    <TD>Loc2:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>edi, [eax] </TD></TR>
  <TR>
    <TD>LOWVCTF:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>ecx </TD></TR>
  <TR>
    <TD></TD>
    <TD>jecxz</TD>
    <TD>SFMM </TD></TR>
  <TR>
    <TD></TD>
    <TD>nop</TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>esi, ecx </TD></TR>
  <TR>
    <TD></TD>
    <TD>nop</TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>nop</TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>eax, 0d601h </TD></TR>
  <TR>
    <TD></TD>
    <TD>jmp</TD>
    <TD>Loc3 </TD></TR>
  <TR>
    <TD>Loc1:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>mov</TD>
    <TD>ebx, [eax+10h] </TD></TR>
  <TR>
    <TD></TD>
    <TD>jmp</TD>
    <TD>Loc2 </TD></TR>
  <TR>
    <TD>Loc3:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>edx </TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>ecx </TD></TR>
  <TR>
    <TD></TD>
    <TD>nop</TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>call</TD>
    <TD>edi </TD></TR>
  <TR>
    <TD></TD>
    <TD>jmp</TD>
    <TD>LOWVCTF </TD></TR>
  <TR>
    <TD>SFMM:</TD>
    <TD></TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>ebx </TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>eax </TD></TR>
  <TR>
    <TD></TD>
    <TD>push</TD>
    <TD>eax </TD></TR>
  <TR>
    <TD></TD>
    <TD>pop</TD>
    <TD>eax </TD></TR>
  <TR>
    <TD></TD>
    <TD>stc</TD>
    <TD></TD></TR>
  <TR>
    <TD></TD>
    <TD>pushf</TD>
    <TD></TD></TR>
  <TR>
    <TD colSpan=3D3>
      <HR height=3D"1">
    </TD></TR></TBODY></TABLE>Figure 7: Obfuscated version based upon =
code in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14a">Figure=20
6</A>. </DIV><A name=3DSection-Annotator></A>
<H2>6 Program Annotator</H2>
<P>This section describes the program annotator in detail and the data=20
structures and static analysis concepts used in the detection algorithm. =
The=20
program annotator inputs the CFG of the executable and a set of =
abstraction=20
patterns and outputs an annotated CFG. The annotated CFG associates with =
each=20
node <SPAN class=3DMath>n</SPAN> in the CFG a set of patterns that match =
the=20
program at the point corresponding to the node <SPAN =
class=3DMath>n</SPAN>. The=20
precise syntax for an abstraction pattern and the semantics of matching =
are=20
provided later in the section. </P>
<P><A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14CFGAnnot">Figure=20
8</A> shows the CFG and a simple annotated CFG corresponding to the =
obfuscated=20
code from <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14b">Figure=20
7</A>. Note that one node in the annotated CFG can correspond to several =
nodes=20
in the original CFG. For example, the nodes annotated with =
"IrrelevantInstr"=20
corresponds to one or more <TT>nop</TT> instructions. </P>
<P>The annotations that appear in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14CFGAnnot">Figure=20
8</A> seem intuitive, but formulating them within a static-analysis =
framework=20
requires formal definitions. We enhance the SAFE framework with a type =
system=20
for x86 based on the typestate system described in [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#xu2000-sa=
fety">6</A>].=20
However, other type systems designed for assembly languages, such as =
<I>Typed=20
Assembly Language</I> [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#morrisett=
craryglewwalker1998-stal">27</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#morrisett=
walkercraryglew1998-tal">26</A>],=20
could be used in the SAFE framework. Definitions, patterns, and the =
matching=20
procedure are described in Sections <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-D=
efinitions">6.1</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-P=
atterns">6.2</A>=20
and <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-M=
atching">6.3</A>=20
respectively. </P>
<DIV align=3Dcenter><A name=3DFigure-CIH14CFGAnnot></A>
<TABLE align=3Dcenter>
  <TBODY>
  <TR>
    <TD><IMG=20
      =
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/cih-cfg-2.png=
"></TD>
    <TD><IMG=20
      =
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/cih-annot-cfg=
.png"></TD></TR></TBODY></TABLE><BR>Figure=20
8: Control flow graph of obfuscated code fragment, and annotations. =
</DIV><A=20
name=3DSection-Definitions></A>
<H3>6.1 Basic Definitions</H3>
<P>This section provides the formal definitions used in the rest of the =
paper.=20
</P>
<P><B>Program Points</B><BR>An <I>instruction</I> <SPAN =
class=3DMath>I</SPAN> is a=20
function application, <SPAN class=3DMath>I : =A6=D3<SUB>1</SUB> =A1=C1 =
=A1=AD =A1=C1 =A6=D3<SUB>k</SUB> =A1=FA=20
=A6=D3</SPAN>. While the type system does not preclude higher-order =
functions or=20
function composition, it is important to note that most assembly =
languages=20
(including x86) do not support these concepts. A <I>program</I> <SPAN=20
class=3DMath>P</SPAN> is a sequence of instructions <SPAN=20
class=3DMath>&lt;I<SUB>1</SUB>, =A1=AD, I<SUB>N</SUB>&gt;</SPAN>. During =
program=20
execution, the instructions are processed in the sequential order they =
appear in=20
the program, with the exception of control-flow instructions that can =
change the=20
sequential execution order. The index of the instruction in the program =
sequence=20
is called a <I>program point</I> (or <I>program counter</I>), denoted by =
the=20
function <SPAN class=3DMath>pc : {I<SUB>1</SUB>, =A1=AD, I<SUB>N</SUB>} =
=A1=FA [1, =A1=AD,=20
N]</SPAN>, and defined as <SPAN class=3DMath>pc(I<SUB>j</SUB>) =3D j, =
&#8704; 1 =A1=DC j =A1=DC=20
N</SPAN>. The set of all program points for program <SPAN =
class=3DMath>P</SPAN> is=20
<SPAN class=3DMath>ProgramPoints(P) =3D {1, =A1=AD, N}</SPAN>. The <SPAN =

class=3DMath>pc</SPAN> function provides a total ordering over the set =
of program=20
instructions. </P>
<P><B>Control Flow Graph</B><BR>A <I>basic block</I> <SPAN =
class=3DMath>B</SPAN>=20
is a maximal sequence of instructions <SPAN =
class=3DMath>&lt;I<SUB>l</SUB>, =A1=AD,=20
I<SUB>m</SUB>&gt;</SPAN> that contains at most one control-flow =
instruction,=20
which must appear at the end. Thus, the execution within a basic block =
is by=20
definition sequential. Let <SPAN class=3DMath>V</SPAN> be the set of =
basic blocks=20
for a program <SPAN class=3DMath>P</SPAN>, and <SPAN class=3DMath>E =
&#8838; V =A1=C1 V =A1=C1 { T, F=20
}</SPAN> be the set of control flow transitions between basic blocks. =
Each edge=20
is marked with either <SPAN class=3DMath>T</SPAN> or <SPAN =
class=3DMath>F</SPAN>=20
corresponding to the condition (<I>true</I> or <I>false</I>) on which =
that edge=20
is followed. Unconditional jumps have outgoing edges always marked with =
<SPAN=20
class=3DMath>T</SPAN>. The directed graph <SPAN class=3DMath>CFG( P ) =
=3D &lt;V, E=20
&gt;</SPAN> is called the <I>control flow graph</I>. </P>
<P><B>Predicates</B><BR>Predicates are the mechanism by which we =
incorporate=20
results of various static analyses such as live range and points-to =
analysis.=20
These predicates can be used in the definition of abstraction patterns. =
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-Pre=
d">Table=20
2</A> lists predicates that are currently available in our system. For =
example,=20
code between two program points <SPAN class=3DMath>p<SUB>1</SUB></SPAN> =
and <SPAN=20
class=3DMath>p<SUB>2</SUB></SPAN> can be verified as dead-code (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-O=
bfuscTrash">Section=20
4.1.1</A>) by checking that for every variable <SPAN =
class=3DMath>m</SPAN> that is=20
live in the program range <SPAN class=3DMath>[p<SUB>1</SUB>,=20
p<SUB>2</SUB>]</SPAN>, its value at point <SPAN =
class=3DMath>p<SUB>2</SUB></SPAN>=20
is the same as its value at point <SPAN =
class=3DMath>p<SUB>1</SUB></SPAN>. The=20
change in <SPAN class=3DMath>m</SPAN>'s value between two program points =
<SPAN=20
class=3DMath>p<SUB>1</SUB></SPAN> and <SPAN =
class=3DMath>p<SUB>2</SUB></SPAN> is=20
denoted by <SPAN class=3DMath>Delta(m, p<SUB>1</SUB>, =
p<SUB>2</SUB>)</SPAN> and=20
can be implemented using polyhedral analysis [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#cousothal=
bwachs1978-polyhedral">24</A>].=20
</P>
<DIV align=3Dcenter><A name=3DTable-Pred></A>
<TABLE cellSpacing=3D1 cellPadding=3D0 bgColor=3Dblack border=3D0>
  <TBODY>
  <TR>
    <TD>
      <TABLE cellSpacing=3D0 cellPadding=3D5 bgColor=3Dwhite>
        <TBODY>
        <TR bgColor=3D#cccccc>
          <TD><I>Dominators( B )</I></TD>
          <TD>the set of basic blocks that dominate the basic block=20
        <I>B</I></TD></TR>
        <TR>
          <TD><I>PostDominators( B )</I></TD>
          <TD>the set of basic blocks that are dominated by the basic =
block=20
            <I>B</I></TD></TR>
        <TR bgColor=3D#cccccc>
          <TD><I>Pred( B )</I></TD>
          <TD>the set of basic blocks that immediately precede =
<I>B</I></TD></TR>
        <TR>
          <TD><I>Succ( B )</I></TD>
          <TD>the set of basic blocks that immediately follow =
<I>B</I></TD></TR>
        <TR bgColor=3D#cccccc>
          <TD><I>First( B )</I></TD>
          <TD>the first instruction of the basic block =
<I>B</I></TD></TR>
        <TR>
          <TD><I>Last( B )</I></TD>
          <TD>the last instruction of the basic block <I>B</I></TD></TR>
        <TR bgColor=3D#cccccc>
          <TD><I>Previous( I )</I></TD>
          <TD>
            <TABLE>
              <TBODY>
              <TR>
                <TD>=A1=C8<I><SUB>B' =A1=CA Pred( B<SUB>I</SUB> )</SUB> =
Last( B'=20
)</I></TD>
                <TD>if <I>I =3D First( B<SUB>I</SUB> )</I></TD></TR>
              <TR>
                <TD colSpan=3D2>-or-</TD></TR>
              <TR>
                <TD><I>I'</I></TD>
                <TD>if <I>B<SUB>I</SUB> =3D &lt; =A1=AD, I', I, =A1=AD=20
              &gt;</I></TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD><I>Next( I )</I></TD>
          <TD>
            <TABLE>
              <TBODY>
              <TR>
                <TD>=A1=C8<I><SUB>B' =A1=CA Succ( B<SUB>I</SUB> )</SUB> =
First( B'=20
                )</I></TD>
                <TD>if <I>I =3D Last( B<SUB>I</SUB> )</I></TD></TR>
              <TR>
                <TD colSpan=3D2>-or-</TD></TR>
              <TR>
                <TD><I>I'</I></TD>
                <TD>if <I>B<SUB>I</SUB> =3D &lt; =A1=AD, I, I', =A1=AD=20
              &gt;</I></TD></TR></TBODY></TABLE></TD></TR>
        <TR bgColor=3D#cccccc>
          <TD><I>Kills( p, a )</I></TD>
          <TD><I>true</I> if the instruction at program point <I>p</I> =
kills=20
            variable <I>a</I></TD></TR>
        <TR>
          <TD><I>Uses( p, a )</I></TD>
          <TD><I>true</I> if the instruction at program point <I>p</I> =
uses=20
            variable <I>a</I></TD></TR>
        <TR bgColor=3D#cccccc>
          <TD><I>Alias( p, x, y )</I></TD>
          <TD><I>true</I> if variable <I>x</I> is an alias for <I>y</I> =
at=20
            program point <I>p</I></TD></TR>
        <TR>
          <TD><I>LiveRangeStart( p, a )</I></TD>
          <TD>the set of program points that start the <I>a</I>'s live =
range=20
            that includes <I>p</I></TD></TR>
        <TR bgColor=3D#cccccc>
          <TD><I>LiveRangeEnd( p, a )</I></TD>
          <TD>the set of program points that end the <I>a</I>'s live =
range=20
            that includes <I>p</I></TD></TR>
        <TR>
          <TD><I>Delta( p, m, n )</I></TD>
          <TD>the difference between integer variables <I>m</I> and =
<I>n</I>=20
            at program point <I>p</I></TD></TR>
        <TR bgColor=3D#cccccc>
          <TD><I>Delta( m, p_1, p_2 )</I></TD>
          <TD>the change in <I>m</I>'s value between program points=20
            <I>p<SUB>1</SUB></I> and <I>p<SUB>2</SUB></I></TD></TR>
        <TR>
          <TD><I>PointsTo( p, x, a )</I></TD>
          <TD><I>true</I> if variable <I>x</I> points to location of =
<I>a</I>=20
            at program point=20
<I>p</I></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>Table 2: =

Examples of static analysis predicates. </DIV>
<P>Explanations of the static analysis predicates shown in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-Pre=
d">Table=20
2</A> are standard and can be found in a compiler textbook (such as [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#muchnik19=
97-compiler">3</A>]).=20
</P>
<P><B>Instructions and Data Types</B><BR>The type constructors build =
upon simple=20
integer types (listed below as the <I>ground</I> class of types), and =
allow for=20
array types (with two variations: the pointer-to-start-of-array type and =
the=20
pointer-to-middle-of-array type), structures and unions, pointers, and=20
functions. Two special types <SPAN class=3DMath>=A1=CD(n)</SPAN> and =
<SPAN=20
class=3DMath><SPAN style=3D"FONT-FAMILY: sans-serif">T</SPAN>(n)</SPAN> =
complete the=20
type system lattice. <SPAN class=3DMath>=A1=CD(n)</SPAN> and <SPAN =
class=3DMath><SPAN=20
style=3D"FONT-FAMILY: sans-serif">T</SPAN>(n)</SPAN> represent types =
that are=20
stored on <SPAN class=3DMath>n</SPAN> bits, with <SPAN =
class=3DMath>=A1=CD(n)</SPAN>=20
being the least specific ("any") type and <SPAN class=3DMath><SPAN=20
style=3D"FONT-FAMILY: sans-serif">T</SPAN>(n)</SPAN> being the most =
specific type.=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-Typ=
etable">Table=20
3</A> describes the constructors allowed in our type system. </P>
<DIV align=3Dcenter><A name=3DTable-Typetable></A>
<TABLE cellSpacing=3D1 cellPadding=3D4 bgColor=3Dblack border=3D0>
  <TBODY>
  <TR>
    <TD bgColor=3Dwhite>
      <TABLE cellSpacing=3D2>
        <TBODY>
        <TR>
          <TD style=3D"TEXT-ALIGN: right">=A6=D3</TD>
          <TD>::</TD>
          <TD>ground</TD>
          <TD><I>Ground types</I></TD></TR>
        <TR>
          <TD></TD>
          <TD>|</TD>
          <TD>=A6=D3<TT>[</TT>n<TT>]</TT></TD>
          <TD><I>Pointer to the base of an array of type</I> =A6=D3 =
<I>and of=20
            size</I> n</TD></TR>
        <TR>
          <TD></TD>
          <TD>|</TD>
          <TD>=A6=D3<TT>(</TT>n<TT>]</TT></TD>
          <TD><I>Pointer into the middle of an array of type</I> =A6=D3 =
<I>and of=20
            size</I> n</TD></TR>
        <TR>
          <TD></TD>
          <TD>|</TD>
          <TD>=A6=D3 <TT>ptr</TT></TD>
          <TD><I>Pointer to</I> =A6=D3</TD></TR>
        <TR>
          <TD></TD>
          <TD>|</TD>
          <TD>s <TT>{</TT> =A6=CC<SUB>1</SUB>, =A1=AD, =
=A6=CC<SUB>k</SUB> <TT>}</TT></TD>
          <TD><I>Structure (product of types of </I>=A6=CC=20
        <SUB>i</SUB><I>)</I></TD></TR>
        <TR>
          <TD></TD>
          <TD>|</TD>
          <TD>u<TT>{</TT>=A6=CC<SUB>1</SUB>, =A1=AD, =
=A6=CC<SUB>k</SUB><TT>}</TT></TD>
          <TD><I>Union</I></TD></TR>
        <TR>
          <TD></TD>
          <TD>|</TD>
          <TD>=A6=D3<SUB>1</SUB> =A1=C1 =A1=AD =A1=C1 =A6=D3<SUB>k</SUB> =
=A1=FA =A6=D3</TD>
          <TD><I>Function</I></TD></TR>
        <TR>
          <TD></TD>
          <TD>|</TD>
          <TD><SPAN style=3D"FONT-FAMILY: =
sans">T</SPAN><TT>(</TT>n<TT>)</TT></TD>
          <TD><I>Top type of</I> n <I>bits</I></TD></TR>
        <TR>
          <TD></TD>
          <TD>|</TD>
          <TD>=A1=CD<TT>(</TT>n<TT>)</TT></TD>
          <TD><I>Bottom type of</I> n <I>bits (type "any" of</I> n=20
          <I>bits)</I></TD></TR>
        <TR>
          <TD><BR></TD>
          <TD></TD>
          <TD></TD>
          <TD></TD></TR>
        <TR>
          <TD style=3D"TEXT-ALIGN: right">=A6=CC</TD>
          <TD>::</TD>
          <TD><TT>(</TT><I>l</I>, =A6=D3 <I>i</I><TT>)</TT></TD>
          <TD><I>Member labeled</I> l <I>of type</I> =A6=D3 <I>at =
offset</I>=20
i</TD></TR>
        <TR>
          <TD><BR></TD>
          <TD></TD>
          <TD></TD>
          <TD></TD></TR>
        <TR>
          <TD style=3D"TEXT-ALIGN: right">ground</TD>
          <TD>::</TD>
          <TD=20
            =
colSpan=3D2><TT>int(</TT><I>g</I><TT>:</TT><I>s</I><TT>:</TT><I>v</I><TT>=
)</TT>=20
            |=20
            =
<TT>uint(</TT><I>g</I><TT>:</TT><I>s</I><TT>:</TT><I>v</I><TT>)</TT>=20
            | =A1=AD =
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>Table 3: A =
simple=20
type system. </DIV>
<P>The type <SPAN class=3DMath>=A6=CC(l, =A6=D3, i)</SPAN> represents =
the type of a field=20
member of a structure. The field has a type <SPAN =
class=3DMath>=A6=D3</SPAN>=20
(independent of the types of all other fields in the same structure), an =
offset=20
<SPAN class=3DMath>i</SPAN> that uniquely determines the location of the =
field=20
within the structure, and a label <SPAN class=3DMath>l</SPAN> that =
identifies the=20
field within the structure (in some cases this label might be =
undefined). </P>
<P>Physical subtyping takes into account the layout of values in memory =
[<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#chandrare=
ps1999-physical">4</A>,=20
<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#xu2000-sa=
fety">6</A>].=20
If a type <SPAN class=3DMath>=A6=D3</SPAN> is a <I>physical subtype</I> =
of <SPAN=20
class=3DMath>=A6=D3'</SPAN> (denoted it by <SPAN class=3DMath>=A6=D3 =
=A1=DC =A6=D3'</SPAN>), then the=20
memory layout of a value of type <SPAN class=3DMath>=A6=D3'</SPAN> is a =
prefix of the=20
memory layout of a value of type <SPAN class=3DMath>=A6=D3</SPAN>. We =
will not describe=20
the rules of physical subtyping here as we refer the reader to Xu's =
thesis [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#xu2000-sa=
fety">6</A>]=20
for a detailed account of the typestate system (including subtyping =
rules). </P>
<P>The type <SPAN class=3DMath>int(g:s:v)</SPAN> represents a signed =
integer, and=20
it covers a wide variety of values within storage locations. It is =
parametrized=20
using three parameters as follows: <SPAN class=3DMath>g</SPAN> =
represents the=20
number of highest bits that are ignored, <SPAN class=3DMath>s</SPAN> is =
the number=20
of middle bits that represent the sign, and <SPAN class=3DMath>v</SPAN> =
is the=20
number of lowest bits that represent the value. Thus the type <SPAN=20
class=3DMath>int(g:s:v)</SPAN> uses a total of <SPAN class=3DMath>g + s =
+ v</SPAN>=20
bits. </P>
<DIV align=3Dcenter><IMG=20
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/ground-int.gi=
f">=20
</DIV>
<P>The type <SPAN class=3DMath>uint(g:s:v)</SPAN> represents an unsigned =
integer,=20
and it is just a variation of <SPAN class=3DMath>int(g:s:v)</SPAN>, with =
the=20
middle <SPAN class=3DMath>s</SPAN> sign bits always set to zero. </P>
<P>The notation <SPAN class=3DMath>int(g:s:v)</SPAN> allows for the =
separation of=20
the data and storage location type. In most assembly languages, it is =
possible=20
to use a storage location larger than that required by the data type =
stored in=20
it. For example, if a byte is stored right-aligned in a (32-bit) word, =
its=20
associated type is <SPAN class=3DMath>int(24:1:7)</SPAN>. This means =
that an=20
instruction such as <I>xor on least significant byte within 32-bit =
word</I> will=20
preserve the leftmost 24 bits of the 32-bit word, even though the =
instruction=20
addresses the memory on 32-bit word boundary. </P>
<P>This separation between data and storage location raises the issue of =

alignment information, i.e., most computer systems require or prefer =
data to be=20
at a memory address aligned to the data size. For example, 32-bit =
integers=20
should be aligned on 4-byte boundaries, with the drawback that accessing =
an=20
unaligned 32-bit integer leads to either a slowdown (due to several =
aligned=20
memory accesses) or an exception that requires handling in software. =
Presently,=20
we do not use alignment information as it does not seem to provide a =
significant=20
covert way of changing the program flow. </P>
<DIV align=3Dcenter><A name=3DFigure-CIHTypes></A>
<TABLE>
  <TBODY style=3D"FONT-FAMILY: monospace">
  <TR style=3D"FONT-STYLE: italic; FONT-FAMILY: serif">
    <TD>Code<BR>
      <HR height=3D"1">
    </TD>
    <TD rowSpan=3D14>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD>Type<BR>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>call 0h</TD>
    <TD></TD></TR>
  <TR>
    <TD>pop ebx</TD>
    <TD>ebx : =A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>) =
</TD></TR>
  <TR>
    <TD>lea ecx, [ebx + 42h]</TD>
    <TD>ecx : =A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>), =
</TD></TR>
  <TR>
    <TD></TD>
    <TD>ebx : ptr =A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>) =
</TD></TR>
  <TR>
    <TD>push ecx</TD>
    <TD>ecx : =A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>) =
</TD></TR>
  <TR>
    <TD>push eax</TD>
    <TD>eax : =A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>) =
</TD></TR>
  <TR>
    <TD>push eax</TD>
    <TD>eax : =A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>) =
</TD></TR>
  <TR>
    <TD>sidt [esp - 02h]</TD>
    <TD></TD></TR>
  <TR>
    <TD>pop ebx</TD>
    <TD>eax : =A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>) =
</TD></TR>
  <TR>
    <TD>add ebx, 1Ch</TD>
    <TD>ebx : int(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">31</SPAN) td <> </SPAN></TD>
  <TR>
    <TD>cli</TD>
    <TD></TD></TR>
  <TR>
    <TD>mov ebp, [ebx]</TD>
    <TD>ebp : =A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>), =
</TD></TR>
  <TR>
    <TD><BR>
      <HR height=3D"1">
    </TD>
    <TD>ebx : ptr =A1=CD(<SPAN style=3D"FONT-FAMILY: =
serif">32</SPAN>)<BR>
      <HR height=3D"1">
    </TD></TR></TBODY></TABLE><BR>Figure 9: Inferred types from =
Chernobyl/CIH virus=20
code. </DIV>
<P><A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
HTypes">Figure=20
9</A> shows the types for operands in a section of code from the =
Chernobyl/CIH=20
virus. <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-IA3=
2Types">Table=20
4</A> illustrates the type system for Intel IA-32 architecture. There =
are other=20
IA-32 data types that are not covered in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-IA3=
2Types">Table=20
4</A>, including bit strings, byte strings, 64- and 128-bit packed SIMD =
types,=20
and BCD and packed BCD formats. The IA-32 logical address is a =
combination of a=20
16-bit segment selector and a 32-bit segment offset, thus its type is =
the cross=20
product of a 16-bit unsigned integer and a 32-bit pointer. </P>
<DIV align=3Dcenter><A name=3DTable-IA32Types></A>
<TABLE>
  <TBODY style=3D"FONT-FAMILY: monospace">
  <TR style=3D"FONT-STYLE: italic; FONT-FAMILY: serif">
    <TD>IA-32 Datatype</TD>
    <TD>Type Expression</TD></TR>
  <TR>
    <TD colSpan=3D2>
      <HR>
    </TD></TR>
  <TR>
    <TD>byte unsigned int</TD>
    <TD>uint(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">8</SPAN>)</TD></TR>
  <TR>
    <TD>word unsigned int</TD>
    <TD>uint(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">16</SPAN>)</TD></TR>
  <TR>
    <TD>doubleword unsigned int</TD>
    <TD>uint(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">32</SPAN>)</TD></TR>
  <TR>
    <TD>quadword unsigned int</TD>
    <TD>uint(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">64</SPAN>)</TD></TR>
  <TR>
    <TD>double quadword unsigned int</TD>
    <TD>uint(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">128</SPAN>)</TD></TR>
  <TR>
    <TD colSpan=3D2>
      <HR>
    </TD>
  <TR>
    <TD>byte signed int</TD>
    <TD>int(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">7</SPAN>)</TD></TR>
  <TR>
    <TD>word signed int</TD>
    <TD>int(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">15</SPAN>)</TD></TR>
  <TR>
    <TD>doubleword signed int</TD>
    <TD>int(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">31</SPAN>)</TD></TR>
  <TR>
    <TD>quadword signed int</TD>
    <TD>int(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">63</SPAN>)</TD></TR>
  <TR>
    <TD>double quadword signed int</TD>
    <TD>int(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">127</SPAN>)</TD></TR>
  <TR>
    <TD colSpan=3D2>
      <HR>
    </TD></TR>
  <TR>
    <TD>single precision float</TD>
    <TD>float(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">31</SPAN>)</TD></TR>
  <TR>
    <TD>double precision float</TD>
    <TD>float(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">63</SPAN>)</TD></TR>
  <TR>
    <TD>double extended precision float</TD>
    <TD>float(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">79</SPAN>)</TD></TR>
  <TR>
    <TD colSpan=3D2>
      <HR>
    </TD>
  <TR>
    <TD>near pointer</TD>
    <TD>=A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>)</TD></TR>
  <TR>
    <TD>far pointer (logical address)</TD>
    <TD>uint(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">16</SPAN>) =A1=C1 uint(<SPAN=20
      style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">32</SPAN>) =A1=FA =A1=CD(<SPAN=20
      style=3D"FONT-FAMILY: serif">48</SPAN>)</TD></TR>
  <TR>
    <TD colSpan=3D2>
      <HR>
    </TD>
  <TR>
    <TD>eax, ebx, ecx, edx</TD>
    <TD>=A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>)</TD></TR>
  <TR>
    <TD>esi, edi, ebp, esp</TD>
    <TD>=A1=CD(<SPAN style=3D"FONT-FAMILY: serif">32</SPAN>)</TD></TR>
  <TR>
    <TD>eip</TD>
    <TD>int(<SPAN style=3D"FONT-FAMILY: serif">0</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">1</SPAN>:<SPAN=20
      style=3D"FONT-FAMILY: serif">31</SPAN>)</TD></TR>
  <TR>
    <TD>cs, ds, ss, es, fs, gs</TD>
    <TD>=A1=CD(<SPAN style=3D"FONT-FAMILY: serif">16</SPAN>)</TD></TR>
  <TR>
    <TD>ax, bx, cx, dx</TD>
    <TD>=A1=CD(<SPAN style=3D"FONT-FAMILY: serif">16</SPAN>)</TD></TR>
  <TR>
    <TD>al, bl, cl, dl</TD>
    <TD>=A1=CD(<SPAN style=3D"FONT-FAMILY: serif">8</SPAN>)</TD></TR>
  <TR>
    <TD>ah, bh, ch, dh</TD>
    <TD>=A1=CD(<SPAN style=3D"FONT-FAMILY: serif">8</SPAN>)</TD></TR>
  <TR>
    <TD colSpan=3D2>
      <HR>
    </TD></TR></TBODY></TABLE><BR>Table 4: IA-32 datatypes and their =
corresponding=20
expression in the type system from <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-Typ=
etable">Table=20
3</A>. </DIV><A name=3DSection-Patterns></A>
<H3>6.2 Abstraction Patterns</H3>
<P>An abstraction pattern <SPAN class=3DMath>=A6=A3</SPAN> is a 3-tuple =
<SPAN=20
class=3DMath>(V, O, C)</SPAN>, where <SPAN class=3DMath>V</SPAN> is a =
list of typed=20
variables, <SPAN class=3DMath>O</SPAN> is a sequence of instructions, =
and <SPAN=20
class=3DMath>C</SPAN> is a boolean expression combining one or more =
static=20
analysis predicates over program points. Formally, a pattern <SPAN=20
class=3DMath>=A6=A3=3D(V, O, C)</SPAN> is a 3-tuple defined as follows: =
</P>
<TABLE align=3Dcenter>
  <TBODY class=3DMath>
  <TR>
    <TD>V</TD>
    <TD style=3D"FONT-WEIGHT: normal; COLOR: black">=3D</TD>
    <TD>{x<SUB>1</SUB> : =A6=D3<SUB>1</SUB>, =A1=AD, x<SUB>k</SUB> :=20
=A6=D3<SUB>k</SUB>}</TD></TR>
  <TR>
    <TD>O</TD>
    <TD style=3D"FONT-WEIGHT: normal; COLOR: black">=3D</TD>
    <TD>&lt;I(v<SUB>1</SUB>, =A1=AD, v<SUB>m</SUB>) | I : =
=A6=D3<SUB>1</SUB> =A1=C1 =A1=AD =A1=C1=20
      =A6=D3<SUB>m</SUB> =A1=FA =A6=D3&gt;</TD></TR>
  <TR vAlign=3Dtop>
    <TD>C</TD>
    <TD style=3D"FONT-WEIGHT: normal; COLOR: black">=3D</TD>
    <TD style=3D"FONT-WEIGHT: normal; COLOR: black">boolean expression =
involving=20
      static<BR>analysis predicates and logical operators =
</TD></TR></TBODY></TABLE>
<P>An instruction from the sequence <SPAN class=3DMath>O</SPAN> has a =
number of=20
arguments <SPAN class=3DMath>(v<SUB>i</SUB>)<SUB>i=A1=DD0</SUB></SPAN>, =
where each=20
argument is either a literal value or a free variable <SPAN=20
class=3DMath>x<SUB>j</SUB></SPAN>. We write <SPAN =
class=3DMath>=A6=A3(x<SUB>1</SUB> :=20
=A6=D3<SUB>1</SUB>, =A1=AD, x<SUB>k</SUB> : =A6=D3<SUB>k</SUB>)</SPAN> =
to denote the pattern=20
<SPAN class=3DMath>=A6=A3 =3D (V, O, C)</SPAN> with free variables <SPAN =

class=3DMath>x<SUB>1</SUB>, =A1=AD, x<SUB>k</SUB></SPAN>. An example of =
a pattern is=20
shown below. </P>
<DIV align=3Dcenter><IMG=20
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/pattern-examp=
le.gif">=20
</DIV>
<P>This pattern represents two instructions that pop a register <SPAN=20
class=3DMath>X</SPAN> off the stack and then add a constant value to it=20
(<TT>0x03AF</TT>). Note the use of uninterpreted symbol <SPAN=20
class=3DMath>X</SPAN> in the pattern. Use of the uninterpreted symbols =
in a=20
pattern allows it to match multiple sequences of instructions, e.g., the =

patterns shown above matches any instantiation of the pattern where =
<SPAN=20
class=3DMath>X</SPAN> is assigned a specific register. The type <SPAN=20
class=3DMath>int(0:1:31)</SPAN> of <SPAN class=3DMath>X</SPAN> =
represents an integer=20
with 31 bits of storage and one sign bit. </P>
<P>We define a <I>binding</I> <SPAN class=3DMath>B</SPAN> as a set of =
pairs <SPAN=20
class=3DMath>[variable v, value x]</SPAN>. Formally, a binding <SPAN=20
class=3DMath>B</SPAN> is defined as <SPAN class=3DMath>{ [x,v] | x =
=A1=CA V, x : =A6=D3, v :=20
=A6=D3', =A6=D3 =A1=DC =A6=D3' }</SPAN>. If a pair <SPAN =
class=3DMath>[x, v]</SPAN> occurs in a=20
binding <SPAN class=3DMath>B</SPAN>, then we write <SPAN =
class=3DMath>B(x) =3D=20
v</SPAN>. Two bindings <SPAN class=3DMath>B<SUB>1</SUB></SPAN> and <SPAN =

class=3DMath>B<SUB>2</SUB></SPAN> are said to be <I>compatible</I> if =
they do not=20
bind the same variable to different values: </P>
<DIV class=3DMath align=3Dcenter>Compatible(B<SUB>1</SUB>, =
B<SUB>2</SUB>) =3D &#8704; x =A1=CA V=20
. ( [x, y<SUB>1</SUB>] =A1=CA B<SUB>1</SUB> =A1=C4 [x, y<SUB>2</SUB>] =
=A1=CA B<SUB>2</SUB> ) &#8658;=20
( y<SUB>1</SUB> =3D y<SUB>2</SUB> ) </DIV>
<P>The <I>union of two compatible bindings</I> <SPAN=20
class=3DMath>B<SUB>1</SUB></SPAN> and <SPAN =
class=3DMath>B<SUB>2</SUB></SPAN>=20
includes all the pairs from both bindings. For incompatible bindings, =
the union=20
operation returns an empty binding. </P>
<DIV align=3Dcenter><IMG=20
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/binding-union=
.gif">=20
</DIV>
<P>When matching an abstraction pattern against a sequence of =
instructions, we=20
use unification to bind the free variables of <SPAN =
class=3DMath>=A6=A3</SPAN> to=20
actual values. The function:<BR><BR><SPAN class=3DMath>
<CENTER>Unify( &lt;=A1=AD, op<SUB>i</SUB>( x<SUB>i,1</SUB>, =A1=AD,=20
x<SUB>i,n<SUB>i</SUB></SUB> ), =A1=AD&gt;<SUB>1 =A1=DC i =A1=DC m</SUB>, =
=A6=A3 )=20
</CENTER></SPAN><BR>returns a ``most general'' binding <SPAN =
class=3DMath>B</SPAN>=20
if the instruction sequence <SPAN class=3DMath>&lt;=A1=AD, =
op<SUB>i</SUB>(=20
x<SUB>i,1</SUB>, =A1=AD, x<SUB>i,n<SUB>i</SUB></SUB> ), =A1=AD&gt;<SUB>1 =
=A1=DC i =A1=DC=20
m</SUB></SPAN> can be unified with the sequence of instructions <SPAN=20
class=3DMath>O</SPAN> specified in the pattern <SPAN =
class=3DMath>=A6=A3</SPAN>. If the=20
two instruction sequences cannot be unified, <SPAN =
class=3DMath>Unify</SPAN>=20
returns <I>false</I>. Definitions and algorithms related to unification =
are=20
standard and can be found in [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Fitting">=
50</A>].<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Footnote-=
3"><SUP>3</SUP></A>=20

<P></P><A name=3DSection-Matching></A>
<H3>6.3 Annotator Operation</H3>
<P>The annotator associates a set of matching patterns with each node in =
the=20
CFG. The annotated CFG of a program procedure <SPAN =
class=3DMath>P</SPAN> with=20
respect to a set of patterns <SPAN class=3DMath>=A6=B2</SPAN> is denoted =
by <SPAN=20
class=3DMath>P<SUB>=A6=B2</SUB></SPAN>. Assume that a node <SPAN =
class=3DMath>n</SPAN> in=20
the CFG corresponds to the program point <SPAN class=3DMath>p</SPAN> and =
the=20
instruction at <SPAN class=3DMath>p</SPAN> is <SPAN=20
class=3DMath>I<SUB>p</SUB></SPAN>. The annotator attempts to match the =
(possibly=20
interprocedural) instruction sequence <SPAN class=3DMath>S(n) =3D =
&lt;=A1=AD,=20
Previous<SUP>2</SUP>(I<SUB>p</SUB>), Previous(I<SUB>p</SUB>),=20
I<SUB>p</SUB>&gt;</SPAN> with the patterns in the set <SPAN =
class=3DMath>=A6=B2 =3D=20
{=A6=A3<SUB>1</SUB>, =A1=AD, =A6=A3<SUB>m</SUB>}</SPAN>. The CFG node =
<SPAN class=3DMath>n</SPAN>=20
is then labeled with the list of pairs of patterns and bindings that =
satisfy the=20
following condition: </P>
<DIV class=3DMath align=3Dcenter>Annotation(n) =3D { [=A6=A3, B] : =
=A6=A3 =A1=CA {=A6=A3<SUB>1</SUB>, =A1=AD,=20
=A6=A3<SUB>m</SUB>} =A1=C4 B =3D Unify( S(n), =A6=A3 ) } </DIV>
<P>If <SPAN class=3DMath>Unify( S(n), =A6=A3 )</SPAN> returns =
<I>false</I> (because=20
unification is not possible), then the node <SPAN class=3DMath>n</SPAN> =
is not=20
annotated with <SPAN class=3DMath>[=A6=A3, B]</SPAN>. Note that a =
pattern <SPAN=20
class=3DMath>=A6=A3</SPAN> might appear several times (albeit with =
different bindings)=20
in <SPAN class=3DMath>Annotation(n)</SPAN>. However, the pair <SPAN =
class=3DMath>[=A6=A3,=20
B]</SPAN> is unique in the annotation set of a given node. </P><A=20
name=3DSection-MChecker></A>
<H2>7 Detector</H2>
<P>The detector takes as its inputs an annotated CFG for an executable =
program=20
procedure and a malicious code automaton. If the malicious pattern =
described by=20
the malicious code automaton is also found in the annotated CFG, the =
detector=20
returns the sequence of instructions exhibiting the pattern. The =
detector=20
returns <I>no</I> if the malicious pattern cannot be found in the =
annotated CFG.=20
</P><A name=3DSection-VirSpec></A>
<H3>7.1 The Malicious-Code Automaton</H3>
<P>Intuitively, the malicious code automaton is a generalization of the =
vanilla=20
virus, i.e., the malicious code automaton also represents obfuscated =
strains of=20
the virus. Formally, a <I>malicious code automaton</I> (or <I>MCA</I>) =
<SPAN=20
class=3DMath>A</SPAN> is a 6-tuple <SPAN class=3DMath>(V, =A6=B2, S, =
=A6=C4, S<SUB>0</SUB>,=20
F)</SPAN>, where </P>
<UL>
  <LI><SPAN class=3DMath>V =3D { v<SUB>1</SUB> : =A6=D3<SUB>1</SUB> , =
=A1=AD, v<SUB>k</SUB> :=20
  =A6=D3<SUB>k</SUB> }</SPAN> is a <I>set of typed variables</I>,=20
  <LI><SPAN class=3DMath>=A6=B2 =3D {=A6=A3<SUB>1</SUB>, =A1=AD, =
=A6=A3<SUB>n</SUB>}</SPAN> is a=20
  <I>finite alphabet</I> of patterns parametrized by variables from =
<SPAN=20
  class=3DMath>V</SPAN>, for <SPAN class=3DMath>1 =A1=DC i =A1=DC =
n</SPAN>, <SPAN=20
  class=3DMath>P<SUB>i</SUB> =3D (V<SUB>i</SUB>, O<SUB>i</SUB>,=20
  C<SUB>i</SUB>)</SPAN> where <SPAN class=3DMath>V<SUB>i</SUB> &#8838; =
V</SPAN>,=20
  <LI><SPAN class=3DMath>S</SPAN> is a finite set of <I>states</I>,=20
  <LI><SPAN class=3DMath>=A6=C4 : S =A1=C1 =A6=B2 =A1=FA =
2<SUP>S</SUP></SPAN> is a <I>transition=20
  function</I>,=20
  <LI><SPAN class=3DMath>S<SUB>0</SUB> &#8838; S</SPAN> is a non-empty =
set of <I>initial=20
  states</I>,=20
  <LI><SPAN class=3DMath>F &#8838; S</SPAN> is a non-empty set of =
<I>final states</I>.=20
  </LI></UL>
<P>An MCA is a generalization of an ordinary finite-state automaton in =
which the=20
alphabets are a finite set of patterns defined over a set of typed =
variables.=20
Given a binding <SPAN class=3DMath>B</SPAN> for the variables <SPAN=20
class=3DMath>V=3D{v<SUB>1</SUB>, =A1=AD, v<SUB>k</SUB> }</SPAN>, the =
finite-state=20
automaton obtained by substituting <SPAN =
class=3DMath>B(v<SUB>i</SUB>)</SPAN> for=20
<SPAN class=3DMath>v<SUB>i</SUB></SPAN> for all <SPAN class=3DMath>1 =
=A1=DC i =A1=DC k</SPAN>=20
in <SPAN class=3DMath>A</SPAN> is denoted by <SPAN =
class=3DMath>B(A)</SPAN>. Note=20
that <SPAN class=3DMath>B(A)</SPAN> is a "vanilla" finite-state =
automaton. We=20
explain this using an example. Consider the MCA <SPAN =
class=3DMath>A</SPAN> shown=20
in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14Small">Figure=20
10</A> with <SPAN class=3DMath>V=3D{A, B, C, D}</SPAN>. The automata =
obtained from=20
<SPAN class=3DMath>A</SPAN> corresponding to the bindings <SPAN=20
class=3DMath>B<SUB>1</SUB></SPAN> and <SPAN =
class=3DMath>B<SUB>2</SUB></SPAN> are=20
shown in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14Small">Figure=20
10</A>. The uninterpreted variables in the MCA were introduced to handle =

obfuscation transformations based on register reassignment. The =
malicious code=20
automaton corresponding to the code fragment shown in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14a">Figure=20
6</A> (from the Chernobyl virus) is depicted in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14Auto">Figure=20
11</A>. </P>
<DIV align=3Dcenter><A name=3DFigure-CIH14Small></A>
<TABLE border=3D0>
  <TBODY style=3D"FONT-FAMILY: monospace">
  <TR>
    <TD vAlign=3Dtop rowSpan=3D21>
      <TABLE cellSpacing=3D1 cellPadding=3D5 bgColor=3Dblack border=3D0>
        <TBODY bgColor=3Dwhite>
        <TR>
          <TD><IMG=20
            =
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/sample-vir-au=
to.png"></TD></TR></TBODY></TABLE></TD>
    <TD rowSpan=3D21>&nbsp;&nbsp;</TD>
    <TD colSpan=3D2>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>mov</TD>
    <TD>esi, ecx</TD></TR>
  <TR>
    <TD>mov</TD>
    <TD>eax, 0d601h</TD></TR>
  <TR>
    <TD>pop</TD>
    <TD>edx</TD></TR>
  <TR>
    <TD>pop</TD>
    <TD>ecx</TD></TR>
  <TR>
    <TD colSpan=3D3>
      <HR height=3D"1">
    </TD></TR>
  <TR style=3D"FONT-FAMILY: serif">
    <TD>B<SUB>1</SUB> =3D { </TD>
    <TD>[A, <TT>esi</TT>],</TD></TR>
  <TR style=3D"FONT-FAMILY: serif">
    <TD></TD>
    <TD>[B, <TT>ecx</TT>],</TD></TR>
  <TR style=3D"FONT-FAMILY: serif">
    <TD></TD>
    <TD>[C, <TT>eax</TT>],</TD></TR>
  <TR style=3D"FONT-FAMILY: serif">
    <TD></TD>
    <TD>[D, <TT>edx</TT>] }</TD></TR>
  <TR>
    <TD colSpan=3D2><BR></TD></TR>
  <TR>
    <TD colSpan=3D2>
      <HR height=3D"1">
    </TD></TR>
  <TR>
    <TD>mov</TD>
    <TD>esi, eax</TD></TR>
  <TR>
    <TD>mov</TD>
    <TD>ebx, 0d601h</TD></TR>
  <TR>
    <TD>pop</TD>
    <TD>ecx</TD></TR>
  <TR>
    <TD>pop</TD>
    <TD>eax</TD></TR>
  <TR>
    <TD colSpan=3D2>
      <HR height=3D"1">
    </TD></TR>
  <TR style=3D"FONT-FAMILY: serif">
    <TD>B<SUB>2</SUB> =3D { </TD>
    <TD>[A, <TT>esi</TT>],</TD></TR>
  <TR style=3D"FONT-FAMILY: serif">
    <TD></TD>
    <TD>[B, <TT>eax</TT>],</TD></TR>
  <TR style=3D"FONT-FAMILY: serif">
    <TD></TD>
    <TD>[C, <TT>ebx</TT>],</TD></TR>
  <TR style=3D"FONT-FAMILY: serif">
    <TD></TD>
    <TD>[D, <TT>ecx</TT>] }</TD></TR></TBODY></TABLE><BR>Figure 10: =
Malicious code=20
automaton for a Chernobyl virus code fragment, and instantiations with =
different=20
register assignments, shown with their respective bindings. </DIV><BR>
<DIV align=3Dcenter><A name=3DFigure-CIH14Auto></A>
<CENTER><IMG=20
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/cih-vir-auto.=
png">=20
</CENTER><BR>Figure 11: Malicious code automaton corresponding to code =
fragment=20
from <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Figure-CI=
H14a">Figure=20
6</A>. </DIV><A name=3DSection-MCOp></A>
<H3>7.2 Detector Operation</H3>
<P>The detector takes as its inputs the annotated CFG <SPAN=20
class=3DMath>P<SUB>=A6=B2</SUB></SPAN> of a program procedure <SPAN =
class=3DMath>P</SPAN>=20
and a malicious code automaton MCA <SPAN class=3DMath>A=3D(V, =A6=B2, =
S,=A6=C4, S<SUB>0</SUB>,=20
F)</SPAN>. Note that the set of patterns <SPAN =
class=3DMath>=A6=B2</SPAN> is used both=20
to construct the annotated CFG and as the alphabet of the malicious code =

automaton. Intuitively, the detector determines whether there exists a =
malicious=20
pattern that occurs in <SPAN class=3DMath>A</SPAN> and <SPAN=20
class=3DMath>P<SUB>=A6=B2</SUB></SPAN>. We formalize this intuitive =
notion. The=20
annotated CFG <SPAN class=3DMath>P<SUB>=A6=B2</SUB></SPAN> is a =
finite-state automaton=20
where nodes are states, edges represent transitions, the node =
corresponding to=20
the entry point is the initial state, and every node is a final state. =
Our=20
detector determines whether the following language is empty:<BR>
<CENTER><IMG=20
src=3D"http://www.cs.wisc.edu/wisa/papers/security03/images/language-chec=
k.gif"=20
align=3Dcenter></CENTER><BR>In the expression given above, <SPAN=20
class=3DMath>L(P<SUB>=A6=B2</SUB>)</SPAN> is the language corresponding =
to the=20
annotated CFG and <SPAN class=3DMath>B<SUB><I>All</I></SUB></SPAN> is =
the set of=20
all bindings to the variables in the set <SPAN class=3DMath>V</SPAN>. In =
other=20
words, the detector determines whether there exists a binding <SPAN=20
class=3DMath>B</SPAN> such that the intersection of the languages <SPAN=20
class=3DMath>P<SUB>=A6=B2</SUB></SPAN> and <SPAN =
class=3DMath>B(A)</SPAN> is non-empty.=20
<P></P>
<P>Our detection algorithm is very similar to the classic algorithm for=20
determining whether the intersection of two regular languages is =
non-empty [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#HopcroftM=
otwaniUllman">51</A>].=20
However, due to the presence of variables, we must perform unification =
during=20
the algorithm. Our algorithm (<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Algorithm=
-ModelChecking">Figure=20
12</A>) combines the classic algorithm for computing the intersection of =
two=20
regular languages with unification. We have implemented the algorithm as =
a=20
data-flow analysis. </P>
<UL>
  <LI>For each node <SPAN class=3DMath>n</SPAN> of the annotated CFG =
<SPAN=20
  class=3DMATH>P<SUB>A</SUB></SPAN> we associate pre and post lists =
<SPAN=20
  class=3DMath>L<SUB>n</SUB><SUP>pre</SUP></SPAN> and <SPAN=20
  class=3DMath>L<SUB>n</SUB><SUP>post</SUP></SPAN> respectively. Each =
element of a=20
  list is a pair <SPAN class=3DMath>[s,B]</SPAN>, where <SPAN =
class=3DMath>s</SPAN>=20
  is the state of the MCA <SPAN class=3DMath>A</SPAN> and <SPAN=20
  class=3DMath>B</SPAN> is the binding of variables. Intuitively, if =
<SPAN=20
  class=3DMath>[s,B] =A1=CA L<SUB>n</SUB><SUP>pre</SUP></SPAN>, then it =
is possible for=20
  <SPAN class=3DMath>A</SPAN> with the binding <SPAN =
class=3DMath>B</SPAN> (i.e. for=20
  <SPAN class=3DMath>B(A)</SPAN>) to be in state <SPAN =
class=3DMath>s</SPAN> just=20
  before node <SPAN class=3DMath>n</SPAN>.=20
  <LI><B>Initial condition:</B> Initially, both lists associated with =
all nodes=20
  except the start node <SPAN class=3DMath>n<SUB>0</SUB></SPAN> are =
empty. The pre=20
  list associated with the start node is the list of all pairs <SPAN=20
  class=3DMath>[s, &#8709;]</SPAN>, where <SPAN class=3DMath>s</SPAN> is =
an initial state=20
  of the MCA <SPAN class=3DMath>A</SPAN>, and the post list associated =
with the=20
  start node is empty.=20
  <LI><B>The do-until loop:</B> The do-until loop updates the pre and =
post lists=20
  of all the nodes. At the end of the loop, the worklist <SPAN=20
  class=3DMath><I>WS</I></SPAN> contains the set of nodes whose pre or =
post=20
  information has changed. The loop executes until the pre and post =
information=20
  associated with the nodes does not change, and a fixed point is =
reached. The=20
  join operation that computes <SPAN=20
  class=3DMath>L<SUB>i</SUB><SUP>pre</SUP></SPAN> takes the list of =
state-binding=20
  pairs from all of the <SPAN =
class=3DMath>L<SUB>j</SUB><SUP>post</SUP></SPAN>=20
  sets for program points preceding <SPAN class=3DMath>i</SPAN> and =
copies them to=20
  <SPAN class=3DMath>L<SUB>i</SUB><SUP>pre</SUP></SPAN> only if there =
are no=20
  repeated states. In case of repeated states, the conflicting pairs are =
merged=20
  into a single pair only if the bindings are compatible. If the =
bindings are=20
  incompatible, both pairs are thrown out.=20
  <LI><B>Diagnostic feedback:</B> Suppose our algorithm returns a =
non-empty set,=20
  meaning a malicious pattern is common to the annotated CFG <SPAN=20
  class=3DMath>P<SUB>=A6=B2</SUB></SPAN> and MCA <SPAN =
class=3DMath>A</SPAN>. In this=20
  case, we return the sequence of instructions in the executable =
corresponding=20
  to the malicious pattern. This is achieved by keeping an additional =
structure=20
  with the algorithm. Every time the post list for a node <SPAN=20
  class=3DMath>n</SPAN> is updated by taking a transition in <SPAN=20
  class=3DMath>A</SPAN> (see the statement <SPAN class=3DMath>14</SPAN> =
in <A=20
  =
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Algorithm=
-ModelChecking">Figure=20
  12</A>), we store the predecessor of the added state, i.e., if <SPAN=20
  class=3DMath>[=A6=C4(s, =A6=A3), B<SUB>s</SUB> =A1=C8 B]</SPAN> is =
added to <SPAN=20
  class=3DMath>L<SUB>n</SUB><SUP>post</SUP></SPAN>, then we add an edge =
from <SPAN=20
  class=3DMath>s</SPAN> to <SPAN class=3DMath>=A6=C4(s, =A6=A3)</SPAN> =
(along with the binding=20
  <SPAN class=3DMath>B<SUB>s</SUB> =A1=C8 B</SPAN>) in the associated =
structure.=20
  Suppose we detect that <SPAN =
class=3DMath>L<SUB>n</SUB><SUP>post</SUP></SPAN>=20
  contains a state <SPAN class=3DMath>[s, B<SUB>s</SUB>]</SPAN>, where =
<SPAN=20
  class=3DMath>s</SPAN> is a final state of the MCA <SPAN =
class=3DMath>A</SPAN>.=20
  Then we traceback the associated structure from <SPAN =
class=3DMath>s</SPAN>=20
  until we reach an initial state of <SPAN class=3DMath>A</SPAN> =
(storing the=20
  instructions occurring along the way). </LI></UL>
<DIV align=3Dcenter><A name=3DAlgorithm-ModelChecking></A>
<TABLE cellSpacing=3D1 cellPadding=3D10 bgColor=3Dblack border=3D0>
  <TBODY bgColor=3Dwhite>
  <TR>
    <TD><B>Input:</B> A list of patterns <SPAN class=3DMath>=A6=B2 =3D =
{P<SUB>1</SUB>,=20
      =A1=AD, P<SUB>r</SUB>}</SPAN>, a malicious code automaton <SPAN =
class=3DMath>A =3D=20
      (V, =A6=B2, S, =A6=C4, S<SUB>0</SUB>, F)</SPAN>, and an annotated =
CFG <SPAN=20
      class=3DMath>P<SUB>=A6=B2</SUB> =3D &lt;N, E&gt;</SPAN>. =
<BR><B>Output:</B>=20
      <I>true</I> if the program is likely infected, <I>false</I> =
otherwise.=20
      <BR><BR><SPAN=20
      style=3D"FONT-VARIANT: =
small-caps">MaliciousCodeChecking</SPAN>(<SPAN=20
      class=3DMath>=A6=B2</SPAN>, <SPAN class=3DMath>A</SPAN>, <SPAN=20
      class=3DMath>P<SUB>=A6=B2</SUB></SPAN>)=20
      <TABLE>
        <TBODY>
        <TR>
          <TD>(1)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD><SPAN class=3DMath>L<SUP>pre</SUP><SUB>n<SUB>0</SUB></SUB> =
=A1=FB { [s,=20
            &#8709;] | s =A1=CA S<SUB>0</SUB> }</SPAN>, where <SPAN=20
            class=3DMath>n<SUB>0</SUB> =A1=CA N</SPAN> is the entry node =
of <SPAN=20
            class=3DMath>P<SUB>=A6=B2</SUB></SPAN> </TD>
          <TD rowSpan=3D7></TD></TR>
        <TR>
          <TD>(2)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD><B>foreach</B> <SPAN class=3DMath>n =A1=CA N \ { =
n<SUB>0</SUB> }</SPAN>=20
            <B>do</B> <SPAN class=3DMath>L<SUB>n</SUB><SUP>pre</SUP> =
=A1=FB &#8709;</SPAN>=20
        </TD></TR>
        <TR>
          <TD>(3)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD><B>foreach</B> <SPAN class=3DMath>n =A1=CA N</SPAN> =
<B>do</B> <SPAN=20
            class=3DMath>L<SUB>n</SUB><SUP>post</SUP> =A1=FB =
&#8709;</SPAN> </TD></TR>
        <TR>
          <TD>(4)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD><SPAN class=3DMath><I>WS</I> =A1=FB &#8709;</SPAN> =
</TD></TR>
        <TR>
          <TD>(5)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD><B>do</B> </TD></TR>
        <TR>
          <TD>(6)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN=20
            class=3DMath><I>WS</I><SUB>old</SUB> =A1=FB <I>WS</I></SPAN> =
</TD></TR>
        <TR>
          <TD>(7)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN =
class=3DMath><I>WS</I>=20
            =A1=FB &#8709;</SPAN> </TD></TR>
        <TR>
          <TD>(8)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>foreach</B> <SPAN=20
            class=3DMath>n =A1=CA N</SPAN> </TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;// update pre =
information</TD></TR>
        <TR>
          <TD>(9)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>if</B> <SPAN=20
            class=3DMath>L<SUB>n</SUB><SUP>pre</SUP> =A1=D9 =A1=C8<SUB>m =
=A1=CA Previous(n)</SUB>=20
            L<SUB>m</SUB><SUP>post</SUP></SPAN> </TD>
          <TD rowSpan=3D3></TD></TR>
        <TR>
          <TD>(10)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN=20
            class=3DMath>L<SUB>n</SUB><SUP>pre</SUP> =A1=FB =A1=C8<SUB>m =
=A1=CA Previous(n)</SUB>=20
            L<SUB>m</SUB><SUP>post</SUP></SPAN> </TD></TR>
        <TR>
          <TD>(11)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN =
class=3DMath><I>WS</I> =A1=FB=20
            <I>WS</I> =A1=C8 { n }</SPAN> </TD></TR>
        <TR>
          <TD>(12)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>foreach</B> <SPAN=20
            class=3DMath>n =A1=CA N</SPAN> </TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;// update post =
information</TD></TR>
        <TR>
          <TD>(13)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN=20
            class=3DMath>NewL<SUB>n</SUB><SUP>post</SUP> =A1=FB =
&#8709;</SPAN> </TD>
          <TD rowSpan=3D2></TD></TR>
        <TR>
          <TD>(14)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>foreach</B> <SPAN=20
            class=3DMath>[s, B<SUB>s</SUB>] =A1=CA =
L<SUB>n</SUB><SUP>pre</SUP></SPAN>=20
          </TD></TR>
        <TR>
          <TD>(15)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>foreach</B> <SPAN=20
            class=3DMath>[=A6=A3, B] =A1=CA Annotation(n) =A1=C4 =
Compatible(B<SUB>s</SUB>,=20
            B)</SPAN> </TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;// follow a transition</TD></TR>
        <TR>
          <TD>(16)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>add</B> <SPAN =
class=3DMath>[=A6=C4(=20
            s, =A6=A3 ), B<SUB>s</SUB> =A1=C8 B]</SPAN> <B>to</B> <SPAN=20
            class=3DMath>NewL<SUB>n</SUB><SUP>post</SUP></SPAN> </TD>
          <TD rowSpan=3D6></TD></TR>
        <TR>
          <TD>(17)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>if</B> <SPAN=20
            class=3DMath>L<SUB>n</SUB><SUP>post</SUP> =A1=D9=20
            NewL<SUB>n</SUB><SUP>post</SUP></SPAN> </TD></TR>
        <TR>
          <TD>(18)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN=20
            class=3DMath>L<SUB>n</SUB><SUP>post</SUP> =A1=FB=20
            NewL<SUB>n</SUB><SUP>post</SUP></SPAN> </TD></TR>
        <TR>
          <TD>(19)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN =
class=3DMath><I>WS</I> =A1=FB=20
            <I>WS</I> =A1=C8 { n }</SPAN> </TD></TR>
        <TR>
          <TD>(20)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD><B>until</B> <SPAN class=3DMath><I>WS</I> =3D =
&#8709;</SPAN> </TD></TR>
        <TR>
          <TD>(21)&nbsp;&nbsp;&nbsp;&nbsp;</TD>
          <TD><B>return</B> <SPAN class=3DMath>&#8707; n =A1=CA N . =
&#8707; [s, B<SUB>s</SUB>] =A1=CA=20
            L<SUB>n</SUB><SUP>post</SUP> . s =A1=CA F</SPAN>=20
  </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>Figure 12: =
Algorithm to=20
check a program model against a malicious code specification. </DIV><A=20
name=3DSection-Experiments></A>
<H2>8 Experimental Data</H2>
<P>The three major goals of our experiments were to measure the =
execution time=20
of our tool and find the false positive and negative rates. We =
constructed ten=20
obfuscated versions of the four viruses. Let <SPAN class=3DMath>V<SUB>i, =

k</SUB></SPAN> (for <SPAN class=3DMath>1 =A1=DC i =A1=DC 4</SPAN> and =
<SPAN class=3DMath>1 =A1=DC k=20
=A1=DC 10</SPAN>) denote the <SPAN class=3DMath>k</SPAN>-th version of =
the <SPAN=20
class=3DMath>i</SPAN>-th virus. The obfuscated versions were created by =
varying=20
the obfuscation parameters, e.g., number of nops and inserted jumps. For =
the=20
<SPAN class=3DMath>i</SPAN>-th virus, <SPAN class=3DMath>V<SUB>i, =
1</SUB></SPAN>=20
denoted the "vanilla" or the unobfuscated version of the virus. Let =
<SPAN=20
class=3DMATH>M<SUB>1</SUB>, M<SUB>2</SUB>, M<SUB>3</SUB></SPAN> and =
<SPAN=20
class=3DMATH>M<SUB>4</SUB></SPAN> be the malicious code automata =
corresponding to=20
the four viruses. </P>
<H3>8.1 Testing Environment</H3>
<P>The testing environment consisted of a Microsoft Windows 2000 =
machine. The=20
hardware configuration included an AMD Athlon 1 GHz processor and 1 GB =
of RAM.=20
We used CodeSurfer version 1.5 patchlevel 0 and IDA Pro version =
4.1.7.600. </P>
<H3>8.2 Testing on Malicious Code</H3>
<P>We will describe the testing with respect to the first virus. The =
testing for=20
the other viruses is analogous. First, we ran SAFE on the 10 versions of =
the=20
first virus <SPAN class=3DMath>V<SUB>1,1</SUB>, =A1=AD, =
V<SUB>1,10</SUB></SPAN> with=20
malicious code automaton <SPAN class=3DMATH>M<SUB>1</SUB></SPAN>. This =
experiment=20
gave us the false negative rate, i.e., the pattern corresponding to =
<SPAN=20
class=3DMATH>M<SUB>1</SUB></SPAN> should be detected in all versions of =
the virus.=20
</P>
<DIV align=3Dcenter><A name=3DTable-VirScanTimes></A>
<TABLE cellSpacing=3D1 cellPadding=3D5 bgColor=3D#cccccc border=3D0>
  <TBODY style=3D"BACKGROUND-COLOR: white">
  <TR>
    <TD rowSpan=3D2></TD>
    <TD style=3D"TEXT-ALIGN: center" colSpan=3D2 center; =
text-align:>Annotator</TD>
    <TD style=3D"TEXT-ALIGN: center" colSpan=3D2 center;=20
text-align:>Detector</TD></TR>
  <TR>
    <TD style=3D"TEXT-ALIGN: center">avg.</TD>
    <TD style=3D"TEXT-ALIGN: center" center; text-align:>(std. =
dev.)</TD>
    <TD style=3D"TEXT-ALIGN: center" center; text-align:>avg.</TD>
    <TD style=3D"TEXT-ALIGN: center" center; text-align:>(std. =
dev.)</TD></TR>
  <TR>
    <TD>Chernobyl</TD>
    <TD>1.444 s</TD>
    <TD>(0.497 s)</TD>
    <TD>0.535 s</TD>
    <TD>(0.043 s)</TD></TR>
  <TR>
    <TD>z0mbie-6.b</TD>
    <TD>4.600 s</TD>
    <TD>(2.059 s)</TD>
    <TD>1.149 s</TD>
    <TD>(0.041 s)</TD></TR>
  <TR>
    <TD>f0sf0r0</TD>
    <TD>4.900 s</TD>
    <TD>(2.844 s)</TD>
    <TD>0.923 s</TD>
    <TD>(0.192 s)</TD></TR>
  <TR>
    <TD>Hare</TD>
    <TD>9.142 s</TD>
    <TD>(1.551 s)</TD>
    <TD>1.604 s</TD>
    <TD>(0.104 s)</TD></TR></TBODY></TABLE><BR>Table 5: SAFE performance =
when=20
checking obfuscated viruses for false negatives. </DIV>
<P>Next, we executed SAFE on the versions of the viruses <SPAN=20
class=3DMath>V<SUB>i,k</SUB></SPAN> with the malicious code automaton =
<SPAN=20
class=3DMath>M<SUB>j</SUB></SPAN> (where <SPAN class=3DMath>i =A1=D9 =
j</SPAN>). This=20
helped us find the false positive rate of SAFE. </P>
<P>In our experiments, we found that SAFE's false positive and negative =
rate=20
were <SPAN class=3DMath>0</SPAN>. We also measured the execution times =
for each=20
run. Since IDA Pro and CodeSurfer were not implemented by us, we did not =
measure=20
the execution times for these components. We report the average and =
standard=20
deviation of the execution times in Tables <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-Vir=
ScanTimes">5</A>=20
and <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-Vir=
ScanTimesFP">6</A>.=20
</P>
<DIV align=3Dcenter><A name=3DTable-VirScanTimesFP></A>
<TABLE cellSpacing=3D1 cellPadding=3D5 bgColor=3D#cccccc border=3D0>
  <TBODY style=3D"BACKGROUND-COLOR: white">
  <TR>
    <TD rowSpan=3D2></TD>
    <TD style=3D"TEXT-ALIGN: center" colSpan=3D2 center; =
text-align:>Annotator</TD>
    <TD style=3D"TEXT-ALIGN: center" colSpan=3D2 center;=20
text-align:>Detector</TD></TR>
  <TR>
    <TD style=3D"TEXT-ALIGN: center">avg.</TD>
    <TD style=3D"TEXT-ALIGN: center" center; text-align:>(std. =
dev.)</TD>
    <TD style=3D"TEXT-ALIGN: center" center; text-align:>avg.</TD>
    <TD style=3D"TEXT-ALIGN: center" center; text-align:>(std. =
dev.)</TD></TR>
  <TR>
    <TD>z0mbie-6.b</TD>
    <TD>3.400 s</TD>
    <TD>(1.428 s)</TD>
    <TD>1.400 s</TD>
    <TD>(0.420 s)</TD></TR>
  <TR>
    <TD>f0sf0r0</TD>
    <TD>4.900 s</TD>
    <TD>(1.136 s)</TD>
    <TD>0.840 s</TD>
    <TD>(0.082 s)</TD></TR>
  <TR>
    <TD>Hare</TD>
    <TD>1.000 s</TD>
    <TD>(0.000 s)</TD>
    <TD>0.220 s</TD>
    <TD>(0.019 s)</TD></TR></TBODY></TABLE><BR>Table 6: SAFE performance =
when=20
checking obfuscated viruses for false positives against the =
Chernobyl/CIH virus.=20
</DIV>
<H3>8.3 Testing on Benign Code</H3>
<P>We considered a suite of benign programs (see <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Section-D=
escriptionExecutables">Section=20
8.3.1</A> for descriptions). For each benign program, we executed SAFE =
on the=20
malicious code automaton corresponding to the four viruses. Our detector =

reported "negative" in each case, i.e., the false positive rate is <SPAN =

class=3DMath>0</SPAN>. The average and variance of the execution times =
are=20
reported in <A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Table-Pro=
gScanTimes">Table=20
7</A>. As can be seen from the results, for certain cases the execution =
times=20
are unacceptably large. We will address performance enhancements to SAFE =
in the=20
future. </P><A name=3DSection-DescriptionExecutables></A>
<H4>8.3.1 Descriptions of the Benign Executables</H4>
<UL>
  <LI>tiffdither.exe is a command line utility in the \textit{cygwin} =
toolkit=20
  version 1.3.70, a UNIX environment for Windows developed by Red Hat.=20
  <LI>winmine.exe is the Microsoft Windows 2000 Minesweeper game, =
version=20
  5.0.2135.1.=20
  <LI>spyxx.exe is a Microsoft Visual Studio 6.0 Spy++ utility, that =
allows the=20
  querying of properties and monitoring of messages of Windows =
applications. The=20
  executable we tested was marked as version 6.0.8168.0.=20
  <LI>QuickTimePlayer.exe is part of the Apple QuickTime media player, =
version=20
  5.0.2.15. </LI></UL>
<DIV align=3Dcenter><A name=3DTable-ProgScanTimes></A>
<TABLE cellSpacing=3D1 cellPadding=3D5 bgColor=3D#cccccc border=3D0>
  <TBODY style=3D"BACKGROUND-COLOR: white">
  <TR>
    <TD rowSpan=3D2></TD>
    <TD style=3D"TEXT-ALIGN: center" rowSpan=3D2>Executable<BR>size</TD>
    <TD style=3D"TEXT-ALIGN: center" =
rowSpan=3D2><TT>.text</TT><BR>size</TD>
    <TD style=3D"TEXT-ALIGN: center" rowSpan=3D2>Procedure<BR>count</TD>
    <TD style=3D"TEXT-ALIGN: center" colSpan=3D2>Annotator</TD>
    <TD style=3D"TEXT-ALIGN: center" colSpan=3D2>Detector</TD></TR>
  <TR>
    <TD style=3D"TEXT-ALIGN: center">avg.</TD>
    <TD style=3D"TEXT-ALIGN: center">(std. dev.)</TD>
    <TD style=3D"TEXT-ALIGN: center">avg.</TD>
    <TD style=3D"TEXT-ALIGN: center">(std. dev.)</TD></TR>
  <TR>
    <TD>tiffdither.exe</TD>
    <TD style=3D"TEXT-ALIGN: right">9,216 B</TD>
    <TD style=3D"TEXT-ALIGN: right">6,656 B</TD>
    <TD style=3D"TEXT-ALIGN: right">29</TD>
    <TD style=3D"TEXT-ALIGN: right">6.333 s</TD>
    <TD style=3D"TEXT-ALIGN: right">(0.471 s)</TD>
    <TD style=3D"TEXT-ALIGN: right">1.030 s</TD>
    <TD style=3D"TEXT-ALIGN: right">(0.043 s)</TD></TR>
  <TR>
    <TD>winmine.exe</TD>
    <TD style=3D"TEXT-ALIGN: right">96,528 B</TD>
    <TD style=3D"TEXT-ALIGN: right">12,120 B</TD>
    <TD style=3D"TEXT-ALIGN: right">85</TD>
    <TD style=3D"TEXT-ALIGN: right">15.667 s</TD>
    <TD style=3D"TEXT-ALIGN: right">(1.700 s)</TD>
    <TD style=3D"TEXT-ALIGN: right">2.283 s</TD>
    <TD style=3D"TEXT-ALIGN: right">(0.131 s)</TD></TR>
  <TR>
    <TD>spyxx.exe</TD>
    <TD style=3D"TEXT-ALIGN: right">499,768 B</TD>
    <TD style=3D"TEXT-ALIGN: right">307,200 B</TD>
    <TD style=3D"TEXT-ALIGN: right">1,765</TD>
    <TD style=3D"TEXT-ALIGN: right">193.667 s</TD>
    <TD style=3D"TEXT-ALIGN: right">(11.557 s)</TD>
    <TD style=3D"TEXT-ALIGN: right">30.917 s</TD>
    <TD style=3D"TEXT-ALIGN: right">(6.625 s)</TD></TR>
  <TR>
    <TD>QuickTimePlayer.exe</TD>
    <TD style=3D"TEXT-ALIGN: right">1,043,968 B</TD>
    <TD style=3D"TEXT-ALIGN: right">499,712 B</TD>
    <TD style=3D"TEXT-ALIGN: right">4,767</TD>
    <TD style=3D"TEXT-ALIGN: right">799.333 s</TD>
    <TD style=3D"TEXT-ALIGN: right">(5.437 s)</TD>
    <TD style=3D"TEXT-ALIGN: right">160.580 s</TD>
    <TD style=3D"TEXT-ALIGN: right">(4.455 =
s)</TD></TR></TBODY></TABLE><BR>Table 7:=20
SAFE performance in seconds when checking clean programs against the=20
Chernobyl/CIH virus. </DIV><A name=3DSection-Conclusion></A>
<H2>9 Conclusion and Future Work</H2>
<P>We presented a unique view of malicious code detection as a=20
obfuscation-deobfuscation game. We used this viewpoint to explore =
obfuscation=20
attacks on commercial virus scanners, and found that three popular virus =

scanners were susceptible to these attacks. We presented a static =
analysis=20
framework for detecting malicious code patterns in executables. Based =
upon our=20
framework, we have implemented SAFE, a static analyzer for executables =
that=20
detects malicious patterns in executables and is resilient to common =
obfuscation=20
transformations. </P>
<P>For future work, we will investigate the use of theorem provers =
during the=20
construction of the annotated CFG. For instance, SLAM [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#SLAMSpin"=
>41</A>]=20
uses the theorem prover Simplify [<A=20
href=3D"http://www.cs.wisc.edu/wisa/papers/security03/cj03.html#Simplify"=
>49</A>]=20
for predicate abstraction of C programs. Our detection algorithm is =
context=20
insensitive and does not track the calling context of the executable. We =
will=20
investigate the use of push-down systems, which would make our algorithm =
context=20
sensitive. However, the existing PDS formalism does not allow =
uninterpreted=20
variables, so it will have to be extended to be used in our context. =
</P>
<P><B>Availability</B><BR>The SAFE prototype remains in development and =
we are=20
not distributing it at this time. Please contact Mihai Christodorescu, =
<A=20
href=3D"mailto:mihai@cs.wisc.edu"><TT>&lt;mihai@cs.wisc.edu&gt;</TT></A>,=
 for=20
further updates. </P>
<P><B>Acknowledgments</B><BR>We would like to thank Thomas Reps and =
Jonathon=20
Giffin for providing us with invaluable comments on earlier drafts of =
the paper.=20
We would also like to thank the members and collaborators of the <A=20
href=3D"http://www.cs.wisc.edu/wisa">Wisconsin Safety Analyzer =
(WiSA)</A> research=20
group for their insightful feedback and support throughout the =
development of=20
this work. </P>
<H2>Bibliography</H2>
<DL>
  <DT><A name=3DStanifordPaxson></A>[1]=20
  <DD>S. Staniford, V. Paxson, and N. Weaver. How to 0wn the internet in =
your=20
  spare time. In <I>Proceedings of the 11th USENIX Security Symposium =
(Security=20
  '02)</I>, pages 149 - 167. USENIX, August 2002.<BR>
  <P></P>
  <DT><A name=3Dcert-ddoswhat></A>[2]=20
  <DD>CERT Coordination Center. Denial of service attacks, 2001.<BR>[ <A =

  =
href=3D"http://www.cert.org/tech_tips/denial_of_service.html">.html</A> =
]=20
  <P></P>
  <DT><A name=3Dmuchnik1997-compiler></A>[3]=20
  <DD>S.S. Muchnick. <I>Advanced Compiler Design and Implementation</I>. =
Morgan=20
  Kaufmann, 1997.<BR>
  <P></P>
  <DT><A name=3Dchandrareps1999-physical></A>[4]=20
  <DD>S. Chandra and T.W. Reps. Physical type checking for C. In =
<I>Workshop on=20
  Program Analysis For Software Tools and Engineering</I>, pages 66 - =
75. ACM=20
  SIGPLAN - SIGSOFT, September 1999.<BR>
  <P></P>
  <DT><A name=3Dwang1998-chernobyl></A>[5]=20
  <DD>R. Wang. Flash in the pan? <I>Virus Bulletin</I>, July 1998. Virus =

  Analysis Library.<BR>
  <P></P>
  <DT><A name=3Dxu2000-safety></A>[6]=20
  <DD>Z. Xu. <I>Safety-Checking of Machine Code</I>. PhD thesis, =
University of=20
  Wisconsin, Madison, 2000.<BR>
  <P></P>
  <DT><A name=3Dz0mbie-homepage></A>[7]=20
  <DD>z0mbie. z0mbie's homepage.<BR>[ <A =
href=3D"http://z0mbie.host.sk/">http</A>=20
  ]=20
  <P></P>
  <DT><A name=3Dz0mbie-rpme2000></A>[8]=20
  <DD>z0mbie. RPME mutation engine.<BR>[ <A=20
  href=3D"http://z0mbie.host.sk/rpme.zip">http</A> ]=20
  <P></P>
  <DT><A name=3Dz0mbie-mistfall></A>[9]=20
  <DD>z0mbie. Automated reverse engineering: Mistfall engine.<BR>[ <A=20
  href=3D"http://z0mbie.host.sk/autorev.txt">.txt</A> ]=20
  <P></P>
  <DT><A name=3Dteso-burneye></A>[10]=20
  <DD>TESO. burneye elf encryption program.<BR>[ <A=20
  href=3D"https://teso.scene.at/">http</A> ]=20
  <P></P>
  <DT><A name=3Dszorferrie2001-metamorphic></A>[11]=20
  <DD>P. Sz=F6r and P. Ferrie. Hunting for metamorphic. In =
<I>Proceedings of Virus=20
  Bulletin Conference</I>, pages 123 - 144, September 2001.<BR>
  <P></P>
  <DT><A name=3Dcollbergthomborsonlow1997-taxonomy></A>[12]=20
  <DD>C. Collberg, C. Thomborson, and D. Low. A taxonomy of obfuscating=20
  transformations. Technical Report 148, Department of Computer =
Sciences, The=20
  University of Auckland, July 1997.<BR>
  <P></P>
  <DT><A name=3Dcohen1987-viruses></A>[13]=20
  <DD>F. Cohen. Computer viruses: Theory and experiments. <I>Computers =
and=20
  Security</I>, 6:22 - 35, 1987.<BR>
  <P></P>
  <DT><A name=3Dchesswhite2000-undetectable></A>[14]=20
  <DD>D.M. Chess and S.R. White. An undetectable computer virus. In=20
  <I>Proceedings of Virus Bulletin Conference</I>, 2000.<BR>
  <P></P>
  <DT><A name=3Dkaspersky2002-epo></A>[15]=20
  <DD>E. Kaspersky. <I>Viruses Without an Entry Point</I>, volume Virus =
List=20
  Encyclopaedia, chapter Ways of Infection. Kaspersky Labs, 2002.<BR>[ =
<A=20
  =
href=3D"http://www.viruslist.com/eng/viruslistbooks.asp?id=3D32&amp;key=3D=
0000100007000020000100003">http</A>=20
  ]=20
  <P></P>
  <DT><A name=3Dmcgrawmorrisett2000-taxonomy></A>[16]=20
  <DD>G. McGraw and G. Morrisett. Attacking malicious code: Report to =
the=20
  infosec research council. <I>IEEE Software</I>, 17(5):33 - 41,=20
  September/October 2000.<BR>
  <P></P>
  <DT><A name=3Dnachenberg1997-usptopolyvirus-1></A>[17]=20
  <DD>C. Nachenberg. Polymorphic virus detection module. <I>United =
States Patent=20
  # 5,696,822</I>, December 9, 1997.<BR>
  <P></P>
  <DT><A name=3Dnachenberg1997-usptopolyvirus-2></A>[18]=20
  <DD>C. Nachenberg. Polymorphic virus detection module. <I>United =
States Patent=20
  # 5,826,013</I>, October 20, 1998.<BR>
  <P></P>
  <DT><A name=3Dgrammatech></A>[19]=20
  <DD>GrammaTech Inc. Codesurfer - code analysis and understanding =
tool.<BR>[ <A=20
  =
href=3D"http://www.grammatech.com/products/codesurfer/index.html">.html</=
A> ]=20
  <P></P>
  <DT><A name=3Ddatarescue></A>[20]=20
  <DD>DataRescue sa/nv. Ida pro - interactive disassembler.<BR>[ <A=20
  href=3D"http://www.datarescue.com/idabase/">http</A> ]=20
  <P></P>
  <DT><A name=3Dkaspersky></A>[21]=20
  <DD>Kaspersky Labs.<BR>[ <A =
href=3D"http://www.kasperskylabs.com/">http</A> ]=20
  <P></P>
  <DT><A name=3Dsarc1998-cih></A>[22]=20
  <DD>M. Samamura. <I>W95.CIH</I>, volume Expanded Threat List and Virus =

  Encyclopaedia. Symantec Antivirus Research Center, 1998.<BR>[ <A=20
  =
href=3D"http://securityresponse.symantec.com/avcenter/venc/data/cih.html"=
>.html</A>=20
  ]=20
  <P></P>
  <DT><A name=3Dcollbergthomborsonlow1997-opaque></A>[23]=20
  <DD>C. Collberg, C. Thomborson, and D. Low. Manufacturing cheap, =
resilient,=20
  and stealthy opaque constructs. In <I>Principles of Programming =
Languages=20
  1998, POPL'98</I>, San Diego, CA, January 1998.<BR>
  <P></P>
  <DT><A name=3Dcousothalbwachs1978-polyhedral></A>[24]=20
  <DD>P. Cousot and N. Halbwachs. Automatic discovery of linear =
restraints among=20
  variables of a program. In <I>Proceedings of 5th ACM Symposium on =
Principles=20
  of Programming Languages, POPL '78</I>, Tucson, AZ, January 1978.<BR>
  <P></P>
  <DT><A=20
  =
name=3Dbarakgoldreichimpagliazzorudichsahaivadhanyang2001-impossible></A>=
[25]=20
  <DD>B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. =
Vadhan,=20
  and K. Yang. On the (im)possibility of obfuscating programs. In =
<I>Advances in=20
  Cryptology - CRYPTO `01</I>, volume 2139 of <I>Lecture Notes in =
Computer=20
  Science</I>, pages 1 - 18, Santa Barbara, CA, August 2001.=20
Springer-Verlag.<BR>
  <P></P>
  <DT><A name=3Dmorrisettwalkercraryglew1998-tal></A>[26]=20
  <DD>G. Morrisett, D. Walker, K. Crary, and N. Glew. From System F to =
Typed=20
  Assembly Language. In <I>Twenty-Fifth ACM SIGPLAN-SIGACT Symposium on=20
  Principles of Programming Languages</I>, pages 85 - 97, San Diego, CA, =
January=20
  1998.<BR>
  <P></P>
  <DT><A name=3Dmorrisettcraryglewwalker1998-stal></A>[27]=20
  <DD>G. Morrisett, K. Crary, N. Glew, and D. Walker. Stack-Based Typed =
Assembly=20
  Language. In Xavier Leroy and Atsushi Ohori, editors, <I>1998 Workshop =
on=20
  Types in Compilation</I>, volume 1473 of <I>Lecture Notes in Computer=20
  Science</I>, pages 28 - 52, Kyoto, Japan, March 1998. =
Springer-Verlag.<BR>
  <P></P>
  <DT><A name=3Ddeanwagner2001-ids></A>[28]=20
  <DD>D. Wagner and D. Dean. Intrusion detection via static analysis. In =
<I>2001=20
  IEEE Symposium on Security and Privacy</I>, Oakland, CA, May 2001.<BR>
  <P></P>
  <DT><A name=3Dgiffinjhamiller2002-ids></A>[29]=20
  <DD>J.T. Giffin, S. Jha, and B.P. Miller. Detecting manipulated remote =
call=20
  streams. In <I>11th USENIX Security Symposium</I>, San Francisco, CA, =
August=20
  2002.<BR>
  <P></P>
  <DT><A name=3Dmyers1981-interdataflow></A>[30]=20
  <DD>E.M. Myers. A precise interprocedural data flow algorithm. In=20
  <I>Conference Record of the 8th Annual ACM Symposium on Principles of=20
  Programming Languages (POPL)</I>, pages 219 - 230, Williamsburg, VA, =
January=20
  1981.<BR>
  <P></P>
  <DT><A name=3Dlandi1992-undecidability></A>[31]=20
  <DD>W. Landi. Undecidability of static analysis. <I>ACM Letters on =
Programming=20
  Languages and Systems</I>, 1(4):323 - 337, December 1992.<BR>
  <P></P>
  <DT><A name=3Dcaida-sapphire></A>[32]=20
  <DD>D. Moore, V. Paxson, S. Savage, C. Shannon, S. Staniford, and N. =
Weaver.=20
  The spread of the Sapphire/Slammer worm.<BR>[ <A=20
  =
href=3D"http://www.caida.org/outreach/papers/2003/sapphire/sapphire.html"=
>.html</A>=20
  ]=20
  <P></P>
  <DT><A name=3Dcurriehurajan2000-dspverification></A>[33]=20
  <DD>David W. Currie, Alan J. Hu, and Sreeranga Rajan. Automatic formal =

  verification of dsp software. In <I>Proceedings of the 37th conference =
on=20
  Design automation</I>, pages 130-135. ACM Press, 2000.<BR>
  <P></P>
  <DT><A name=3Dfenghu2002-vliwverification></A>[34]=20
  <DD>Xiushan Feng and Alan J. Hu. Automatic formal verification for =
scheduled=20
  vliw code. In <I>Proceedings of the joint conference on Languages, =
compilers=20
  and tools for embedded systems</I>, pages 85-92. ACM Press, 2002.<BR>
  <P></P>
  <DT><A name=3Dnecula2000-translationvalidation></A>[35]=20
  <DD>George C. Necula. Translation validation for an optimizing =
compiler. In=20
  <I>Proceedings of the ACM SIGPLAN '00 conference on Programming =
language=20
  design and implementation</I>, pages 83-94. ACM Press, 2000.<BR>
  <P></P>
  <DT><A name=3Dkn:HRB90></A>[36]=20
  <DD>S. Horwitz, T. Reps, and D. Binkley. Interprocedural slicing using =

  dependence graphs. <I>ACM Transactions on Programming Languages and =
Systems=20
  (TOPLAS)</I>, 12(1):26-60, January 1990.<BR>
  <P></P>
  <DT><A name=3Dkn:RHS95></A>[37]=20
  <DD>T. Reps, S. Horwitz, and M. Sagiv. Precise interprocedural =
dataflow=20
  analysis via graph reachability. In <I>Symposium on Principles of =
Programming=20
  Languages</I>, pages 49-61, New York, NY, 1995. ACM Press.<BR>
  <P></P>
  <DT><A name=3DCAV:EHRS00></A>[38]=20
  <DD>J. Esparza, D. Hansel, P. Rossmanith, and S. Schwoon. Efficient =
algorithms=20
  for model checking pushdown systems. In <I>Proceedings of =
Computer-Aided=20
  Verification</I>, volume 1855 of <I>Lecture Notes in Computer =
Science</I>,=20
  pages 232-247, July 2000.<BR>
  <P></P>
  <DT><A name=3DChenWagner></A>[39]=20
  <DD>H. Chen and D. Wagner. MOPS: an infrastructure for examining =
security=20
  properties of software. In <I>9th ACM Conference on Computer and=20
  Communications Security (CCS)</I>, November 2002.<BR>
  <P></P>
  <DT><A name=3DJensenMetayerThorn></A>[40]=20
  <DD>T. Jensen, D.L. Metayer, and T. Thorn. Verification of control =
flow based=20
  security properties. In <I>1999 IEEE Symposium on Security and =
Privacy</I>,=20
  May 1999.<BR>
  <P></P>
  <DT><A name=3DSLAMSpin></A>[41]=20
  <DD>T. Ball and S.K. Rajamani. Automatically validating temporal =
safety=20
  properties of interfaces. In <I>SPIN 2001, Workshop on Model Checking =
of=20
  Software</I>, 2001.<BR>
  <P></P>
  <DT><A name=3DAshcraftEngler></A>[42]=20
  <DD>K. Ashcraft and D. Engler. Using programmer-written compiler =
extensions to=20
  catch security holes. In <I>2002 IEEE Symposium on Security and =
Privacy</I>,=20
  pages 143-159, May 2002.<BR>
  <P></P>
  <DT><A name=3DErlingssonSchneiderIRM></A>[43]=20
  <DD>U. Erlingsson and F. B. Schneider. IRM enforcement of Java stack=20
  inspection. In <I>2000 IEEE Symposium on Security and Privacy</I>, =
pages=20
  246-255, May 2000.<BR>
  <P></P>
  <DT><A name=3DChess></A>[44]=20
  <DD>B.V. Chess. Improving computer security using extending static =
checking.=20
  In <I>2002 IEEE Symposium on Security and Privacy</I>, pages 160-173, =
May=20
  2002.<BR>
  <P></P>
  <DT><A name=3DBandera></A>[45]=20
  <DD>J. Corbett, M. Dwyer, J. Hatcliff, C. Pasareanu, Robby, S. =
Laubach, and H.=20
  Zheng. Bandera: Extracting finite-state models from Java source code. =
In=20
  <I>ICSE 2000: International Conference on Software Engineering</I>, =
pages=20
  439-448, 2000.<BR>
  <P></P>
  <DT><A name=3DPVS></A>[46]=20
  <DD>S. Owre, S. Rajan, J. Rushby, N. Shankar, and M. Srivas. PVS: =
Combining=20
  specification, proof checking, and model checking. In <I>CAV 96:=20
  Computer-Aided Verification</I>, pages 411-414, 1996.<BR>
  <P></P>
  <DT><A name=3DBishopDilger></A>[47]=20
  <DD>M. Bishop and M. Dilger. Checking for race conditions in file =
accesses.=20
  <I>Computing Systems</I>, 9(2), 1996.<BR>
  <P></P>
  <DT><A name=3DCAS:LLO95></A>[48]=20
  <DD>R.W. Lo, K.N. Levitt, and R.A. Olsson. MCF: A malicious code =
filter.=20
  <I>Computers &amp; Society</I>, 14(6):541-566, 1995.<BR>
  <P></P>
  <DT><A name=3DSimplify></A>[49]=20
  <DD>D. Detlefs, G. Nelson, and J. Saxe. Simplify theorem prover.<BR>[ =
<A=20
  href=3D"http://research.compaq.com/SRC/esc/simplify.html">.html</A> ]=20
  <P></P>
  <DT><A name=3DFitting></A>[50]=20
  <DD>M. Fitting. <I>First-Order Logic and Automated Theorem =
Proving</I>.=20
  Springer-Verlag, 1996.<BR>
  <P></P>
  <DT><A name=3DHopcroftMotwaniUllman></A>[51]=20
  <DD>J.E. Hopcroft, R. Motwani, and J.D. Ullman. <I>Introduction to =
Automata=20
  Theory, Languages, and Computation</I>. Addison Wesley, 2001.<BR>
  <P></P></DD></DL><B>Notes:</B>=20
<OL>
  <LI><A name=3DFootnote-1></A>Note that the subroutine address =
computation had to=20
  be updated to take into account the new <TT>nop</TT>s. This is a =
trivial=20
  computation and can be implemented by adding the number of inserted=20
  <TT>nop</TT>s to the initial offset hard-coded in the virus-morphing =
code.=20
  <LI><A name=3DFootnote-2></A>Most executable formats require that the =
various=20
  sections of the executable file start at certain aligned addresses, to =
respect=20
  the target platform's idiosyncrasies. The extra space between the end =
of one=20
  section and the beginning of the next is usually padded with nulls.=20
  <LI><A name=3DFootnote-3></A>We use one-way matching which is simpler =
than full=20
  unification. Note that the instruction sequence does not contain any=20
  variables. We instantiate variables in the pattern so that they match =
the=20
  corresponding terms in the instruction sequence. </LI></OL>
<HR>

<ADDRESS>Mihai Christodorescu <A=20
href=3D"mailto:mihai@cs.wisc.edu"><TT>&lt;mihai@cs.wisc.edu&gt;</TT></A><=
/ADDRESS>This=20
paper can be found online at <A=20
href=3D"http://www.cs.wisc.edu/~mihai/my_work/papers/index.html#11"><TT>h=
ttp://www.cs.wisc.edu/~mihai/my_work/papers/index.html#11</TT></A>.<BR>Th=
is=20
paper was converted from LaTeX using <A=20
href=3D"http://www.lri.fr/~filliatr/bibtex2html/">bibtex2html</A> 1.57 =
and <A=20
href=3D"http://cbl.leeds.ac.uk/nikos/tex2html/doc/latex2html/latex2html.h=
tml">LaTeX2HTML</A>=20
1.67.<BR><!-- Created: Wed May  7 14:56:50 CDT 2003 --><!-- hhmts start =
-->Last=20
modified: Mon May 12 18:55:12 CDT 2003 <!-- hhmts end --></BODY></HTML>

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/overall_architecture.png

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

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/infrastructure_executable_loader.png

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

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/cih-cfg-2.png

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

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/cih-annot-cfg.png

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

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/ground-int.gif

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
/GRwyTBocpOgDKUoR0nKaYQAADs=

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/pattern-example.gif

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

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/binding-union.gif

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

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/sample-vir-auto.png

iVBORw0KGgoAAAANSUhEUgAAAFkAAAFwCAIAAABcvUCyAAAACXBIWXMAAAxNAAAMTQHSzq1OAAAA
HXRFWHRTb2Z0d2FyZQBHTlUgR2hvc3RzY3JpcHQgNy4wNULvQ9UAAAxDSURBVHic7Z0tc9tKFIaP
PR2jkExnipqC/oSOSEmQQmTSABk0AUYlQWVCAUXinZAgg4RYICUJiVBAp8DTH9GyzrQmF5nogpPs
WUv+0Mdau3beB3RsRVpJr45WstZ+2smyjCpyfHw8m8349d3dHRH5vs9v0zQNgkDNeXt7W7Vxi3RK
ZsH7ryIgojiOV8wfRZF6nabphw8fbm5uam9lO6zJYjqdnp6e3t3d+b6/eudXw9H0er2rq6v9/f3a
7WyUpVkkSTIajbgQmqSgk6Zpmqa9Xm84HIZhaKRNgyzOot/vz2Yz3/dVR2AQlYhrvcmCLPr9/uHh
4SZS0EnT9OHhwak4uvqb6XTaThBE5Pv+4eHh0dHRdDrd9LpKIllMp9PBYNBOEAyfg4PBYDQatbPG
1cg50lpFFImi6NOnT9Z708csLAbBnJ+fW+87ukTE106LQRDRbDY7Pj62uAHEWSRJYjcIIorjWL+p
tUKXiPi2ssbCaZqqf5szm83sXlNeXFxc1AgiiiKOgJflfz3P47/WvmE/PT212Gt06xVFmqaTyWQy
mcRxzIunaer7Pk+k+c9mJTF1p1+bDhHx1leCS0Bf0PO8FW/LN1vjGYIpuvrjhvLwfnqeZ6qzcIEu
1apnIppMJr7vR1FUb/EiuedA7VOnLlQtxHEcx7HqRBvWiP0szs7OauyDqgXV73KNqL/W6wg/fvxY
YylTdIkoCIJKcXAJeE9w38EftHgKaRmVp9fr2X3k1cmybDQaXV9f272kRVG0t7dn95lol4iGw2Gv
17N4ReDHXNYfDj8+v7i9vX14eLAShzsPuORZjpU4+Nnn1dVVmytdxtwzvpbj4IoYj8eOjBLg2a+w
eExAjZJt4uKyTWMCin6/33zETIc/6QdB4FoKzPrx1IuLi7u7u4ZDR1EU9Xo9cnu0uezYMg8p5h52
LKuX3MByEARuDhrmKJtFjn6/r17z1w7evXv38+fP7f3CARFRZogwDE01ZYvu+rSeDchCQBYCshCQ
hYAsBGQhIAsBWQjIQkAWArIQkIWALARkISALAVkIyEJAFgKyEJCFgCwEJ7IYDAadTqfT6eSmL5xY
o/G1Ux4xNbjQcHyEN2Y8Hqsp4/GYh9qaNDsej/U2eUpuRbINTdak0zwL3spcg2qKGoLk6fxWf509
7afeSDFKTmfh1jqURfaUSPZUFGp6GIbqSKoI9JkzrQT0THNZqHkWloZbWagjrFpTGRVnVnnp1ZE7
93MLqmbDMCxusFtZZE+HvZiFfhj1mdWh1munOKd6q5Ob37kscv2lKhPVvn626zPrp4Z+Qi3bwmJp
OJFFrs/Td1sdvVzfuXC9ah6VRa6p3Fs1p1vX1A1RvKYuIwxDJ+61NgdXSpIkq2dLkmQ8Hr9oZZNs
Uua7UTzPjtdFJZCFgCwEZCEgCwFZCMhCQBYCshBqfh98rolO5+Dg4O/fvy9fvvz9+3fzBm1hJgv1
+uDg4NevXw0btIWBc+Tg4EC9fv36dfMGbWEgC33/v3//3rxBWxjI4vPnz80bcQED/QU9dRnv379/
7nWh2PYCMVMXb9682eqrKWPmudZWXz4Udeoi5/v1ff/Pnz9E9OrVq5zbZCt+fqio4Pv99u1bmR9k
MvD9LmVHfL8GTbfql+xhGA6HQyNtGgS+X8Gy88GpApnLgnuHNqWmURSdnJw4EodN3y8RxXF8fX0N
368A3+8crvh++T4Svt8ubwd8v7QJ329tJdVO+X6JKE3TKIpqGF0Zu77fF018v+q1mt7kXIvj+Pz8
vPbizTHm+9X/VLsu4Pt1Bfh+BWO+3+bYz8KU79cIO+L7ZbgdJdOvBHy/j8D3+wh8v4+4IzWF71eA
71eA71dY6vvlUbJNXFz43sT6VaPI4u8c3NzcZFnW6/U8zzN1i01EURR5ntfr9e7v710LguD71YHv
VzDm+2Xg+3387ZqppmyB70ALyEJAFgKyEJCFgCwEZCEgCwFZCMhCQBYCshCQhYAsBGQhIAsBWQjI
QkAWArIQkIXw3LPQlWxuZdGa+FetaPAEkXvjI7ytGxX/8ir0vz6KYpusoNhcc8iE+DcreDCp4AQt
4tY5wuhyxZxicTAYqNCTJBkMBkrMSZoHmJfiRCqcXEYOZma0LrJm4t9skfuXtrQu6Ok0WSg1L8o4
wzBMkiRJEj2CnB+4FEYOZma6LrIG4t9skfuX5jug3NY+zmNkBzJDWZgS/2YF9++yv3I7LmaxOcqI
fx3tL4xTRvy7+75fxdovST2XuigDshCQhYAsBGQhIAsBWQjIQkAWAny/Any/Any/Any/Any/Any/
Any/Any/Any/QuW64B8kqrfw/RKt8/3yj/bVa/h+BeX7dUpemgO+X8Gm79e13sSa84GIzs/PnSqQ
uXut6XR6dHTUmtT0y5cv7ghuqej73dB5sQz4fvPA9zsHfL8CfL/Cbvp+a7NTvl+lJKx9w74jvl81
hfXHNTZlB32/1ED5u2u+3zRNrffE9TDv+03TtF5nYd9xa9b326Qo7Gdh0PerX1nqXWjt+n5f0JPv
t/zx5FNDXUEXXj5qfMZzwvebJMnl5SV8v10iCsMQvl+C71dn7hlf+5/c+dnn/f19a2tcgX3fryNB
UHFsubU43Dk1FPD9CvD9Cm34ftXgELkte23k+12WzvPy/XKx8Gv4fvM4/tu7MuA70AKyEJCFgCwE
ZCEgCwFZCMhCQBYCshCQhYAsBGQhIAsBWQjIQkAWArIQkIWALARkISALwWYWnXlWC+KKKKOl3ojI
e+fnKYPlulBjE+PxuNJ252ydejukRRCGYYVmTQ201BgrokWS1qKSkj2dlfy9NG/rXGtofFyq6g4s
o2EWSlKr25p1wa3ScOZUyNm6LHIm5VXbU3UHllEvC1UFakpuhuJ0KuHvXdbOaiz3FzlnN61TbG4U
t66pbDHm17neccXEHOzNzjVbavVliqcMVc8R1RcuM/Hq0/W9yq1OtaNmyPWU5TdsO75zUDxmZfy9
5Wdj3DpHylPG38t/rfB9oMrHaAmbq4vm/7FCSbagLrjIW7i+bEEWTAtffduaLFoAWQjIQkAWArIQ
kIWALATDjlt6eriwjRiuC913u3XA9yvA9yvA9yvA9yvA9yvA9yvA9yuY9/2S9gu8rfj5oaKm73ft
b1Vzvt8gCNz/WWJLvl/H7bYMfL8CfL8CfL8CfL8CfL8CfL8CfL8CfL8CfL8CfL8CfL+Ced8vaaFU
Ygd9v3q91GjW4gMhw75ftnhaVD42wbDv1/f9yWRSLwv7jtuvX79WXWaF77cJ9rN4+/atKd9vQ9I0
tev77WRZVuMGXL9SFH2/cRzXyMj6bTh8vwJ8vwJ8vwJ8vwJ8vwJ8vwJ8v8KqcbPj4+P//vuP1v33
oOXhjyrOjieuH08djUZJkhjx/QZBcHZ2Vms726Cy75e0++6F6eijyvQcfL9cLPx6oe/X8RJYjKkf
KMH3u1MgCwFZCMhCQBYCshCQhYAsBGQhIAsBWQjIQkAWArIQkIWALARkISALAVkIyEJAFgKyECxn
0UT5y/LawWCwopFK3lzL4yNUS8CaFaSDasFcI+zHLbsxJedbS/Ms1NuctnKt7zf3Nven7fD9ZqWV
v7TS96vmVH/V2Q7fb1Za+Vs87MvqYqHUcWuyKE4pdgTls1jWZpmNce6aulr5W8b3u7DNUvOVOnwl
qFEX5ZW/+l4VV6crf4tdxtZcR0pSPGbw/Qrw/W6WLagL+H7zwPfbKshCQBYCshCQhYAsBGQhwPcr
wPcrwPcrwPcrwPcrwPcrwPcrwPcrwPcrNPL95n6WSE/KFPh+59hZ3y/b4eD7he93k75fIoqiCL7f
OeD7FeD7nQO+3zxRFJ2cnFg/WeD7FRzy/fb7fYsbQE75fu1uAMH3q9Ot7fv1PI/lnUWdaT3HLRGd
np7WW9AIxny/xddVse777dY+QXTrsz69Sdejq3fax6TvN01T631wE4z5fpv3oPYdt6Z8v+x19TyP
z50a3af1LDpZlnU6nUqKcH4Moe4IPM/LLV6cUgbP8/79+7e/v191QVN0iSgIgkoV7vs+XziZGru9
kCAILAZB/Bx8OBxeXl5W6vZW73+NdNj3W3Ups8D3K8D3K8D3K8D3Kyx+9jubzTb9IdqdU0OxYJz9
9vZ2b2+PP4ZuYpV8S/bjxw+ngiD4fnXg+xU26/tVw+6uDZEtZFO+X6cGxEryPzPJ1rdjRU6GAAAA
AElFTkSuQmCC

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/cih-vir-auto.png

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
Hx87a1iLoujbb7/95JNPqt7LpZsABoW86ZV8wPSy+lLecrl8+PChPLy5j05rMirBp59++v333yul
wjC0H3VcFyT6lumzCwwBedNt5vY+AbPOxcWFUmo2m00mExmuZvdtmgEIjo6O7N639vAtZuxI+99h
7pORNBggnr/pJKnHbL2ORoY0r8l3gNZrZJOkkR7PZ2dnDe8fsA3P38AFMmZ3cj9fa71YLKIosiOn
MIHsgdRkYjqdVn2WE4CgfnPQMg9akjH78OzZM/PdaPaXpE2nU5mgKoPD0en6DXlziOz7yYqYcavT
xzN6r9Plk/a0A2LHDPeTAfQMedM+YgbAEJA3rSFmAAwKedMC+6tBiBkAA0HeuGMPy0jMABga8mbv
GLwEABR5s1e0mwGAQd40z35Ik5gBAEHeNMmu0DDkCQDYyJtmmJGAqdAAQCHyZiem6YykAYDNyJua
aDoDgErIm8poOgOAGsibsuxeZwyqDQBVkTfb2TdpaDoDgHrIm01IGgBoCnlTjJs0ANCsO23vwMEJ
w9DzPKVUmqaEDQA0hbz5CUkDAPtD3ihF0gDA/g09b7TWJA0AODDc/gKm7xkP05QnfSja3gs0if8p
nBli/UZrLd3P4jg+/DqNVL+aIi2HZpvypxDeh+xvIzXvhhaZI5kt1USZznyETT5u3afU+F0yEx3S
4L91w/9UPqjwD57/n9oz+bdiL9KBkSdp4jhue0fK2sf/yGzT3njmg8yfKF9OgiBIb5sfzbRMbN7t
zJ89s0olcq1gpnfZVEaDm9qg8X9r4f80/1L+aOv+p2l//6290em/yYDyRg6kDiWNsM8jMi2tH+nt
AWmqaPLS/I6Zd/PbtFtR0g9PJfZfafOZUd0+DLtut+1dsmVSP7Of9s7bu2o+KH+6bOo/6zhvmvq3
Fv5P0zX/1q1pt49/69b/aX7HunVp6AZ50wGFB08nFFZB7AlzxZo/m5iZmV9/Xf3GVvLctC7F111u
m7Xs/TFXteZkZHbenKTMTFkxf9neVI3Bff2mkX/rhvpN/t+69W+1p3/r5v9pfrMN/lt7o6PnMdH/
/2WmcHfO1hNTmcWqLmA3a2w+4M1IP+t2O3MBa9bKvLTPiRt20rzc8Ik7OpC8KbPY1lXSNf/WrX+r
Pf1bt+7k/v6tvdHpvOl5fwHTL4AeOJWUHC/OHvJn3d3dNE0z73qel++mkWnBy39Q+Z3HOgf1b+V/
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
PT1tcQd836cwA4XuKKVWq1Vb14NGjR3obiMm9sceBaMtvu9TWQfy7qjbYdBqkAGm5OfuVqvVzc1N
I5s6TJxQ9u27776rGjaFZXjHIu37ftVjqltNapRk1HPn2bNnNa4HoyiaTCZRFMmTm0qpJEkmlnpH
bI17rY6FYeh5nud5VVeUHhn72CVRY5e2MjvclbvZv//978svnC/DIkkSM1qaUsoUaXvmVr7vP3v2
rPzyreRNvcK875Ks9lCY7R3uSmHupTv12h+SJLm+vr6+vrZ7GVzfqtfPrfU2vTLiOK46orbYxwll
r0eOPf5KhzpQlS9FhWVY5cY7N6W60iVUjSqOe/UK856icX8FLDOSUIcKc//UzBul1GQykQlZvfVG
81bItZ7W2vM8e1reWnfxmHlLLjPlGJBplbv2tDduljSfZTNrmU1lVje7KhOZt8x25AknmZaJw29F
qdrtJVOG88z8JEkqXQ91Im9s+dK7p8KcL8mqSmHeUJLz75qNZ/JGdaEw99Id8/UelVxfXyul1rWb
1c6ebh2iSqkgCKTgyhA7Zlom0jSN4zhzFOXfko4PchgEQSCXnFrrNE3TNJVlzMbTNDWfIi8zu2Tm
2P0p7NXNu2mayqFo3tpw6deJq8JKVZDNZTiz2UybWxn1jqy22KU387LZwpwvyapKYd5QkjPvdr0w
95I3nU5r90+TgzAzGGIURfW2liTJ1dVV+W8WUe09aut5P43LUDgtF1lmeZkp7xa+JfWMOI7t30gW
C8PQXr1wYt10yZlbF8t/xGGqMfRfYRmeTCaSRrbCmRs2OxqNulWYM//fDYV5cznfWpjLF+DC3dul
eOd/u87p9vgCf/zjH6uuYy705vP5fD5vqn+afJNVI5s6BHLZJba+JddldkMzw2rVU7I07qkM287P
zxvfZlsozGjEnV/84hc1DjbTVyf/Fby1G9OSJPnss8/qrXto7Ap7pqV43VsyX45JuWwseXw22BK9
+UMP/3xR6RS/rgw3peooageLwoym3FFKTafTqn1v7N7PdiPDLnkznU47cYjKIWHuXhZOy1iimRv+
6vYYyLwl7C9ZkAn7LqiZsLdmlpFmcbMp2b65Z5vZN7OWfWybu692Q7m9e52oxR8fH8uXl2+1uQyr
264E9jKVer6V3A2jrdsJpmBkSsiGwmwXxRqFWb5ZMV+SVbnCvLUkq1xhzkdLJwpzL3ly1+5Pf/pT
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
YII=

------=_NextPart_000_0000_01C80F9B.F234E740
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.cs.wisc.edu/wisa/papers/security03/images/language-check.gif

R0lGODlhuAA5AIQAAAAAAKioqJycnJCQkISEhHh4eGxsbGBgYFRUVEhISDw8PDAwMCQkJBgYGAwM
DLOzswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA
AA8ALAAAAAC4ADkAQAX+4COOZGmeaKqubOu+cCzPdG0LTGDvfL8WCp9QpgAMj8ieAGAoKYImBMKk
SJSMKmhp4EDoBIgcCgDQwbAsNOx5kpIGAIf5gSCI3KgAouzsnwIACwRkDWRkciOCIoNxDgMnBwco
B49XJ2okZDKYKZwpjIWGiCKKDwILCA5xCXYkpQgJAU1vAAdzlCS4lwxJvSNdvsHCKw5Ww70BDgIk
BGIECwsPvCfNOs/RI1OLBQ8E3MdDsODj5OXm5+jp6usuBXzs8CsGDfEye9ovnpf1R3utD2z2OdEi
Ao4hQyY4edKnKYa+hEQIZirh4JuIBPRE6CvwDRXEiZceRllGQ1IPfzL+GJichK0fyRYIXq5YKYKm
CXc2+alQaUIPpSLT8iD4CSCozh4Nch5tMUCiiaaG/v0JpS3WA6tLTwzAl7Wr169HElgES25BJbI/
WqI9RyDj2hKAuL49l8ApWThqW4gcAWjuiwVurzIwdLbmLBEKBh/E+kcujUJS9brYeyKBYgCFHxw4
TECBLQSFGpzdnCJAg5d6SKRGMQgfnMwaM8OZ0xZ2ic4fVTOknHsF7y2YLxVO1c1y4eAnBEhqEBn3
COcJsbwmgQ/TEtsMDg+IbFSjwOibJseYnm2EmgMSAxh74GksaBPdu5vnfcrFHM0vCUSeseC3q7Eo
ADFEfS4Q+IJ+zOz+twgAdnk1iIIsDMBAAwaQNMABDTDmF0zvvHWAAxumYwAAMr2VTInSQEFAEwJQ
eAIDKh4WYgoJrDfjA6UAlJ8kGo6gwI4jRNIKLrqspQCANyap5JJMNunkk8PYCCUNBsi4pAGOTTmD
affduICVWtqwAJJ+uRimEF/eqEBeZ/JQUYgjQtgmlR2+5UBgLeDJmpRNFuPXiFmq8Jt/c+2BYgox
1aAUfwDIOYZ4Lr2QKAoXBlnCogty9WFy8mHI1wFskmAAhAIkoEoDXnTSqEOQxrCpCTiQsAR6y5yi
TayIYjKqqBAOopYDSjWA5JsjGBAqdUh6dimfGhHqnWQyAHuCsCT+uHPYriJQi0JMqyLr7SUg1hRu
bzUdxECPU5H7LHisQgvDq+QuEIsUgx32kFUeqRaYaWOgIW2xJHHyLwk1jnBKiQp9d4Wz7LX6wsAP
VLiuKXX2NTEJDKhCBpuY7CbuCAWkKUJ3BoxbggAO9OrYQv2G564L8IZ8mFHyGmAGAamO/Nwy24lK
IjNc4dwyCwiAiYIAFgkwHA+FbNLlHwyrULSks7QY6tTlUZdHIDA7+kAAly1QBF+BxtCfDMayILIQ
B3idi9tkq1Z2a4V2CwMXgYbxdJMovTVrDQYooDEDCNj2JGAbrjnngExsuMShi89g2YwHyIfDUAGA
/YgARZBRyeVUtmg+5Ww3inPFVoTrwMoYqOf85IlKopfLSn0d5HlNtKNxSisGSNL7XC3uvSGXpmAU
hwKtDDDmycY7gDzIAgh91UVzHVB25CqUakcCq1KrLfbgTxkCADs=

------=_NextPart_000_0000_01C80F9B.F234E740--
