Welcome to

CSCI 591: Malicious Code Analysis
& CSCI xxx: Software Security

Projects

In this class, you will work through lab assignments—hands-on exercises to guide you through real, practical activities related to a class topic. Similar to a Physics or Chemistry classes, you will follow the lab instructions and produce a project report.

The projects we will use this term are from the PE Tools project that was posted at 0xRick's Blog and my research paper and the book Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software.

For our lab assignments you will want to have the Windows operating system properly installed in computers or virtual machines. Specifically, we recommend using the Windows 10 or above.

Tips for Writing Lab Reports

NOTE: 3 projects are individual projects, and 1 project is a group project. You are encouraged to discuss ideas, concepts, and strategies with others, but each student must independently carry out the tasks in the projects and submit their own project write-up. You should not copy code or command line tasks from other students. Any submissions found in violation will receive an automatic 0, and the misconduct will be reported to the Office of the Dean of Students at Montana State University. (See: Academic Misconduct @ MSU)

  • Project write-ups must be composed in valid Markdown format. (Make sure you check that it renders correctly!)
  • Project write-ups should be concise, but detailed enough to convince graders that you’ve completed each task.
  • For each new question/task, you should clearly identify the question/task that you are solving.
  • Address each problem and any subproblems (aka tasks/subtasks), providing code snippets, screenshoots, explanations, etc. as necessary to show your work.
  • Each project should be organized within its own subdirectory (project1/, project2/, project3/, …).
    • The main write-up should be in a file named README.md within the correct subdirectory (e.g., project1/README.md).
    • Any source code or other supporting files should also be located within the relevant subdirectory (e.g., project1/pe.c).
    • Please use a .gitignore file to ignore files that should not get tracked in your git repository. DO commit your code and files that are needed to build/run/explain your submission. DO NOT commit executables or other generated files (e.g., .o files, swap files).

Example Structure of a Project Report (README.md)

Here is a link to my demo repo that I setup to make some of the formatting expectations clear.

Please Note: Try to follow the format of the header in my example EXACTLY!

Please Note: I do NOT want your GID, I want to see your Net ID!

Please Note: You’ll notice that my demo repo is public so that you all can access it - but yours really should be private!