I know this doesn’t really solve your question of studying together, but the good thing about reverse engineering and assembly is that the basics don’t change that much. About 15 years ago, I spend days on end in Soft ice for those who still know that. The same principles still apply today. The point is: just about any tutorial about reverse engineering you can get your hands on has a very high likelihood of being relevant today, even if it’s 20 years old.
What can help a lot is crackme’s: a friend of mine and myself we used to write programs and the other one had to crack it, then we switched roles. So we basically stepped up our game with each round and gradually learned how code was translated and obfuscated in assembler.
It helps a lot to write simple stuff and see how it looks in assembler.
Back in those days I also did some assembler programming, writing simple functions like ‘making a letter appear on a screen’ or ‘drawing a line’ (which ain’t too easy by the way considering it’s just a simple line) and later writing keygens.
When it comes to crackmes there are (or at least we’re back then) a ton of sites that arranged them in order of complexity.
The good thing is in the more basic ones, you’ll often learn one principle and the write ups explain it. If you like that style of learning: practical and hands on, with pretty direct rewards that gradually get harder as you go. Then that may be a good path to go.
Assembler is insane when it comes to it’s simplicity and still how much you can do with it, but the main point is: here, more then in any other domain, don’t confuse ‘basic’ for ‘simple’: understanding the simple and most basic mechanisms is the game you need to play if you ask me. Assembled is just that: really simple instructions resulting in an insane amount of complexity.
I’d advice against trying to start with big programs and to put things in perspective: in the case of assembler even a simple notepad is big… not a whole lot of people on this planet could write a simple notepad with in bare assembler today. We tend to take thing like ‘writing to a file’ for granted, but in assembled that’s another ballgame… it sure ain’t two lines of code, probably closer to 60 or 70.
Find small things, like crackme’s or challenges and start from there, you’ll advance way faster than trying to solve big problems.
It’s absolutely useless trying to break say an armadillo where mirror processes guard whatever you do to the main binary and try to trip you up on every step of the way, if you can’t understand the basic stuff.
If you like the more pentest-side of things, machines like node or October are worth checking out. Certainly node is nice because it opens doors if you understand the binary and it’s well readable.
I’m rusty on the subject, and back then I only did a lot of windows reversing, but if you have specific questions, you can always ask them in the forums and I’ll try my best to reply if I can.