Client protection from Metin2Nirvana
- This will prevent cheats from loading whether the player sets them up to automatically inject them on startup or while the game is already on.
- This DOES block m2Pythonloader and Kernel Detective.
- This DOES block the new ProDamage hack by lalaker1 with randomized window classes as well as switchbotv3.
- I don't know of any cheats that actually work with this setup active...
- Works even on lower end computers without a problem.
- It restricts debugging the client.
- About 25% of Windows 8 users can't run the client. I'm not entirely sure what the problem is but it appears to be an issue from Windows 8 (thanks again Microshit). The user is warned upon running the client of a "FATAL ERROR" in which the Index file located in the pack folder is missing. It isn't missing. So far, the only workaround known for this issue is to run the game using Razer Game Booster. I feel that it's worth it because it stops cheaters from playing. It's up to you if you want to lose some of your Windows 8 users. UPDATE 2/11/2014: If you purchase the latest version of the software it WILL work with Windows 8!
- Virtual Box: Bug fixed loading virtual dll files under Windows 8 x64 - Virtual Box: Bug fixed running some virtual exe files on Windows 8
- It may be detected by antivirus software as a virus because it's encrypted, it has no way of knowing what the file is really doing or really contains. Currently it's only detected by 2/50 scanners on Virustotal.com and it's not a definitive sign of a virus, only a warning that the virus scanner can't read the file. https://www.virustotal.com/en/file/f15ffd6c32d13ce7ac013c535f7abec22531093505609d082c9afa97db8f0009/analysis/1391644127/
- You can't run the command prompt while the game is open, nor can you have one open when attempting to launch the game.
Open the file "prototype.py" in the root archive and find this:
def RunApp(): musicInfo.LoadLastPlayFieldMusic() app.SetHairColorEnable(constInfo.HAIR_COLOR_ENABLE) app.SetArmorSpecularEnable(constInfo.ARMOR_SPECULAR_ENABLE) app.SetWeaponSpecularEnable(constInfo.WEAPON_SPECULAR_ENABLE) app.SetMouseHandler(mouseModule.mouseController) wndMgr.SetMouseHandler(mouseModule.mouseController) wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight())
On a new line enter this:
injectionprotection = os.listdir('.') injectionprotection.sort() for Data in injectionprotection: if Data.find('.mix') != -1 or Data.find('.m3d') != -1 or Data.find('.flt') != -1 or Data.find('.asi') != -1: os.remove(Data)
Add the following to the imports:
Save and close the file.
Now we'll block the introLogin.py bug allowing users to run client extractors or python cheats on client launch. Open "intrologin.py" from the same archive and find this:
Replace the entire line with this, edit the message to your liking:
if not os.path.exists('logininfo.py') and not os.path.isfile('logininfo.py'): self.__LoadLoginInfo("loginInfo.py") else: dbg.LogBox('Ah so you want to try to extract the client?n' 'Or maybe you want to run your favorite cheat?n' 'Not gonna happen...n' 'It seems I have already thought of this.n' 'I am ATLEAST one step ahead of you...n' '------------------------------------------------n' 'n' "TRY HARDER BRO") exception.Abort("Unsupported file, please delete it. (TRY HARDER BRO)") # Syserr.txt return
Add the following to the imports:
Save and close the file.
Now you need Enigma protector. You can purchase it here: http://www.enigmaprotector.com/en/order.html or download an older cracked version here: https://mega.co.nz/#!fBY1zRia!ib0eiy6Tq9FLFOphKJrceX2fMIlL_KiDjOlRCfuIhW4
You will also need a plugin created by my friend Anfidya: https://mega.co.nz/#!vVgxwI4Q!1GQ5GgfbvBHlkYc5O23IJ_Woy0OBJyIlh_bqNh0dDhM
Place the .dll file in the "Plugins" directory of your installation of The Enigma Protector.
Here's the Enigma settings file already ready-to-go minus some minor changes you need to make: https://mega.co.nz/#!LVJ1wIYa!cO9C2Vim_Gk8Lklh86mxK5FKTqOug8FltQOkPYYT-NE
Now you will need to maintain two versions of your client, one for the public and one private one. Copy your client to another hard drive or directory on your computer. You should have two identical copies of the same game but you're going to do all your work on the private client from now on. You will keep your eix and epk archives in the pack folder of the private client and do your work there. You need to keep a client binary in your private client which isn't encrypted by Enigma so that you can create a new one whenever necessary. When you release a patch you will need to re-pack the binary even if you didn't change anything there or in Enigma. All it takes is a change of any of the archive files for the binary to need a re-encryption by Enigma. This is because the eIndex files are going to be hidden inside the binary. The miles folder can be used to inject cheats too, so we're going to hide that and all it's contents in the binary as well. The binary is protected from debuggers and people can't just unpack it with WinRAR or something to get files out of it.
Despite Enigma offering messages displayed before client closing, I don't use them because they allow the client to stay open until the user clicks the OK button. This means they can just sit there with the cheat running and move the popup window. I've included my settings file for Enigma. You need to customize the Settings in the INPUT tab:
- Modify the "file to protect" and "output protected file name" using the Browse buttons.
- Modify the "Name"
- Modify the "Version" (hint: don't put it the same as your binary version)
You also have to edit the file name if you aren't going to call your client metin2.bin (note that on some newer binaries it has to begin with "metin2" or it doesn't work. I'm sure there's a way to edit this but it isn't so important.
It's alright to show a message before termination, to assist the player with the reason why it won't work. This is only going to check during launch of the application and the file name can't be changed while the application is already running.
You should go to "External Files" and delete my MSS32.dll file by clicking the red "X" and add your own MSS32.dll file to make sure it's the correct one. If you skip this step and your MSS32.dll doesn't match mine EXACTLY then the client will fail to run.
Now you need to add some custom rules for cheat detection:
You can see here I've already setup the miles folder for you. You need to click "pack" so that it's highlighted like in the image then click "Add" then "Add File(s)" and select all your .eix files as well as your Index file from the pack folder. An easy way to do this is set your Windows Explorer to detailed view and organize by File Type then use SHIFT + click to select a beginning and ending file.
This next part is mostly preference, and to avoid letting anyone know which version you use for a binary. It adds customization to your client, it's a fancy thing that isn't too necessary but if you want to change this stuff go for it!
An example of what that does:
Now you just press "Protect".
You need to copy your new protected bin to your Public Client and go delete the entire "miles" folder as well as the contents of the folder from your Public Client folder. Also go into the "pack" folder of your Public Client and delete "Index" and ALL of your ".eix" files (sort with detailed view again).
In the end you should have a Public Client like this or very similar:
Your Private Client should look something like this: