\documentclass[11pt,twoside]{article}\makeatletter

\IfFileExists{xcolor.sty}%
  {\RequirePackage{xcolor}}%
  {\RequirePackage{color}}
\usepackage{colortbl}
\usepackage{wrapfig}
\usepackage{ifxetex}
\ifxetex
  \usepackage{fontspec}
  \usepackage{xunicode}
  \catcode`⃥=\active \def⃥{\textbackslash}
  \catcode`❴=\active \def❴{\{}
  \catcode`❵=\active \def❵{\}}
  \def\textJapanese{\fontspec{Noto Sans CJK JP}}
  \def\textChinese{\fontspec{Noto Sans CJK SC}}
  \def\textKorean{\fontspec{Noto Sans CJK KR}}
  \setmonofont{DejaVu Sans Mono}
  
\else
  \IfFileExists{utf8x.def}%
   {\usepackage[utf8x]{inputenc}
      \PrerenderUnicode{–}
    }%
   {\usepackage[utf8]{inputenc}}
  \usepackage[english]{babel}
  \usepackage[T1]{fontenc}
  \usepackage{float}
  \usepackage[]{ucs}
  \uc@dclc{8421}{default}{\textbackslash }
  \uc@dclc{10100}{default}{\{}
  \uc@dclc{10101}{default}{\}}
  \uc@dclc{8491}{default}{\AA{}}
  \uc@dclc{8239}{default}{\,}
  \uc@dclc{20154}{default}{ }
  \uc@dclc{10148}{default}{>}
  \def\textschwa{\rotatebox{-90}{e}}
  \def\textJapanese{}
  \def\textChinese{}
  \IfFileExists{tipa.sty}{\usepackage{tipa}}{}
\fi
\def\exampleFont{\ttfamily\small}
\DeclareTextSymbol{\textpi}{OML}{25}
\usepackage{relsize}
\RequirePackage{array}
\def\@testpach{\@chclass
 \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
  \ifnum \@lastchclass=7 5 \else
   \ifnum \@lastchclass=8 \tw@ \else
    \ifnum \@lastchclass=9 \thr@@
   \else \z@
   \ifnum \@lastchclass = 10 \else
   \edef\@nextchar{\expandafter\string\@nextchar}%
   \@chnum
   \if \@nextchar c\z@ \else
    \if \@nextchar l\@ne \else
     \if \@nextchar r\tw@ \else
   \z@ \@chclass
   \if\@nextchar |\@ne \else
    \if \@nextchar !6 \else
     \if \@nextchar @7 \else
      \if \@nextchar (8 \else
       \if \@nextchar )9 \else
  10
  \@chnum
  \if \@nextchar m\thr@@\else
   \if \@nextchar p4 \else
    \if \@nextchar b5 \else
   \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
   \fi \fi  \fi  \fi  \fi  \fi  \fi \fi \fi \fi \fi \fi}
\gdef\arraybackslash{\let\\=\@arraycr}
\def\@textsubscript#1{{\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
\def\Panel#1#2#3#4{\multicolumn{#3}{){\columncolor{#2}}#4}{#1}}
\def\abbr{}
\def\corr{}
\def\expan{}
\def\gap{}
\def\orig{}
\def\reg{}
\def\ref{}
\def\sic{}
\def\persName{}\def\name{}
\def\placeName{}
\def\orgName{}
\def\textcal#1{{\fontspec{Lucida Calligraphy}#1}}
\def\textgothic#1{{\fontspec{Lucida Blackletter}#1}}
\def\textlarge#1{{\large #1}}
\def\textoverbar#1{\ensuremath{\overline{#1}}}
\def\textquoted#1{‘#1’}
\def\textsmall#1{{\small #1}}
\def\textsubscript#1{\@textsubscript{\selectfont#1}}
\def\textxi{\ensuremath{\xi}}
\def\titlem{\itshape}
\newenvironment{biblfree}{}{\ifvmode\par\fi }
\newenvironment{bibl}{}{}
\newenvironment{byline}{\vskip6pt\itshape\fontsize{16pt}{18pt}\selectfont}{\par }
\newenvironment{citbibl}{}{\ifvmode\par\fi }
\newenvironment{docAuthor}{\ifvmode\vskip4pt\fontsize{16pt}{18pt}\selectfont\fi\itshape}{\ifvmode\par\fi }
\newenvironment{docDate}{}{\ifvmode\par\fi }
\newenvironment{docImprint}{\vskip 6pt}{\ifvmode\par\fi }
\newenvironment{docTitle}{\vskip6pt\bfseries\fontsize{22pt}{25pt}\selectfont}{\par }
\newenvironment{msHead}{\vskip 6pt}{\par}
\newenvironment{msItem}{\vskip 6pt}{\par}
\newenvironment{rubric}{}{}
\newenvironment{titlePart}{}{\par }

\newcolumntype{L}[1]{){\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{){\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{){\raggedleft\arraybackslash}p{#1}}
\newcolumntype{P}[1]{){\arraybackslash}p{#1}}
\newcolumntype{B}[1]{){\arraybackslash}b{#1}}
\newcolumntype{M}[1]{){\arraybackslash}m{#1}}
\definecolor{label}{gray}{0.75}
\def\unusedattribute#1{\sout{\textcolor{label}{#1}}}
\DeclareRobustCommand*{\xref}{\hyper@normalise\xref@}
\def\xref@#1#2{\hyper@linkurl{#2}{#1}}
\begingroup
\catcode`\_=\active
\gdef_#1{\ensuremath{\sb{\mathrm{#1}}}}
\endgroup
\mathcode`\_=\string"8000
\catcode`\_=12\relax

\usepackage[a4paper,twoside,lmargin=1in,rmargin=1in,tmargin=1in,bmargin=1in,marginparwidth=0.75in]{geometry}
\usepackage{framed}

\definecolor{shadecolor}{gray}{0.95}
\usepackage{longtable}
\usepackage[normalem]{ulem}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{marginnote}

\renewcommand{\@cite}[1]{#1}


\renewcommand*{\marginfont}{\itshape\footnotesize}

\def\Gin@extensions{.pdf,.png,.jpg,.mps,.tif}

  \pagestyle{fancy}

\usepackage[pdftitle={A Survey on Software Protection Techniques against Various Attacks},
 pdfauthor={}]{hyperref}
\hyperbaseurl{}

	 \paperwidth210mm
	 \paperheight297mm
              
\def\@pnumwidth{1.55em}
\def\@tocrmarg {2.55em}
\def\@dotsep{4.5}
\setcounter{tocdepth}{3}
\clubpenalty=8000
\emergencystretch 3em
\hbadness=4000
\hyphenpenalty=400
\pretolerance=750
\tolerance=2000
\vbadness=4000
\widowpenalty=10000

\renewcommand\section{\@startsection {section}{1}{\z@}%
     {-1.75ex \@plus -0.5ex \@minus -.2ex}%
     {0.5ex \@plus .2ex}%
     {\reset@font\Large\bfseries}}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
     {-1.75ex\@plus -0.5ex \@minus- .2ex}%
     {0.5ex \@plus .2ex}%
     {\reset@font\Large}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
     {-1.5ex\@plus -0.35ex \@minus -.2ex}%
     {0.5ex \@plus .2ex}%
     {\reset@font\large}}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
     {-1ex \@plus-0.35ex \@minus -0.2ex}%
     {0.5ex \@plus .2ex}%
     {\reset@font\normalsize}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
     {1.5ex \@plus1ex \@minus .2ex}%
     {-1em}%
     {\reset@font\normalsize\bfseries}}


\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
 \@tempdima 1.5em \begingroup
 \parindent \z@ \rightskip \@pnumwidth 
 \parfillskip -\@pnumwidth 
 \bfseries \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par
 \endgroup}
\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
\def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
\def\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
\@ifundefined{c@section}{\newcounter{section}}{}
\@ifundefined{c@chapter}{\newcounter{chapter}}{}
\newif\if@mainmatter 
\@mainmattertrue
\def\chaptername{Chapter}
\def\frontmatter{%
  \pagenumbering{roman}
  \def\thechapter{\@roman\c@chapter}
  \def\theHchapter{\roman{chapter}}
  \def\thesection{\@roman\c@section}
  \def\theHsection{\roman{section}}
  \def\@chapapp{}%
}
\def\mainmatter{%
  \cleardoublepage
  \def\thechapter{\@arabic\c@chapter}
  \setcounter{chapter}{0}
  \setcounter{section}{0}
  \pagenumbering{arabic}
  \setcounter{secnumdepth}{6}
  \def\@chapapp{\chaptername}%
  \def\theHchapter{\arabic{chapter}}
  \def\thesection{\@arabic\c@section}
  \def\theHsection{\arabic{section}}
}
\def\backmatter{%
  \cleardoublepage
  \setcounter{chapter}{0}
  \setcounter{section}{0}
  \setcounter{secnumdepth}{2}
  \def\@chapapp{\appendixname}%
  \def\thechapter{\@Alph\c@chapter}
  \def\theHchapter{\Alph{chapter}}
  \appendix
}
\newenvironment{bibitemlist}[1]{%
   \list{\@biblabel{\@arabic\c@enumiv}}%
       {\settowidth\labelwidth{\@biblabel{#1}}%
        \leftmargin\labelwidth
        \advance\leftmargin\labelsep
        \@openbib@code
        \usecounter{enumiv}%
        \let\p@enumiv\@empty
        \renewcommand\theenumiv{\@arabic\c@enumiv}%
	}%
  \sloppy
  \clubpenalty4000
  \@clubpenalty \clubpenalty
  \widowpenalty4000%
  \sfcode`\.\@m}%
  {\def\@noitemerr
    {\@latex@warning{Empty `bibitemlist' environment}}%
    \endlist}

\def\tableofcontents{\section*{\contentsname}\@starttoc{toc}}
\parskip0pt
\parindent1em
\def\Panel#1#2#3#4{\multicolumn{#3}{){\columncolor{#2}}#4}{#1}}
\newenvironment{reflist}{%
  \begin{raggedright}\begin{list}{}
  {%
   \setlength{\topsep}{0pt}%
   \setlength{\rightmargin}{0.25in}%
   \setlength{\itemsep}{0pt}%
   \setlength{\itemindent}{0pt}%
   \setlength{\parskip}{0pt}%
   \setlength{\parsep}{2pt}%
   \def\makelabel##1{\itshape ##1}}%
  }
  {\end{list}\end{raggedright}}
\newenvironment{sansreflist}{%
  \begin{raggedright}\begin{list}{}
  {%
   \setlength{\topsep}{0pt}%
   \setlength{\rightmargin}{0.25in}%
   \setlength{\itemindent}{0pt}%
   \setlength{\parskip}{0pt}%
   \setlength{\itemsep}{0pt}%
   \setlength{\parsep}{2pt}%
   \def\makelabel##1{\upshape ##1}}%
  }
  {\end{list}\end{raggedright}}
\newenvironment{specHead}[2]%
 {\vspace{20pt}\hrule\vspace{10pt}%
  \phantomsection\label{#1}\markright{#2}%

  \pdfbookmark[2]{#2}{#1}%
  \hspace{-0.75in}{\bfseries\fontsize{16pt}{18pt}\selectfont#2}%
  }{}
      \def\TheFullDate{2012-01 2012-05-15 (revised: January 2012 15 May 2012)}
\def\TheID{\makeatother }
\def\TheDate{2012-01 2012-05-15}
\title{A Survey on Software Protection Techniques against Various Attacks}
\author{}\makeatletter 
\makeatletter
\newcommand*{\cleartoleftpage}{%
  \clearpage
    \if@twoside
    \ifodd\c@page
      \hbox{}\newpage
      \if@twocolumn
        \hbox{}\newpage
      \fi
    \fi
  \fi
}
\makeatother
\makeatletter
\thispagestyle{empty}
\markright{\@title}\markboth{\@title}{\@author}
\renewcommand\small{\@setfontsize\small{9pt}{11pt}\abovedisplayskip 8.5\p@ plus3\p@ minus4\p@
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus2\p@
\belowdisplayshortskip 4\p@ plus2\p@ minus2\p@
\def\@listi{\leftmargin\leftmargini
               \topsep 2\p@ plus1\p@ minus1\p@
               \parsep 2\p@ plus\p@ minus\p@
               \itemsep 1pt}
}
\makeatother
\fvset{frame=single,numberblanklines=false,xleftmargin=5mm,xrightmargin=5mm}
\fancyhf{} 
\setlength{\headheight}{14pt}
\fancyhead[LE]{\bfseries\leftmark} 
\fancyhead[RO]{\bfseries\rightmark} 
\fancyfoot[RO]{}
\fancyfoot[CO]{\thepage}
\fancyfoot[LO]{\TheID}
\fancyfoot[LE]{}
\fancyfoot[CE]{\thepage}
\fancyfoot[RE]{\TheID}
\hypersetup{citebordercolor=0.75 0.75 0.75,linkbordercolor=0.75 0.75 0.75,urlbordercolor=0.75 0.75 0.75,bookmarksnumbered=true}
\fancypagestyle{plain}{\fancyhead{}\renewcommand{\headrulewidth}{0pt}}

\date{}
\usepackage{authblk}

\providecommand{\keywords}[1]
{
\footnotesize
  \textbf{\textit{Index terms---}} #1
}

\usepackage{graphicx,xcolor}
\definecolor{GJBlue}{HTML}{273B81}
\definecolor{GJLightBlue}{HTML}{0A9DD9}
\definecolor{GJMediumGrey}{HTML}{6D6E70}
\definecolor{GJLightGrey}{HTML}{929497} 

\renewenvironment{abstract}{%
   \setlength{\parindent}{0pt}\raggedright
   \textcolor{GJMediumGrey}{\rule{\textwidth}{2pt}}
   \vskip16pt
   \textcolor{GJBlue}{\large\bfseries\abstractname\space}
}{%   
   \vskip8pt
   \textcolor{GJMediumGrey}{\rule{\textwidth}{2pt}}
   \vskip16pt
}

\usepackage[absolute,overlay]{textpos}

\makeatother 
      \usepackage{lineno}
      \linenumbers
      
\begin{document}

             \author[1]{  N.Sasirekha}

             \author[2]{  Dr.M.Hemalatha}

             \affil[1]{  Vidyasagar College of Arts and Science}

\renewcommand\Authands{ and }

\date{\small \em Received: 10 April 2012 Accepted: 3 May 2012 Published: 15 May 2012}

\maketitle


\begin{abstract}
        


Software security and protection plays an important role in software engineering. Considerable attempts have been made to enhance the security of the computer systems because of various available software piracy and virus attacks. Preventing attacks of software will have a huge influence on economic development. Thus, it is very vital to develop approaches that protect software from threats. There are various threats such as piracy, reverse engineering, tampering etc., exploits critical and poorly protected software. Thus, thorough threat analysis and new software protection schemes, needed to protect software from analysis and tampering attacks becomes very necessary. Various techniques are available in the literature for software protection from various attacks. This paper analyses the various techniques available in the literature for software protection. The functionalities and the characteristic features are various software protection techniques have been analyzed in this paper. The main goal of this paper is to analyze the existing software protection techniques and develop an efficient approach which would overcome the drawbacks of the existing techniques.

\end{abstract}


\keywords{Software Security, Software Tampering, Tampering Attacks, Encryption, Cryptography, Decryption.}

\begin{textblock*}{18cm}(1cm,1cm) % {block width} (coords) 
\textcolor{GJBlue}{\LARGE Global Journals \LaTeX\ JournalKaleidoscope\texttrademark}
\end{textblock*}

\begin{textblock*}{18cm}(1.4cm,1.5cm) % {block width} (coords) 
\textcolor{GJBlue}{\footnotesize \\ Artificial Intelligence formulated this projection for compatibility purposes from the original article published at Global Journals. However, this technology is currently in beta. \emph{Therefore, kindly ignore odd layouts, missed formulae, text, tables, or figures.}}
\end{textblock*}


\let\tabcellsep& 	 	 		 
\section[{INTRODUCTION}]{INTRODUCTION}\par
oftware protection has become one of the attractive domains with high commercial interest, from major software vendors to content providers which also comprises of the movie and music recording industries. The digital data of the software is especially at tremendous risk.\par
Confidentiality and data authenticity are two important concepts in security. Confidentiality provides data secrecy of a message and data authenticity protects the integrity of the message. Software protection falls between the domains of security, cryptography \hyperref[b32]{[30]} and engineering among other disciplines.\par
The software protection technique mainly concentrates on protecting software from various attacks such as reverse engineering by obfuscation, modification by software tamper resistance, program-based attacks by software diversity, and BORE -breakonce run everywhere -attacks by architectural design \hyperref[b1]{[2]}.\par
Protecting content needs protecting the software which processes the content. Copy protection is another form of software protection to the level that it needs several same protections against reverse engineering and software tampering.\par
Protecting code from attacks such as reverse engineering  {\ref [32]}, analysis and tampering attacks is one of the main concerns for software providers. If a competitor succeeds in obtaining and reusing a algorithm, it would result in major issue. Moreover, secret keys, con fidential data or security related code are not planned to be examined, extracted, stolen or corrupted. Even if legal actions such as patenting and cyber crime laws are in place, these techniques remain a significant threat to software developers and security expert.\par
This paper provides a survey on software protection and related areas which would encourage further research. This paper also provides a number of viewpoints, discuss challenges and suggest future directions. 
\section[{II.}]{II.} 
\section[{LITERATURE SURVEY}]{LITERATURE SURVEY}\par
Piracy, reverse engineering and tampering have been the major software threats. Collberg et al. \hyperref[b0]{[1]} provided a compact outline of the approaches to protect against these threats. Software watermarking for instance focuses on protecting software reactively against piracy. It usually implants hidden, distinctive data into an application in such a way that it can be guaranteed that a particular software instance belongs to a particular individual or company. When this data is distinctive for each example, one can mark out copied software to the source unless the watermark is smashed. The second group, code obfuscation, protects the software from reverse engineering attacks. This approach comprises of one or more program alterations that alter a program in such a way that its functionality remains identical but analyzing the internals of the program becomes very tough. A third group of approaches focuses to make software "tamper-proof", overflow attacks to look for the right of entry to systems, steal secrets and patch on the available binaries to hide detection. Every binary has intrinsic weakness that attackers may make use of. In this paper Srinivasan et al., \hyperref[b2]{[3]} proposed three orthogonal techniques; each of which offers a level of guarantee against malware attacks beyond virus detectors. The techniques can be incorporated on top of normal defenses and can be integrated for tailoring the level of desired protection. The author tries to identify alternating solutions to the issue of malware resistance. The techniques used are adding diversity or randomization to data address spaces, hiding significant data to avoid data theft and the utilization of distant evidence to detect tampering with executable code.\par
This paper focuses on the protection of a software program and the content that the program protects. There have been billions of dollars spent each year by the industries especially for software piracy and digital media piracy. The achievement of the content/software security in a huge segment is based on the ability of protecting software code against tampering and identifying the attackers who issue the pirate copies. In this paper, Hongxia Jin et al., \hyperref[b3]{[4]} concentrates on the attacker identification and forensic examination. The author discussed about a proactive detection approach for defeating an on-going attack before the cooperation has occurred. The author also describes another detection approach for postcompromise attacker identification. Especially, the author takes into account the real world scenarios where the application programs connect with their vendors every so often, and where a discovery of attacking can bar a hacker user from further business.\par
Code obfuscation focuses to protect code against both static and dynamic study and there exists another approach to protect against code analysis, namely self-modifying code. This approach provides the opportunity to create code at runtime, rather than changing it statically. Practically, self-modifying code is highly restricted to the monarchy of viruses and malware. Yet, some publications regard self-modifying code as an approach to protect against static and dynamic analysis. Madou et al., \hyperref[b5]{[5]} for instance regard dynamic code generation. The author proposed an approach where functions are generated earlier to their first call at runtime. Moreover, clustering is presented in such a way that a general template can be utilized to generate each function in a cluster, carrying out a least amount of alterations. In order to protect the constant `edits' against dynamic analysis, the authors suggested the usage of a Pseudo Random Number Generator (PRNG). The decryption at runtime technique is equal with code generation, apart from the fact that the decryption key can depend on other code, rather than on a PRNG. Moreover, it lessens re-encryption the viability of code during execution, while Madou et al. do not clearly protect a function template after the function executed.\par
Protecting code against tampering can be regarded as the issue of data authenticity, where 'data' refers to the program code. Aucsmith \hyperref[b6]{[6]} explained an approach to implement tamper resistant software. The approach protects against analysis and tampering. The author utilizes small, armored code segments, also called Integrity Verification Kernels (IVKs), to validate code integrity. These IVKs are protected via encryption and digital signatures in such a way that it is tough to modify them. Morover, these IVKs can communicate with each other and across applications via an integrity verification protocol.\par
Chang et al. \hyperref[b7]{[7]} proposed an approach depending on software guards. The protection technique of the author is chiefly based on a composite network of software guards which mutually validate each other's consistency and that of the program's critical sections. A software guard is a small segment of code carrying out particulars tasks, e.g. check summing or repairing. When check summing code discovers a modification, repair code is capable to undo this malevolent tamper challenge. The security of the approach depends partly on hiding the obfuscated guard code and the complexity of the guard network.\par
Horne et al. \hyperref[b8]{[8]} described on the same idea of Chang et al. \hyperref[b7]{[7]} and proposed `testers', small hashing functions that validate the program at runtime. These testers can be integrated with embedded software watermarks to result in a unique, watermarked, selfchecking program. Other related research is unconscious hashing \hyperref[b9]{[9]} which interweaves hashing instructions with program instructions and which is capable of proving whether a program is operated correctly. Recently, Ge et al. \hyperref[b10]{[10]} presented a research work on control flow based obfuscation. Although the authors contributed to obfuscation, the control flow data is protected with an Aucsmith-like tamper resistance approach.\par
Buffer overflow utilization is a one of the notable threat to software security. In order to lessen the threat, Visual studio C/C++compiler facilitates to randomize the addresses of the compiled program in initialization time and to implant security stack guards by the compiled program in run time. Yongdong Wu \hyperref[b11]{[11]} upgrades the compiler by raising the compiled program's abilities in the following features: i.\par
Protects a frame pointer from tampering without additional cost; ii.\par
Defeats the attack which tampers 1-2 bytes of a protected region at a very low cost;\par
iii. Checks the indirect function call against the prologue pattern so as to lessen the probability of software crash in case of being attacked.\par
The experiments demonstrated the enhancement on Microsoft Visual Studio in generating secure and robust software.\par
Cappaert et al., \hyperref[b12]{[12]} presented a partial encryption approach depending on a code encryption approach \hyperref[b12]{[12]}, \hyperref[b13]{[13]}. In order to utilize the partial encryption approach, binary codes are partitioned into small segments and encrypted. The encrypted binary codes are decrypted at runtime by users. Thus, the partial encryption overcomes the faults of illuminating all of the binary code at once as only the essential segments of the code are decrypted at runtime.\par
Jung et al.,  {\ref [14]} presented a code block encryption approach to protect software using a key chain. Jung's approach uses a unit block, that is, a fixed-size block, rather than a basic block, which is a variable-size block. Basic blocks refer to the segments of codes that are partitioned by control transformation operations, such as "jump" and "branch" commands, in assembly code \hyperref[b12]{[12]}, \hyperref[b13]{[13]}. Jung's approach is very similar to Cappaert's scheme. Jung's approach tries to solve the issue of Cappaert's approach. If a block is invoked by more than two preceding blocks, the invoked block is duplicated.\par
Unauthorized reverse-engineering of algorithms is a major issue for the software industry. Reverseengineers look for security holes in the program to make use of competitors' vital approaches. In order to discourage reverse-engineering, developers use a wide range of static software protections to obfuscate their programs. Metamorphic software protections include another layer of protection to conventional static obfuscation approaches, forcing reverse-engineers to alter their attacks as the protection changes. Program fragmentation incorporates two obfuscation approaches, over viewing and obfuscated jump tables, into a novel, metamorphic protection. Segments of code are eliminated from the chief program flow and placed throughout memory, minimizing the locality of the program. These fragments move and are called using obfuscated jump tables which makes program execution hard. This research by Birrer et al., \hyperref[b15]{[15]} evaluates the performance overhead of a program fragmentation engine and offers examination of its efficiency against reverse-engineering approaches. The experimental results show that program fragmentation has low overhead and is an effective approach to obscure disassembly of programs through two common disassembler/debugger tools.\par
Song-kyoo Kim \hyperref[b16]{[16]} deals with the stochastic maintenance approach for the software protection through the closed queueing system with the untrustworthy backups. The technique shows the theoretical software protection approach in the security viewpoint. If software application modules are denoted as backups under proposed structural design, the system can be overcome through the stochastic maintenance model with chief untrustworthy and random auxiliary spare resources with replacement strategies. Additionally, the practical approach of technology improvement in software engineering through the technology innovation tool called TRIZ.\par
Zeng Min et al., \hyperref[b17]{[17]} considered the supple manufacturing venture networks data security and software protection and proposed an enterprise classified data security and software protection solution, to describe the enterprise data storage, transmission and application software installation authorization, license and so on, presented a time and machine code depending on MD5, AES encryption algorithm dynamic secret key the encryption approach, to protect the enterprise data confidentiality, integrity and availability, to attain the software installation restrictions and using restrictions.\par
Kent \hyperref[b20]{[18]} proposed a software protection technique which deals with the security needs of software vendors like protection from software copying and modification (e.g. physical attacks by users, or program-based attacks). Techniques proposed to handle these requirements include physical Tamper-Resistant Modules (TRMs) and cryptographic techniques. One approach comprises of using encrypted programs, with instructions decrypted immediately preceding to execution. Kent also observed the dual of this issue like user needs that externallysupplied software be confined in its access to local resources.\par
Gosler's software protection survey \hyperref[b21]{[19]} investigates circa-1985 protection technologies which comprise of hardware security tools (e.g. dongles), floppy disc signatures (magnetic and physical), analysis denial approaches (e.g. anti-debug approaches, checksums, encrypted code) and slowing down interactive dynamic analysis. The main goal is on software copy prevention, but Gosler observed that the potency of resisting copying should be balanced by the potency of resisting software analysis (e.g. reverse engineering to study where to alter software and for protecting proprietary approaches) and that of software modification (to bypass security checks). Useful tampering is generally headed by reverse engineering.\par
Gosler also described that one should anticipate that an opponent can execute dynamic analysis on the target software without discovery (e.g. using in-circuit emulators and simulators) and that in January 2012 such scenario, due to repeated experiments, one should anticipate the opponent to win. Thus, the main goal of practical resistance is to construct such experiments "enormously arduous". Another proposal \hyperref[b21]{[19]} is cycling software (e.g. through some forced obsolescence) at a rate faster than an opponent can break it; this expects the model of forced software renewal (Jakobsson and Reiter \hyperref[b22]{[20]}), who suggested hopeless pirates via forced updates and software aging). This technique is suitable where protection from attacks for a restricted time period suffices.\par
Herzberg and Pinter \hyperref[b23]{[21]} focused on the issue of software copy protection and presented a solution needing CPU encryption support (which was far less possible when presented almost 20 years ago, circa 1984-85). Cohen's research \hyperref[b24]{[22]} on software diversity and obfuscation is directly concentrated to software protection and offers a wide range of algorithms.\par
The subsequent practical tamper resistance system of Aucsmith \hyperref[b25]{[23]} handled similar problems by an integration of just-in-time instruction decryption, and rearranging instruction blocks at run-time to vigorously change the deals with the executing statements during program execution.\par
Several researchers have proposed techniques on software obfuscation using automated tools and code transformations \hyperref[b26]{[24,}\hyperref[b27]{25]}. One idea would be to employ language-based tools to transform a program (most easily from source code) to a functionally equivalent program which presents greater reverse engineering barriers. If implemented in the form of a precompiler, the usual portability issues can be handled by the back-end of standard compilers.\par
Collberg et al. \hyperref[b28]{[26]} provides more information regarding software obfuscation which includes descriptions about:\par
? Categorizing code transformations (e.g. control flow obfuscation, data obfuscation, layout obfuscation, preventive transformations) ? Identification of control flow changes using opaque predicates (expressions not easy for an attacker to predict, but whose worth is recognized at compilation or obfuscation time) ? Preliminary suggestions on metrics for code transformations ? Program slicing tools ? The usage of (de)aggregation of flow control or data Essential suggestions in software protection are done by Aucsmith \hyperref[b6]{[6]}, in combination with Graunke \hyperref[b25]{[23]} at Intel. Aucsmith provides tamper prevention software which prevents inspection and change, and it is highly dependent to work accurately in unfriendly situations. Architecture is suggested according to an Integrity Verification Kernel (IVK) that checks the reliability of vital code segments. The IVK architecture is self-decrypting and includes self adjustment code.\par
Software tampering prevention using selfchecking code was described by Horne et al. \hyperref[b29]{[27]}. The integrity of segments of code is tested using some code known as testers. This can be a linear hash function and a predictable hash value. If the integrity condition is not satisfied, suitable actions will be carried out so as to make the integrity condition satisfied. The attackers can be confused and it is difficult for them to hack the testers if more number of testers is used.\par
Chang and Atallah \hyperref[b30]{[28]} presented a technique with fairly extensive capacity containing a set of guards that can be programmed to perform arbitrary processes. An illustration for this is the check sum code segments for integrity checking which provides resistance against software tamper. An additional described guard function is repairing code (e.g. if a spoiled code segment is identified, downloading and installing a new version of the code section). The author also presents a technique for automatically keeping protections within code.\par
Chen et al. \hyperref[b31]{[29]} put forth oblivious hashing that engages compile-time code alterations which outcomes in the calculation of a running trace of the execution history of a complete code. In this approach a trace are considered as increasing hash values of a subset of expressions that happens inside the usual program execution.\par
Gutmann \hyperref[b32]{[30]} put forth an apparent conversation of the security concerns facing cryptographic usage in software under general-purpose operating systems, and analyzes the design difficulties in nullifying these concerns faced by using secure cryptographic co-processors.\par
Approaches Functionalities \hyperref[b0]{[1]} Outline of the approaches to protect against these threats. Software watermarking for instance focuses on protecting software reactively against piracy \hyperref[b1]{[2]} Proposed three orthogonal techniques; each of which offers a level of guarantee against malware attacks beyond virus detectors. \hyperref[b3]{[4]} Concentrates on the attacker identification and forensic examination. The author discussed about a proactive detection approach for defeating an on-going attack before the cooperation has occurred \hyperref[b5]{[5]} an approach in which functions are generated earlier to their first call at runtime \hyperref[b6]{[6]} The author utilizes small, armored code segments, also called Integrity Verification Kernels (IVKs), to validate code integrity \hyperref[b7]{[7]} The protection technique of the author is chiefly based on a composite network of software guards which mutually validate each other's consistency and that of the program's critical sections.\par
[12]\par
Presented a partial encryption approach depending on a code encryption approach \hyperref[b16]{[16]} Deals with the stochastic maintenance approach for the software protection through the closed queueing system with the untrustworthy backups \hyperref[b12]{[12]} Focused on the issue of software copy protection and presented a solution needing CPU encryption support \hyperref[b29]{[27]} Software tampering prevention using self-checking code III. 
\section[{PROBLEMS AND DIRECTIONS}]{PROBLEMS AND DIRECTIONS}\par
The theoretical results to date on software obfuscation provide software protection of considerable practical value. The impracticality of constructing a program to find out whether other software is malicious does not preclude highly valuable computer virus detection technologies, and a feasible, anti-virus industry. It is still early in the history of research in the domains of software protection and obfuscation and that several discoveries and innovations lie ahead particularly in the domains of software diversity (which are utilized are less in the present scenario), and software tamper resistance. Increased number of secure techniques for software protection is very much needed which involves public scrutiny and peer evaluation. Cappaert proposed a tamper-resistant code encryption scheme, and Jung proposed a key-chain-based code encryption scheme. However, Cappaert's scheme did not meet the security requirements for code encryption schemes, and Jung's scheme had an efficiency problem. Moreover, time cost and space cost should also be taken into consideration. To improve efficiency, support from the compiler and operating system is needed \hyperref[b21]{[19]}.\par
More open discussion of particular approaches is very much needed. Cryptography is observed to be the technique that can be incorporated in the software protection technique for improved protection. Past trends of proprietary, undislosed techniques of software obfuscation approaches similar to the early days in cryptography have to be altered.\par
For decades encryption has provided the means to hide information. In this research, the selfencrypting code is used as a means of software protection. In this research work, the concept of efficient code encryption techniques, which offers confidentiality and a method to create code dependencies that implicitly protect integrity need to be established. Moreover, several dependency schemes based on a static call graph which allow runtime code decryption simultaneous with code verification can also be used. If code is modified statically or dynamically, it will result in incorrect decryption of other code, producing a corrupted executable. Better and efficient cryptographic techniques can be integrated for better results. This research uses the encryption technique to secure software static analysis and tampering attacks.\par
IV. 
\section[{CONCLUSION}]{CONCLUSION}\par
This paper presented and discussed a survey on the protection of software because of various attacks. Several software protection techniques available in the literature are analyzed and examined. The characteristic features of the existing algorithms are thoroughly investigated in this paper. This study would facilitate in development of efficient software protection techniques. Encryption techniques can be incorporated with the existing software protection techniques to improve the overall security of the software. Code encryption schemes for protecting software against various attacks like reverse engineering and modification. Therefore, novel and efficient code encryption scheme have to be established based on an indexed table to guarantee secure key management and efficiency.\begin{figure}[htbp]
\noindent\textbf{}\includegraphics[]{image-2.png}
\caption{\label{fig_0}A}\end{figure}
 			\footnote{© 2012 Global Journals Inc. (US) Global Journal of Computer Science and Technology Volume XII Issue I Version I} 		 		\backmatter  			  				\begin{bibitemlist}{1}
\bibitem[Zeng Min]{b17}\label{b17} 	 		\textit{},  		 			Zeng Min 		.  		 	 
\bibitem[Qiong-Mei]{b18}\label{b18} 	 		\textit{},  		 			Liu Qiong-Mei 		.  		 	 
\bibitem[Aucsmith and Graunke (1996)]{b25}\label{b25} 	 		\textit{},  		 			D Aucsmith 		,  		 			G Graunke 		.  	 	 		\textit{Tamper Resistant Methods and Apparatus, U.S. Patent}  		June 13 1996; issued Apr.6 1999. 5 p. 899.  	 
\bibitem[Jung et al. ()]{b14}\label{b14} 	 		‘A Code Block Cipher Method to Protect Application Programs From Reverse Engineering’.  		 			D Jung 		,  		 			H Kim 		,  		 			J G Park 		.  	 	 		\textit{J. Korea Inst. Inf. Security Cryptology}  		2008. 18  (2)  p. .  	 	 (in Korean) 
\bibitem[Srinivasan et al. ()]{b2}\label{b2} 	 		‘A Multi-factor Approach to Securing Software on Client Computing Platforms’.  		 			R Srinivasan 		,  		 			P Dasgupta 		,  		 			V Iyer 		,  		 			A Kanitkar 		,  		 			S Sanjeev 		,  		 			J Lodhia 		.  	 	 		\textit{2010 IEEE Second International Conference on Social Computing (SocialCom)},  				 (Page(s)  		2010. p. .  	 
\bibitem[Collberg et al. (1997)]{b28}\label{b28} 	 		\textit{A Taxonomy of Obfuscating Transformations},  		 			C Collberg 		,  		 			C Thomborson 		,  		 			D Low 		.  		 148.  		July 1997.  		 			Dept. Computer Science, University of Auckland 		 	 	 (Technical Report) 
\bibitem[Gutmann]{b32}\label{b32} 	 		‘An Open-source Cryptographic Coprocessor’.  		 			P Gutmann 		.  	 	 		\textit{Proc. 2000 USENIX Security Symposium},  				 (2000 USENIX Security Symposium)  		 	 
\bibitem[Collberg et al. (1998)]{b27}\label{b27} 	 		‘Breaking Abstractions and Unstructuring Data Structures’.  		 			C Collberg 		,  		 			C Thomborson 		,  		 			D Low 		.  	 	 		\textit{IEEE International Conf. Computer Languages (ICCL'98)},  				May 1998.  	 
\bibitem[Ge et al. ()]{b10}\label{b10} 	 		‘Control flow based obfuscation’.  		 			J Ge 		,  		 			S Chaudhuri 		,  		 			A Tyagi 		.  	 	 		\textit{DRM '05: Proceedings of the 5th ACM workshop on Digital rights management},  				2005. p. .  	 
\bibitem[Kim ()]{b16}\label{b16} 	 		‘Design of enhanced software protection architecture by using theory of inventive problem solving’.  		 			Song-Kyoo Kim 		.  	 	 		\textit{IEEE International Conference on Industrial Engineering and Engineering Management}  		2009. 2009.  	 
\bibitem[Jakobsson and Reiter ()]{b22}\label{b22} 	 		‘Discouraging Software Piracy Using Software Aging’.  		 			M Jakobsson 		,  		 			M K Reiter 		.  		 LNCS 2320.  	 	 		\textit{Proc. 1st ACM Workshop on Digital Rights Management},  				 (1st ACM Workshop on Digital Rights Management)  		DRM 2001. 2002. Springer. p. .  	 
\bibitem[Horne et al.]{b8}\label{b8} 	 		‘Dynamic Self-Checking Techniques for Improved Tamper Resistance’.  		 			B Horne 		,  		 			L R Matheson 		,  		 			C Sheehan 		,  		 			R E Tarjan 		.  	 	 		\textit{Proceedings of Workshop on Security and Privacy in Digital Rights},  				 (Workshop on Security and Privacy in Digital Rights)  		 	 
\bibitem[Horne et al. ()]{b29}\label{b29} 	 		‘Dynamic Self-Checking Techniques for Improved Tamper Resistance’.  		 			B Horne 		,  		 			L Matheson 		,  		 			C Sheehan 		,  		 			R Tarjan 		.  		 LNCS 2320.  	 	 		\textit{Proc. 1st ACM Workshop on Digital Rights Management},  				 (1st ACM Workshop on Digital Rights Management)  		DRM 2001. 2002. Springer. p. .  	 
\bibitem[Wu ()]{b11}\label{b11} 	 		‘Enhancing Security Check in Visual Studio C/C++ Compiler’.  		 			Yongdong Wu 		.  	 	 		\textit{WRI World Congress on WCSE '09},  				 (Page(s)  		2009. 2009. p. .  	 
\bibitem[Hongxia Jin; Lotspiech (2012)]{b3}\label{b3} 	 		 			J Hongxia Jin; Lotspiech 		.  		\textit{Forensic analysis for},  				January 2012.  	 
\bibitem[Collberg et al. (1998)]{b26}\label{b26} 	 		‘Manufacturing Cheap, Resilient, and Stealthy Opaque Constructs’.  		 			C Collberg 		,  		 			C Thomborson 		,  		 			D Low 		.  	 	 		\textit{Proc. Symp. Principles of Programming Languages (POPL'98)},  				 (Symp. Principles of Programming Languages (POPL'98))  		Jan. 1998.  	 
\bibitem[Chen et al. ()]{b9}\label{b9} 	 		‘Oblivious hashing: a stealthy software integrity veri\textunderscore cation primitive’.  		 			Y Chen 		,  		 			R Venkatesan 		,  		 			M Cary 		,  		 			R Pang 		,  		 			S Sinha 		,  		 			M Jakubowski 		.  	 	 		\textit{Information Hiding},  				2002.  	 
\bibitem[Chen et al. (2002)]{b31}\label{b31} 	 		‘Oblivious Hashing: A Stealthy Software Integrity Verification Primitive’.  		 			Y Chen 		,  		 			R Venkatesan 		,  		 			M Cary 		,  		 			R Pang 		,  		 			S Sinha 		,  		 			M Jakubowski 		.  		 LNCS 2578.  	 	 		\textit{Proc. 5th Information Hiding Workshop (IHW)},  				 (5th Information Hiding Workshop (IHW)Netherlands)  		October 2002. Springer. p. .  	 
\bibitem[Cohen]{b24}\label{b24} 	 		‘Operating System Protection Through Program Evolution’.  		 			F Cohen 		.  	 	 		\textit{Computers and Security}  		12  (6) .  	 
\bibitem[Cheng ()]{b19}\label{b19} 	 		‘Practices of agile manufacturing enterprise data security and software protection’.  		 			Wang Cheng 		.  	 	 		\textit{2nd International Conference on Industrial Mechatronics and Automation (ICIMA)},  				2010.  	 
\bibitem[Presented a code block encryption approach to protect software using a key chain tamper resistant software 14th International Symposium on Software Reliability Engineering ()]{b4}\label{b4} 	 		‘Presented a code block encryption approach to protect software using a key chain tamper resistant software’.  	 	 		\textit{14th International Symposium on Software Reliability Engineering},  				2003. 2003.  	 
\bibitem[Birrer et al. ()]{b15}\label{b15} 	 		‘Program Fragmentation as a Metamorphic Software Protection’.  		 			B D Birrer 		,  		 			R A Raines 		,  		 			R O Baldwin 		,  		 			B E Mullins 		,  		 			R W Bennington 		.  	 	 		\textit{Third International Symposium on Information Assurance and Security},  				 (Page(s)  		2007. 2007. 2007. p. .  	 	 (IAS) 
\bibitem[Kent (1980)]{b20}\label{b20} 	 		\textit{Protecting Externally Supplied Software in Small Computers},  		 			S Kent 		.  		September 1980.  	 	 (Ph.D. thesis, M.I.T.) 
\bibitem[Chang and Atallah ()]{b30}\label{b30} 	 		‘Protecting Software Code by Guards’.  		 			H Chang 		,  		 			M Atallah 		.  	 	 		\textit{Proc. 1st ACM Workshop on Digital Rights Management},  				 (1st ACM Workshop on Digital Rights Management)  		DRM 2001. 2002. Springer LNCS 2320. p. .  	 
\bibitem[Chang and Atallah ()]{b7}\label{b7} 	 		‘Protecting software codes by guards’.  		 			H Chang 		,  		 			M J Atallah 		.  	 	 		\textit{ACM Workshop on Digital Rights Managment}  		DRM 2001. 2001. 2320 p. .  	 	 (LNCS) 
\bibitem[Herzberg and Pinter (1987)]{b23}\label{b23} 	 		‘Public Protection of Software’.  		 			A Herzberg 		,  		 			S S Pinter 		.  	 	 		\textit{ACM Trans. Computer Systems}  		Nov. 1987. 5  (4)  p. 85.  	 	 (Earlier version in Crypto) 
\bibitem[Eilam ()]{b33}\label{b33} 	 		\textit{Reversing: Secrets of Reverse Engineering},  		 			E Eilam 		.  		2005. Wiley Publishing, Inc.  	 
\bibitem[Cappaert ()]{b13}\label{b13} 	 		‘Self-Encrypting Code to Protect Against Analysis and Tampering’.  		 			J Cappaert 		.  	 	 		\textit{1st Benelux Workshop Inf. Syst. Security}  		2006.  	 
\bibitem[Madou et al.]{b5}\label{b5} 	 		\textit{Software protection through dynamic code mutation},  		 			M Madou 		,  		 			B Anckaert 		,  		 			P Moseley 		,  		 			S Debray 		,  		 			B De Sutter 		,  		 			K De Bosschere 		.  		 	 
\bibitem[Gosler ()]{b21}\label{b21} 	 		‘Software Protection: Myth or Reality?’.  		 			J Gosler 		.  	 	 		\textit{Advances in Cryptology -CRYPTO'85},  				1985. Springer-Verlag LNCS. 218 p. .  	 
\bibitem[Ogiso et al. (2002)]{b1}\label{b1} 	 		\textit{Software Tamper Resistance Based on the Difficulty of Interprocedural Analysis},  		 			T Ogiso 		,  		 			U Sakabe 		,  		 			M Soshi 		,  		 			A Miyaji 		.  		August 2002. Korea.  	 	 (3rd Workshop on Information Security Applications (WISA 2002) 
\bibitem[Aucsmith ()]{b6}\label{b6} 	 		‘Tamper resistant software: an implementation. Information Hiding’.  		 			D Aucsmith 		.  	 	 		Lecture Notes in Computer Science  		1996. 1174 p. .  	 
\bibitem[Cappaert ()]{b12}\label{b12} 	 		‘Toward Tamper Resistant Code Encryption: Practice and Experience’.  		 			J Cappaert 		.  	 	 		\textit{LNCS}  		2008. 4991 p. .  	 
\bibitem[Collberg and Thomborson ()]{b0}\label{b0} 	 		‘Watermarking, tamper-proofing, and obfuscation -tools for software protection’.  		 			C S Collberg 		,  		 			C Thomborson 		.  	 	 		\textit{IEEE Transactions on Software Engineering}  		2002.  (8)  p. .  	 
\end{bibitemlist}
 			 		 	 
\end{document}
