Malware Samples - PMA Chapter 6

03 Jan 2026

These labs build on the basic Assembly exercises from Chapter 6 and demonstrate how to identify C constructs such as loops, conditionals, switch statements, etc.

Samples:

  1. Malware Sample 1
  2. Malware Sample 2
  3. Malware Sample 3
  4. Malware Sample 4

Questions:

  1. What is the major code construct found in the only subroutine called by main?
  2. What is the subroutine located at 0x40105f?
  3. What is the purpose of this program?

Questions:

  1. What operation does the first subroutine called by main perform?
  2. What is the subroutine located at 0x40117f?
  3. What does the second subroutine called by main do?
  4. What type of code construct is used in this subroutine?
  5. Are there any network-based indicators for this program?
  6. What is the purpose of this malware?

Questions:

  1. Compare the calls in main to Lab 6-2's main method. What is the new function called from main?
  2. What parameters does this new function take?
  3. What major code construct does this function contain?
  4. What can this function do?
  5. Are there any host-based indicators for this malware?
  6. What is the purpose of this malware?

Questions:

  1. What is the difference between the calls made from the main method in Labs 6-3 and 6-4?
  2. What new code construct has been added to main?
  3. What is the difference between this lab's parse HTML function and those of previous labs?
  4. How long will this program run?
  5. Are there any new network-based indicators for this malware?
  6. What is the purpose of this malware?



Conclusion

Although I was already familiar with the idea of recognizing high-level programming constructs in assembly, these labs went into much more detail (especially breaking down the for loop in the fourth sample). This chapter was good practice for me and would be an excellent introduction to assembly and calling conventions for someone new.


Feedback is welcome and encouraged! Please leave a comment below: