<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Using Text Classi cation Methods to Detect Malware</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Eoghan Cunningham</string-name>
          <email>eoghan.cunningham@ucdconnect.ie</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ois n Boydell</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Cormac Doherty</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Benjamin Roques</string-name>
          <email>benjamin.roquesg@ucd.ie</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Quan Le</string-name>
          <email>quan.leg@ucd.ie</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Centre for Applied Data Analytics Research (CeADAR), University College Dublin</institution>
          ,
          <country country="IE">Ireland</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Centre for Cybersecurity &amp; Cybercrime Investigation (CCI), University College Dublin</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper we propose using text classi cation to detect malware. In our approach, we convert each binary executable to an assembly program, then use text analytics to classify whether the code is malicious or not. Using random forests as the classi cation model we achieve an F1 accuracy of 86%. Furthermore, to achieve this performance we only examined a limited portion of each assembly program. Our ndings allow the development of malware detectors with fast responses as traditionally malware detectors need to parse the whole binary before making the decision. It also opens up the possibilities of using complex classi cation models like deep learning to detect malicious programs through analyzing code semantic.</p>
      </abstract>
      <kwd-group>
        <kwd>machine learning</kwd>
        <kwd>text classi cation</kwd>
        <kwd>cybersecurity</kwd>
        <kwd>malware</kwd>
        <kwd>reverse engineering</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Malware - software written with malicious intent - is a rapidly growing problem in
cyber-security. In 2018 alone Symantec reported 246 million new malware variants
[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The scale of this threat means that there is an urgent need to develop accurate
as well as e cient classi cation tools for automatically detecting malware.
      </p>
      <p>
        Most current methods for malware detection use signature based approaches to
identify malware already described by human analysts or by behaviour analysis through
generic heuristics detection [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. For example, YARA rules [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] are a set of pattern
matching rules, similar to regular expressions, designed to help malware researchers to identify
and classify malware. They are constructed by malware analysts to match user de ned
patterns (binary or text) inside malware samples. When a new sample is discovered,
if the sample matches an already existing YARA rule, then it can be classi ed to the
corresponding malware family. However, these approaches are time consuming, require
a high level of domain expertise, and can only be developed when the malware has
already been identi ed and agged; as such there is a need to develop tools which can
learn to detect new malware and malware variants automatically. This has stimulated
research into applying machine learning to the malware detection task.
      </p>
      <p>
        In this work we investigate the use of text classi cation methods to detect malware.
We convert each input example, in the form of executable machine code in raw binary
format, into an assembly program i.e. a representation of the underlying sequence of
processor instructions. This static feature extraction is computationally e cient since
it does not require running the executable, and the assembly code is a more amenable
representation of an executable's behaviour as compared to other static analysis
methods such as working with raw byte code sequences [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. We aim to investigate the use of
a portion of code instead of the whole assembly program to build malware detectors, as
using only a portion of the program as input will allow the development of fast malware
detectors, besides other bene ts. Our contribution in this work is the analysis of how
the performance of text classi ers vary with the number of assembly code instructions
used to represent each binary. We nd that the performance of classi ers trained in
this way is relatively stable across a wide range of instruction sequence lengths, which
shows that it is possible to develop very fast malware detection tools with high accuracy
using only a small input data size.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        In this section we review literature on malware classi cation using disassembled
executable code. For these works, a disassembler like IDAPro [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], Radare2 [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], or Ghidra
[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is used to convert binary executable code into a sequence of assembly instructions
- each instruction includes an opcode (an assembly command) and the possible
parameters that the command operates on. The next step is to convert the sequence of
instructions into a sequence of tokens from a vocabulary - each instruction could be
considered as a token, or the researchers may choose to keep only the opcode of each
instruction as a token to reduce the token vocabulary size. Further feature extraction
methods can then be applied on each sequence of tokens before being used as input to
train a malware classi er.
      </p>
      <p>
        The rst group of works use n-gram (sequences of n consecutive tokens) statistics
from the assembly code as input features for a classi er. In [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], the authors calculated
the frequencies of bi-grams of opcodes, and then applied feature selection to keep only
the 1,000 most important bi-gram opcodes sequences as input. They trained a number
of popular classi ers on their dataset of 1,000 malware and 1,000 benign example
binaries; and reported an accuracy of more than 90%. In [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] the authors studied
di erent tokenizing approaches applied to the assembly code before extracting n-gram
features to train a linear classi er. The author reported low accuracy of up to 77%.
      </p>
      <p>
        The second group of works use generative models - e.g. Hidden Markov Models
(HMMs) - to model the relationships over sequences of instructions. In [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], the authors
trained a HMM for each of multiple malware families, then a test malware sample would
be assigned to the family whose HMM gave it the highest score. In [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] the authors use
HMMs to detect metamorphic viruses - malware which evades detection by inserting
junk codes in its body.
      </p>
      <p>
        Recently Deep Learning [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] has been emerging as a new classi cation model which
can be applied across many diverse problem domains { including malware classi cation
{ due to its ability to learn e cient task based feature extraction given a dataset of
input-label pairs. In [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] a convolutional neural network (CNN) on top of an opcode
embedding layer was trained on opcode sequences to detect whether an android app
was malware or not, and it achieved a performance of 87% accuracy and 86% macro
average F1 score on their large dataset con guration. In [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], a CNN was trained on
one-hot encoded opcode sequences to classify malware into one of 9 families, with the
neural network obtaining 91% F1 accuracy. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] also train a CNN on opcode sequences
through an opcode embedding layer to detect malware. Due to le size restriction
the author split each assembly program into chunks of 10,000 opcode sequences and
trained them independently; the performance of the neural network was not reported
independently but as a component of an ensemble of classi ers.
      </p>
      <p>In reviewing the literature, we notice that there is a lack of analysis of the
effects of choosing di erent numbers of instructions from the assembly program on the
performance of the classi ers. Another observation is that complex models like neural
networks cannot easily process large assembly programs in whole due to memory and
computing power constraints, which informs our work on using a subset of the rst n
instructions from each sample.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Methods</title>
      <p>3.1</p>
      <sec id="sec-3-1">
        <title>Dataset</title>
        <p>There is a lack of standardised datasets used across the malware research community,
not least in part due to the issue of distributing known malicious executables as well
as the rapidly evolving nature of malware whereby older samples may not be
representative of malware currently in the wild. Therefore we compiled our own datasets for
our research from several sources. We used 5,000 unique malicious Microsoft Windows
portable executable les (PE Win32) provided by UCD's Centre for Cybersecurity
and Cybercrime Investigation (CCI). This collection was compiled over an eighteen
month period from publicly available sources of threat intelligence, predominantly
malicious URL feeds and phishing domains. These malware samples were complemented
with over 5,000 benign (non-malicious) unique samples collected from online freeware
sources, Windows ISO disk images and personal computers. In total, the dataset size
is 17 Gbytes.</p>
        <p>
          In order to evaluate the generality of our malware classi cation approach, we
created an additional test dataset of 2,000 unique malware examples from an alternative
source, VirusTotal [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], so as to account for any potential bias in the CCI sources.
Again this was complemented with 2,000 additional unique benign samples collected
from online freeware sources, Windows ISO disk images and personal computers.
3.2
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Feature Extraction</title>
        <p>
          Static Analysis is the term used for analysis of executable les, namely malware, that
does not require their execution. Many statically extracted features have been shown
to have predictive power in malware detection [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], however the focus of our work
is on using assembly instructions as produced from running a disassembler over each
executable. We used the same disassembly software, Radare2, across all the
excecutables in our datasets for consistency.
        </p>
        <p>
          Function Resolution Given the predictive power of API calls [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] and motivated
by the work in [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], we chose a feature representation for the assembly instructions
that, where possible, resolved any memory addresses to the function name being called,
according to the function import table. Any addresses that were not resolved to their
function names are replaced with a xed, unique string - 'adr' (Figure 1 ). After
preprocessing, we tokenize the assembly code at the instruction level.
Feature Representation We then considered the task of detecting malware
executables as a binary text classi cation problem. We applied the term frequency
inverse document frequency (TF-IDF) metric from the eld of information retrieval
to represent the sequences of disassembled instructions as vectors, where the terms
are represented by n-grams of assembly instructions. This prompted an analysis of the
in uence of n-gram length on vector dimensionality (vocabulary size) - a very high
dimensional feature space is likely to lead to low generalization performance due to the
curse of dimensionality [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. Figure 2 shows the dimensionality of the feature vectors
for various n-gram lengths. We chose to use n=2 (bi-grams) as this provides a balance
between a compact vocabulary size and the ability to capture consecutive instructions.
It is also the choice used in multiple research in malware classi cation [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ][
          <xref ref-type="bibr" rid="ref20">20</xref>
          ].
3.3
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Experiment Protocol</title>
        <p>We carried out our experiments in two stages, using the dataset of 10,000 samples (5,000
maleware from CCI, 5,000 benign) as described above. In all experiments classi er
performance was measured using macro averaged F1 score.</p>
        <p>
          In the rst stage we wanted to identify which classi cation algorithm performed
best for a chosen number of instructions to be disassembled of 1000, using the feature
extraction and representation approach described above. We considered six common
classi ers for our experiments: Logistic Regression, Naive Bayes, Random Forest, K
Nearest Neighbors (KNN), Linear Support Vector Machines (Linear SVM), and
XGBoost. We used the XGBoost classi er implemented in [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], and for other classi ers
we used the library scikit-learn [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]; the hyper-parameters for all classi ers were set
to default values (version 0:90 for XGBoost, and version 0:22 for scikit-learn). The
dataset was randomly split into training and test sets with a ratio of 75%:25%, and we
individually trained and evaluated all six classi ers. This was repeated ve times and
the F1 score of each repeat for each classi er was averaged.
        </p>
        <p>In the second stage we analyzed how the performance of the best performing
classi er from stage one varied when we used di erent numbers of instructions from the
disassembled executables as input. For a chosen number of instructions n inst, the
classi er was only trained (and tested) with the rst n inst disassembled instructions
from each executable. We tested various values of n inst between 250 and 20,000, and
used the same evaluation methodology as in stage one.</p>
        <p>Finally, we wanted to understand how our classi cation approach generalises to a
previously unseen malware situation. For this we trained the best performing classi er
identi ed in stage one using the number of instructions, n inst, which gave the best
performance in the second stage on the full dataset of 5,000 malware examples from
CCI and the 5,000 benign examples. We then tested the performance of our model on
a test dataset comprising 2,000 malware examples from VirusTotal, along with 2,000
new benign examples.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Results</title>
      <p>In the second experiment, we varied the number of instructions used in an assembly
program in the series of values [250, 500, 1000, 2000, 3000, 4000, 5000, 7500, 10000,
15000, 20000]. The performance of the random forests for the chosen numbers of
instructions is visualized in Figure 3. Random forests achieved the lowest average F1
score of 84.7% (84.5 % accuracy) with 1000 instructions, and it achieved the highest
average F1 score of 86.4 % (86.7 % accuracy) with 7500 instructions.</p>
      <p>As a further analysis on random forest classi er trained by assembly length of 7; 500
instructions, Figure 4 shows the time to train a random forest on a chosen number of
instructions. We carried out our experiments on using 8 cores on an Intel Xeon E5 v3
processor with 53 GB memory.</p>
      <p>For the nal test, we trained a random forest on the whole dataset and tested it on
the test set with malwares provided by VirusTotal. Our trained random forest achieved
a performance of 81% F1 score, this showed our random forest model generalized to
malware pieces from a di erent source.</p>
      <p>Discussion</p>
      <p>In the experiments our random forest classi er achieved 86.4 % macro-average F1
accuracy on a separate validation set, and 81% on a test set for the di cult scenario
where malware executables come from a separate source (VirusTotal). This compares
favourably with accuracy reported in other works, albeit on di erent datasets.
However, our nding that good performance can be achieved by looking at only the rst
7,500 instructions of the disassembled code is important. Reducing the quantity of
data that needs to be disassembled and processed allows for the development of faster
malware detectors than if the whole executable needs to be taken into account. We
also believe that our analysis of model performance vs assembly length is useful in
allowing developers to trade o model accuracy vs model speed for a speci c use case:
for example, a malware detector scanning email might need to be very fast, whilst a
detector protecting a high security network might trade speed for accuracy.</p>
      <p>We believe that our approach of preprocessing assembly instructions is useful as
it reduces the vocabulary size of tokens while preserving more information than using
opcodes alone. However an important avenue of future work would be to explore
preprocessing techniques further to reduce the vocabulary size of the tokens whilst keeping
as much relevant information as possible, and whether our approach of selecting
instructions from the start of the malware binary as opposed to other segments of the
le is optimal.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>In this paper we applied text classi cation to detect malicious programs, and we
analyzed how the performance of a malware detector changed as a function of the number
of instructions in the assembled code that it looked at. Our nding that a classi
cation model only needs to look at a small portion of the disassembled code to detect
malware opens up the possibilities to develop complex and powerful malware detection
models on disassembled code. It also allows the development of fast malware detectors,
which is necessary given the need to deal with a rapidly increasing number of malware
variants today.</p>
      <p>Acknowledgement. This research was supported by a research funding grant from
Enterprise Ireland to CeADAR.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Ghidra -</surname>
          </string-name>
          <article-title>a software reverse engineering (sre) suite of tools developed by nsa's research directorate in support of the cybersecurity mission</article-title>
          . https://ghidra-sre. org/, accessed:
          <fpage>2019</fpage>
          -09-30
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <article-title>2. Heuristic and proactive detections</article-title>
          . https://encyclopedia.kaspersky.com/ knowledge/heuristic-and
          <string-name>
            <surname>-</surname>
          </string-name>
          proactive-detections,
          <source>accessed: 2019-09-30</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <article-title>Ida pro combines an interactive, programmable, multi-processor disassembler coupled to a local and remote debugger and augmented by a complete plugin programming environment</article-title>
          . https://www.hex-rays.com/products/ida/, accessed:
          <fpage>2019</fpage>
          - 09-30
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>4. Radare2 - a free toolchain for easing several low level tasks like forensics, software reverse engineering, exploiting, debugging</article-title>
          . https://rada.re/n/radare2.html, accessed:
          <fpage>2019</fpage>
          -09-30
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Virustotal</surname>
          </string-name>
          <article-title>- free online virus, malware and url scanner</article-title>
          . https://www.virustotal. com/en, accessed:
          <fpage>2019</fpage>
          -09-30
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <article-title>6. The yara project</article-title>
          . https://virustotal.github.io/yara/, accessed:
          <fpage>2019</fpage>
          -09-30
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Biondi</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Given-Wilson</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Legay</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Puodzius</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Quilbeuf</surname>
          </string-name>
          , J.:
          <article-title>Tutorial: an overview of malware detection and evasion techniques</article-title>
          .
          <source>In: International Symposium on Leveraging Applications of Formal Methods</source>
          . pp.
          <volume>565</volume>
          {
          <fpage>586</fpage>
          . Springer (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Bishop</surname>
            ,
            <given-names>C.M.</given-names>
          </string-name>
          :
          <article-title>Pattern recognition and machine learning</article-title>
          . Springer (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guestrin</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Xgboost: A scalable tree boosting system</article-title>
          .
          <source>In: Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining</source>
          . pp.
          <volume>785</volume>
          {
          <fpage>794</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Goodfellow</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bengio</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Courville</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Deep learning</article-title>
          . MIT press (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Ki</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>H.K.</given-names>
          </string-name>
          :
          <article-title>A novel approach to detect malware based on api call sequence analysis</article-title>
          .
          <source>International Journal of Distributed Sensor Networks</source>
          <volume>11</volume>
          (
          <issue>6</issue>
          ),
          <volume>659101</volume>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Improving Existing Static and Dynamic Malware Detection Techniques with Instruction-level Behavior</article-title>
          .
          <source>Ph.D. thesis</source>
          , University of Maryland (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Kolosnjaji</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eraisha</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Webster</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zarras</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eckert</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Empowering convolutional networks for malware classi cation and analysis</article-title>
          .
          <source>In: 2017 International Joint Conference on Neural Networks (IJCNN)</source>
          . pp.
          <volume>3838</volume>
          {
          <fpage>3845</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Le</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boydell</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mac Namee</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scanlon</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Deep learning at the shallow end: Malware classi cation for non-domain experts</article-title>
          .
          <source>Digital Investigation</source>
          <volume>26</volume>
          ,
          <issue>S118</issue>
          {
          <fpage>S126</fpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Lin</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stamp</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Hunting for undetectable metamorphic viruses</article-title>
          .
          <source>Journal in computer virology 7(3)</source>
          ,
          <volume>201</volume>
          {
          <fpage>214</fpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>McLaughlin</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Martinez del Rincon</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kang</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yerima</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miller</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sezer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Safaei</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Trickel</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhao</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Doupe</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , et al.:
          <article-title>Deep android malware detection</article-title>
          .
          <source>In: Proceedings of the Seventh ACM on Conference on Data and Application Security and Privacy</source>
          . pp.
          <volume>301</volume>
          {
          <fpage>308</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Narra</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Di Troia</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Corrado</surname>
            ,
            <given-names>V.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Austin</surname>
            ,
            <given-names>T.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stamp</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Clustering versus svm for malware detection</article-title>
          .
          <source>Journal of Computer Virology and Hacking Techniques</source>
          <volume>12</volume>
          (
          <issue>4</issue>
          ),
          <volume>213</volume>
          {
          <fpage>224</fpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>O</given-names>
            <surname>`Gorman</surname>
          </string-name>
          , e.a.:
          <source>Symantec internet security threat report for 2019</source>
          . Volume XXIV (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Pedregosa</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Varoquaux</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gramfort</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Michel</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thirion</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grisel</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Blondel</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Prettenhofer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weiss</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dubourg</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          , et al.:
          <article-title>Scikit-learn: Machine learning in python</article-title>
          .
          <source>Journal of machine learning research 12(Oct)</source>
          ,
          <volume>2825</volume>
          {
          <fpage>2830</fpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Santos</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brezo</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ugarte-Pedrero</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bringas</surname>
            ,
            <given-names>P.G.</given-names>
          </string-name>
          :
          <article-title>Opcode sequences as representation of executables for data-mining-based unknown malware detection</article-title>
          .
          <source>Information Sciences</source>
          <volume>231</volume>
          ,
          <volume>64</volume>
          {
          <fpage>82</fpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Shabtai</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moskovitch</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Feher</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dolev</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Elovici</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Detecting unknown malicious code by applying classi cation techniques on opcode patterns</article-title>
          .
          <source>Security Informatics</source>
          <volume>1</volume>
          (
          <issue>1</issue>
          ),
          <volume>1</volume>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Zak</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ra</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nicholas</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>What can n-grams learn for malware detection</article-title>
          ?
          <source>In: 2017 12th International Conference on Malicious and Unwanted Software (MALWARE)</source>
          . pp.
          <volume>109</volume>
          {
          <fpage>118</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>