I thought this class was difficult didn't focus much on malware analysis. The only thing that makes it a malware class is that the software sample you are working on is malicious. You could do the exact same projects to any other executable and the content could be just about the same. This course should probably be named "advanced control flow toolkit development". That being said, you can use these skills for malware analysis, but I just had a different expectation before registering.
You have the option to partner up for each of the assignments. I would HIGHLY recommend syncing up with someone early and work through the semester with that same partner. Projects 3&4, and 5&6 build off each other so it wouldn't be useful or advised to change partners on those.
I'm intermediate with python and never used C++ before, and if it wasn't for my partner, I would have dropped. I wouldn't register for this class unless you are at least a strong programmer in python. Knowing how to read assembly before hand is also a must.
Grading: projects are worth 90% of the grade. The other 10% is piazza participation and creating a slide deck for the weekly readings. No textbook required and no quizzes or exams.
Project 1: Learn ghidra interface. Review a hello world program in ghidra and add comments as to what each asm instruction is doing.
Project 2: Add ghidra comments to a real malicious sample. The samples has around 30 functions, so there was a ton of assembly to review. This was super time consuming and I don't know how you would work through this without a partner.
Project 3: Create a Def Use ghidra plugin. Write a ghidra tool in python or java to follow how each register is updated. Output results into a .dot graph.
Project 4: Create a data dependence ghidra plugin that tracks which assembly instructions are dependent on previous instructions. Output results into a .dot graph.
**Note about the projects 5 and 6. The professor recommended using Intel's PINtool but writing another ghidra plugin was acceptable. For those not familiar with PIN, it is written in C++. If you aren't familiar with C++, you can stick with python which is nice.
Project 5: Write a PIN/Ghidra Dynamic Control Flow tool. Track the execution path of an executable and output the flow to a .dot file.
Project 6: Create a PIN/Ghidra dynamic control dependence. Track the dependence of functions during execution.
Pros: The professor and TA's is very engaged and obviously well versed on the subject. It made it easy to learn a lot from them. I feel very confident with assembly after working through this course.
Cons: I was hoping the class would involve more use of debuggers, dumping objects from memory, unpacking binaries etc. It ended up basically just being software development for Ghidra and PIN.
Summary: The class was very challenging and enjoyable. I probably invested at least 20 hours into each project but you have plenty of time to complete them. I would take it again.