I think the title question speaks for itself, but here are the details:
You have 4 bits for the buttons, 16 bits for the counter, and a fix 16 bit ID. The transmitter would send out these bits plus an extra 32 bit word read from a ROM addressed by the counter. The reciever would look up the address in its own ROM and check if the two noise words match. Of course the counter must increase too.
You could even overwrite the noise every time the reciever and transmitter are physically connected. Not even your chip manufacturer would have an access.
So the question is: why does Microchip's KeeLoq technology bother so much to work with algorithms?