COMP 293A - Software Reverse Engineering - Spring 2020


Name Jeff Shafer
Office Anderson Hall 205
Phone (209) 946-2302
Email jshafer at pacific dot edu
Office Hours Video meetings via WebEx - Schedule an appointment at

Course Basics

Class Hours Tuesday, Thursday, 1:00-2:20pm in CTC 214
Prerequisites ECPE 170 with a ‘C’ or better
Textbook No textbook is required for this course.
Optional reference books may be suggested throughout the semester, and I welcome feedback on any online/print references you find useful!
Credits 3

Course Description

The objective of this course is to familiarize students with the practice of reverse engineering programs where the source code is unavailable. By this process, students can discover the specification for a given software program, thereby understanding its operation as well as any data it uses or communication protocols it employs. This knowledge is valuable for identifying and neutralizing malware on a system or discovering software vulnerabilities and patching them during the course of a security audit.

Course Learning Objectives

Upon completion of the course, students will be able to:

  • Understand best practices of reverse engineering software using static or dynamic techniques
  • Use and understand tools and techniques for reverse engineering
  • Become proficient at debugging programs, identifying misbehaving code, and understanding ways vulnerabilities can be exploited.
  • Analyze binary data and identify key characteristics and patterns of the data
  • Reverse engineer programs with the specific objective of: software specification recovery, malware analysis, or communications protocol discovery

Course Topics

The topics covered in this course include:

  • Basics of reverse engineering and its applications
  • Analyzing compiled code
  • Sandboxing executables and runtime analysis
  • Compression and obfuscation techniques
  • Using disassemblers and debuggers to aid reverse engineering
  • Dynamic analysis tools and techniques for reverse engineering
  • Malware analysis
  • Communications protocol analysis

Assignments and Examinations

This course will be composed of the following elements:

  • Laboratory Assignments (in-class and take-home) (50% of course grade)
  • Lab Practical Exams (25% of course grade)
  • Projects (25% of course grade)

Attendance Policy

Regular class attendance is strongly encouraged.  Students who miss class meetings are responsible for keeping up with the class.  The course Canvas site will be used to assist in instruction. You are responsible for keeping up with projects, labs, lecture notes, announcements, and other materials that may be posted there.

Grading Policy

Grades for the course are assigned on the scale below:

Grade A A- B+ B B- C+ C C- D+ D F
Points > 93 93-90 < 90-87 < 87-83 < 83-80 < 80-77 < 77-73 < 73-70 < 70-67 < 67-60 60

Student Work

Please note that copies of student work may be retained by the instructor to assess how the learning objectives of the course are met. Further, the MOSS (Measure of Software Similarity) system may be used to compare student submissions in an automated fashion.

Honor Code

The Honor Code at the University of the Pacific calls upon each student to exhibit a high degree of maturity, responsibility, and personal integrity. Students are expected to:

  • Act honestly in all matters
  • Actively encourage academic integrity
  • Discourage any form of cheating or dishonesty by others
  • Inform the instructor and appropriate university administrator if she or he has a reasonable and good faith belief and substantial evidence that a violation of the Academic Honesty Policy has occurred.

Violations will be referred to and investigated by the Office of Student Conduct and Community Standards. If a student is found responsible, it will be documented as part of her or his permanent academic record. A student may receive a range of penalties, including failure of an assignment, failure of the course, suspension, or dismissal from the University. The Academic Honesty Policy is located in Tiger Lore and online at

Accommodations for Students with Disabilities

If you are a student with a disability who requires accommodations, please contact the Director of the Office of Services for Students with Disabilities (SSD) for information on how to obtain an Accommodations Request Letter.

3-Step Accommodation Process:

  1. Student meets with the SSD Director and provides documentation and completes registration forms.
  2. Student requests accommodation(s) each semester by completing the Request for Accommodations Form.
  3. Student arranges to meet with his/her professors to discuss the accommodation(s) and to sign the Accommodation Request Letter

To ensure timeliness of services, it is preferable that you obtain the accommodation letter(s) from the Office of SSD during the first week of class. After the instructor receives the accommodation letter, please schedule a meeting with the instructor during office hours or some other mutually convenient time to arrange the accommodation(s).

The Office of Services for Students with Disabilities is located in the McCaffrey Center, Rm. 137.  Phone: 209-946-3221 Email: Online:  

Nondiscrimination Policy

The University of the Pacific does not discriminate in the administration of any of its educational programs, admissions, scholarships, loans, athletics, or other University activities or programs on the basis of race, color, national and ethnic origin, handicap, sexual orientation or preference, sex or age.