If you run the OtLand IP Changer executable through an unpacker, like de4dot, you can see it's packed by SmartAssembly:
View attachment 32359
Once unpacked, you can then open the clean executable in a deobfuscator, like dotPeek. Although the deobfuscator won't turn it back into 100% readable code, because of the packer, you can understand what the code is doing. Looking around, you'll come to a method that looks like the main function when you click the 'Apply' button; you'll see MessageBox.Show() calls such as:
Code:
MessageBox.Show("Please select a version.", "OtLand IP Changer");
MessageBox.Show("Tibia client not found.", "OtLand IP Changer");
and, at the end of the method, a call to SetWindowText:
Code:
Class6.SetWindowText(process_0.MainWindowHandle, string.Format("Tibia - {0}:{1}", (object) string_2, (object) *(ushort*) ((IntPtr) voidPtr + 4)));
However, right before this, you'll see this lovely if statement:
Code:
if (lower.Contains("aurera") || lower.Contains("reptera") || (lower.Contains("narozia") || lower.Contains("tibiaotserver.com")) || lower.Contains("evilserv"))
return;
It seems Mark didn't want users to be able to connect to these OTs with his IP changer so he added this condition, then packed the client (I'm assuming at the time there wasn't a unpacker for SmartAssembly).
View attachment 32360
I have two open-source IP changers on my GitHub. One for the classic Tibia clients (7.0-10.00), and one for the Tibia 11 client. They're not advanced, or anything, but they are open-source and anyone is free to take the code and make a nice IP changer if they want (even incorporate both into one):
jo3bingham/tibia-ip-changer
jo3bingham/tibia-11-ip-changer