mostly asm editing with tools like OllyDbg.
You can search for strings and change them and that's probably where they change file names.
Executable compression - Wikipedia, the free encyclopedia
This is a list of a few packers there are many more and many different types of packers but they basicly just change the code so you can't read it while the cpu still can. The problem with packing is is since the cpu can still read it so it can be unpacked.
But there are a few good packers which makes it really really hard to unpack an exe.
Edit: Someone correct me if I said something incorrect I'm not that familiair with this stuff