The incident of Dina and Shechem Ben Chamor is very troubling. Rabbeinu Bechaye claims that Dina was eight years old at the time, and Shimon and Levi were thirteen and twelve years old.
The Rambam does not go into this question of ages but does justify that the acts of Shimon and Levi, were correct.
It was known to all that it was necessary to observe the Seven Noachide. A violation of any of these seven laws was punishable with death. The inhabitants of that city, were collectively guilty of two of the Seven Noachide Laws.
They were guilty of kidnapping as they all knew that Dina was taken against her will, and they did nothing. The city was expected to set up courts of justice, as dictated by the Torah. They were obliged to try Shechem for his sin against Dina. They did nothing in this case, either.
For these reasons the Rambam believed they acted properly. Yakov Avinu cursed their anger but did not curse their action. A very troubling and difficult episode, indeed.