First of all, I doubt that when you changed the function name, the file signature has changed. Or, it depends on your definition of the signature here. If you mean MD5 hash, this will change even if you didn't change anything in your code because the timestamp in the header changes.
Polymorphic code basically consists of a piece of self-changing encrypting code (metamorphic encryptor) + encrypted payload.
I would advise you to read the great book of Peter Szor "The Art of Computer Virus Research and Defense". Although the book is a bit old, many basic concepts like this are explained well.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…