{
  "issue_key": "vol06-no1-2018",
  "volume": 6,
  "number": 1,
  "season": "Autumn 2018",
  "year": 2018,
  "sequence": 11,
  "type": "review-article",
  "section": "Review Article",
  "title": "A Developer’s Guide to Enhance Software Security",
  "subtitle": null,
  "slug": "a-developer-s-guide-to-enhance-software-security",
  "corporate_author": null,
  "authors": [
    {
      "given_name": "Mahin",
      "family_name": "Talukder",
      "credentials": null,
      "affiliation": "London Churchill College",
      "email": null,
      "orcid": null,
      "is_corresponding": false,
      "sequence": 1
    }
  ],
  "abstract": "To enhance software security a number of approaches have been introduced by computer security researchers. Code Obfuscation is one of the approaches widely used by developers to protect software code. Code Obfuscation increases the complexity of the code which makes the code harder to understand and cannot be processed without interpretation. Program slicing works by finding the parts of a program relevant to the value of a chosen set of variables at some chosen point in a program. A slice is constructed by deleting the parts of the program that are irrelevant to those values. Code obfuscation and program slicing are two different areas of research. Code obfuscation and program slicing provide different techniques for software engineering. These engineering approaches are welcomed in various business organization to protect intellectual property embedded in software algorithms. In this paper the author discusses the current state of art in the areas of program obfuscation and program slicing. In addition, a number of approaches are discussed in respect of software security that should be considered. It is argued that program slicing in obfuscated code would provide a better understanding and approach to software security in commercial business.",
  "keywords": [
    "computer security",
    "code obfuscation",
    "computer programming",
    "program slicing",
    "software developments",
    "software security"
  ],
  "first_page": 79,
  "last_page": 92,
  "pdf_start": 80,
  "pdf_end": 93,
  "references": [
    {
      "ordinal": 1,
      "raw_text": "Binkley, D. et al. (2014) ‘ORBS: language-independent program slicing’, in Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering - FSE 2014. New York, New York, USA: ACM Press, pp. 109–120. doi: 10.1145/2635868.2635893.",
      "doi": "10.1145/2635868.2635893",
      "markdown": "Binkley, D. *et al.* (2014) ‘ORBS: language-independent program slicing’, in *Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering - FSE 2014*. New York, New York, USA: ACM Press, pp. 109–120. doi: 10.1145/2635868.2635893."
    },
    {
      "ordinal": 2,
      "raw_text": "Chow, S. et al. (2001) ‘An Approach to the Obfuscation of Control-Flow of Sequential Computer Programs’, in. Springer, Berlin, Heidelberg, pp. 144–155. doi: 10.1007/3-540-45439-X_10.",
      "doi": "10.1007/3-540-45439-X_10",
      "markdown": "Chow, S. *et al.* (2001) ‘An Approach to the Obfuscation of Control-Flow of Sequential Computer Programs’, in. Springer, Berlin, Heidelberg, pp. 144–155. doi: 10.1007/3-540-45439-X_10."
    },
    {
      "ordinal": 3,
      "raw_text": "Collberg, C. and Nagra, J. (2010) Surreptitious software : obfuscation, watermarking, and tamperproofing for software protection. Addison-Wesley.",
      "doi": null,
      "markdown": "Collberg, C. and Nagra, J. (2010) *Surreptitious software : obfuscation, watermarking, and tamperproofing for software protection*. Addison-Wesley."
    },
    {
      "ordinal": 4,
      "raw_text": "Collberg, C., Thomborson, C. and Low, D. (1997) A Taxonomy of Obfuscating Transformations. Available at: https://researchspace.auckland.ac.nz/bitstream/handle/2292/3491/TR148.pdf (Accessed: 17 September 2018).",
      "doi": null,
      "markdown": "Collberg, C., Thomborson, C. and Low, D. (1997) *A Taxonomy of Obfuscating Transformations*. Available at: https://researchspace.auckland.ac.nz/bitstream/handle/2292/3491/TR148.pdf (Accessed: 17 September 2018)."
    },
    {
      "ordinal": 5,
      "raw_text": "Davida, G. et al. (2001) Information security : 4th International Conference, ISC 2001, Malaga, Spain, October 1-3, 2001 : proceedings, Proceedings of the 4th International Conference on Information Security. Springer. Available at: https://dl.acm.org/citation.cfm?id=744507 (Accessed: 17 September 2018).",
      "doi": null,
      "markdown": "Davida, G. *et al.* (2001) *Information security : 4th International Conference, ISC 2001, Malaga, Spain, October 1-3, 2001 : proceedings*, *Proceedings of the 4th International Conference on Information Security*. Springer. Available at: https://dl.acm.org/citation.cfm?id=744507 (Accessed: 17 September 2018)."
    },
    {
      "ordinal": 6,
      "raw_text": "Davis, J. C. (1998) ‘Protecting intellectual property in cyberspace’, IEEE Technology and Society Magazine, 17(2), pp. 12–25. doi: 10.1109/44.682891.",
      "doi": "10.1109/44.682891",
      "markdown": "Davis, J. C. (1998) ‘Protecting intellectual property in cyberspace’, *IEEE Technology and Society Magazine*, 17(2), pp. 12–25. doi: 10.1109/44.682891."
    },
    {
      "ordinal": 7,
      "raw_text": "Katti, A. and Terdal, S. (2010) Program Slicing for Refactoring: Static Slicer using Dynamic Analyser, International Journal of Computer Applications. Available at: https://www.ijcaonline.org/volume9/number6/pxc3871869.pdf (Accessed: 17 September 2018).",
      "doi": null,
      "markdown": "Katti, A. and Terdal, S. (2010) *Program Slicing for Refactoring: Static Slicer using Dynamic Analyser*, *International Journal of Computer Applications*. Available at: https://www.ijcaonline.org/volume9/number6/pxc3871869.pdf (Accessed: 17 September 2018)."
    },
    {
      "ordinal": 8,
      "raw_text": "Kim, H. and Joao, J. A. (2006) ‘Diverge-Merge Processor (DMP): Dynamic Predicated Execution of Complex Control-Flow Graphs Based on Frequently Executed Paths’. doi: 10.1109/MICRO.2006.20.",
      "doi": "10.1109/MICRO.2006.20",
      "markdown": "Kim, H. and Joao, J. A. (2006) ‘Diverge-Merge Processor (DMP): Dynamic Predicated Execution of Complex Control-Flow Graphs Based on Frequently Executed Paths’. doi: 10.1109/MICRO.2006.20."
    },
    {
      "ordinal": 9,
      "raw_text": "Lyu, M. R. and Kanoun, K. (1996) Handbook of software reliability engineering, Handbook of software reliability engineering. IEEE Computer Society Press. Available at: https://dl.acm.org/citation.cfm?id=239433 (Accessed: 19 September 2018).",
      "doi": null,
      "markdown": "Lyu, M. R. and Kanoun, K. (1996) *Handbook of software reliability engineering*, *Handbook of software reliability engineering*. IEEE Computer Society Press. Available at: https://dl.acm.org/citation.cfm?id=239433 (Accessed: 19 September 2018)."
    },
    {
      "ordinal": 10,
      "raw_text": "Schrittwieser, S. et al. (2015) ‘4 Protecting Software through Obfuscation: Can It Keep Pace with Progress in Code Analysis?’, ACM Comput. Surv, 49(4). doi: 10.1145/0000000.0000000.",
      "doi": null,
      "markdown": "Schrittwieser, S. *et al.* (2015) ‘4 Protecting Software through Obfuscation: Can It Keep Pace with Progress in Code Analysis?’, *ACM Comput. Surv*, 49(4). doi: 10.1145/0000000.0000000."
    },
    {
      "ordinal": 11,
      "raw_text": "Semantic Designs: Source Code Obfuscators (2018) Semantic Designs. Available at: http://www.semdesigns.com/Products/Obfuscators/index.html?Home=Main (Accessed: 21 February 2018).",
      "doi": null,
      "markdown": "*Semantic Designs: Source Code Obfuscators* (2018) *Semantic Designs*. Available at: http://www.semdesigns.com/Products/Obfuscators/index.html?Home=Main (Accessed: 21 February 2018)."
    },
    {
      "ordinal": 12,
      "raw_text": "Späth, J., Ali, K. and Bodden, E. (2017) ‘IDEal: Efficient and Precise Alias-Aware Dataflow Analysis’, Proceedings of the ACM on Programming Languages, 1(OOPSLA), pp. 1–27. doi: 10.1145/3133923.",
      "doi": "10.1145/3133923",
      "markdown": "Späth, J., Ali, K. and Bodden, E. (2017) ‘IDEal: Efficient and Precise Alias-Aware Dataflow Analysis’, *Proceedings of the ACM on Programming Languages*, 1(OOPSLA), pp. 1–27. doi: 10.1145/3133923."
    },
    {
      "ordinal": 13,
      "raw_text": "The International Obfuscated C Code Contest (1997). Available at: https://www.ioccc.org/index.html#news (Accessed: 17 September 2018).",
      "doi": null,
      "markdown": "*The International Obfuscated C Code Contest* (1997). Available at: https://www.ioccc.org/index.html#news (Accessed: 17 September 2018)."
    },
    {
      "ordinal": 14,
      "raw_text": "Tigress Transformations (2017). Available at: http://tigress.cs.arizona.edu/transformPage/index.html#other (Accessed: 8 March 2018).",
      "doi": null,
      "markdown": "*Tigress Transformations* (2017). Available at: http://tigress.cs.arizona.edu/transformPage/index.html#other (Accessed: 8 March 2018)."
    },
    {
      "ordinal": 15,
      "raw_text": "Udupa, S. K., Debray, S. K. and Madou, M. (2005) ‘Deobfuscation: Reverse Engineering Obfuscated Code’, in 12th Working Conference on Reverse Engineering (WCRE’05). IEEE, pp. 45–54. doi: 10.1109/WCRE.2005.13.",
      "doi": "10.1109/WCRE.2005.13",
      "markdown": "Udupa, S. K., Debray, S. K. and Madou, M. (2005) ‘Deobfuscation: Reverse Engineering Obfuscated Code’, in *12th Working Conference on Reverse Engineering (WCRE’05)*. IEEE, pp. 45–54. doi: 10.1109/WCRE.2005.13."
    },
    {
      "ordinal": 16,
      "raw_text": "Wang, Y., Gross, M. L. and Taylor, J.-S. (2001) ‘Use of a Combined Enzymatic Digestion/ESI Mass Spectrometry Assay To Study the Effect of TATA-Binding Protein on Photoproduct Formation in a TATA Box †’, Biochemistry, 40(39), pp. 11785–11793. doi: 10.1021/bi0111552.",
      "doi": "10.1021/bi0111552",
      "markdown": "Wang, Y., Gross, M. L. and Taylor, J.-S. (2001) ‘Use of a Combined Enzymatic Digestion/ESI Mass Spectrometry Assay To Study the Effect of TATA-Binding Protein on Photoproduct Formation in a TATA Box †’, *Biochemistry*, 40(39), pp. 11785–11793. doi: 10.1021/bi0111552."
    }
  ],
  "notes": [],
  "figures": [
    {
      "kind": "figure",
      "file": "figures/fig-01-p83.png",
      "caption": "Figure 1 Control-flow Obfuscation (The International Obfuscated C Code Contest, 1997)",
      "pdf_page": 83,
      "text_in_image": null
    },
    {
      "kind": "figure",
      "file": "figures/fig-02-p84.png",
      "caption": "Figure 2 flattening control-flow transformation (Wang, Gross and Taylor, 2001)",
      "pdf_page": 84,
      "text_in_image": null
    },
    {
      "kind": "figure",
      "file": "figures/fig-03-p85.png",
      "caption": "Figure 3 Data Obfuscation (Schrittwieser et al., 2015)",
      "pdf_page": 85,
      "text_in_image": null
    },
    {
      "kind": "figure",
      "file": "figures/fig-04-p89.png",
      "caption": "Figure 4 Control flow graph (Kim and Joao, 2006)",
      "pdf_page": 89,
      "text_in_image": null
    },
    {
      "kind": "figure",
      "file": "figures/fig-05-p91.png",
      "caption": "Figure 5 ORBS Algorithms (Binkley et al., 2014)",
      "pdf_page": 91,
      "text_in_image": null
    }
  ],
  "files": {
    "html": "index.html",
    "body_markdown": "body.md",
    "pdf": "article.pdf"
  },
  "word_count": 3959,
  "conversion_warnings": [
    "ORBS property 4 (PDF p.90) begins with a tiny inline image of the formula ‘∀I ∈ I’; transcribed as text (∀*I* ∈ *I*) — please check against the PDF.",
    "PDF p.89: the sentence ending ‘…and the control flow makes’ continues at the top of the right column (‘predictions. Thus, program control flow is examined…’), after the ‘Data flow analysis’ bullets; it has been rejoined to its own paragraph.",
    "Schrittwieser et al. (2015) prints a placeholder DOI ‘10.1145/0000000.0000000’; kept in the text but doi set to null.",
    "Wang, Gross and Taylor (2001) — cited for the flattening control-flow figure — is a biochemistry article in the printed reference list (likely a wrong citation by the author); kept as printed.",
    "Several reference URLs/DOIs were printed broken across lines with stray spaces and were rejoined.",
    "Heading hierarchy inferred from content (the PDF mixes 10pt and 11pt bold headings)."
  ],
  "manifest_notes": "State-of-the-art review of code obfuscation and program slicing (classified review-article). Affiliation from Contributors bio ('active member of the IT and Monitoring team of London Churchill College'; also 'currently undertaking PHD studies at the University of East London'; MSc Kent, BSc Cardiff Metropolitan). Figures 1-5 are raster images with Bold captions below (PDF 83, 84, 85, 89, 91). PDF 90 has a tiny inline image inside a formula. References PDF 93 include DOIs.",
  "source": {
    "pdf": "vol06-no1-2018.pdf",
    "ocr": false
  },
  "reviewed": true
}
