Let M1 = f(M), let M2 = f(M1, let M3 = f(M2, and so on. Suppose M1 ⊂M. In other words, f is not onto.
At the jth step, Mj is contained in Mj-1. When we apply f, all of Mj-1 winds up in Mj, so when f is restricted to Mj, that image is certainly contained in Mj. Therefore Mj+1 is contained in Mj. We have a chain of descending modules.
Since M is artinian, the chain stops. Let j be the first index where Mj+1 = Mj. Remember that f is 1-1, and can be reversed. The set Mj+1 has Mj as its preimage, and both sets are the same. Reverse f again to show Mj-1 = Mj. This is impossible, unless j = 0 and M = M1. Therefore f maps M onto M, and f is a module automorphism.
Next let M be noetherian and let f be an M endomorphism that is onto. Suppose f is not injective. Find x and y such that f(x) = f(y). Subtract, and f maps x-y to 0. Of course f maps 0 to 0 as well.
Let M0 = 0 and run backwards, running f in reverse. Thus M1 is the preimage of 0 under f. Now M1 is a submodule of M that properly contains M0.
Suppose Mj properly contains Mj-1. Let Mj+1 be the preimage of Mj under f. Since Mj includes Mj-1, taking the preimage includes the preimage of Mj-1, which is Mj. Each submodule contains the previous.
If Mj+1 = Mj then f(Mj) should also equal Mj, yet Mj-1 is smaller. Therefore we know Mj+1 is larger. We have built an infinite ascending chain of submodules. Since M is noetherian, this is impossible. Therefore f is injective, and an automorphism on M.