• To improve security, we will soon start forcing password resets for any account that uses a weak password on the next login. If you have a weak password or a defunct email, please update it now to prevent future disruption.

Tutorial Unity How to edit/decrypt EasySave 3(.es3) Save Files

Mar 27, 2020
18
12
Is your game Mono or IL2CPP? What game are you trying it on? What error do you get?
it was IL2CPP called denizen demo on steam, finally i managed with another unity explorer version to decrypt the save but i cant see the money variable on like 20k code lines so i just drop it :C and stopped trying to cheat
 

Rum1A

New Member
Aug 31, 2018
1
0
I got the password 'CYW0TLdJAGV7E3Hvh12f' of 廃トレーダーはサキュちゃんを救う by using dnspy, but the decrypted txt file is still garbled.
Oops, sorry, i forgot the GZip compression.
Been trying to do the same thing for the game using that password, it works but when I put it in the game files it's a black screen
 
Last edited:

Henry1887

Member
Aug 2, 2020
271
251
How you guys get the .es3 password? i want to know it and learn how to do it thanks.
Well, my method of obtaining this password is by adding a "hook" to the games code( in my case just a Console.WriteLine) using DnSpy on Mono and UnityExplorer on IL2Cpp in combination with BepInEx to see the console output. This hook is added to a method that decrypts/encrypts your save file and the hook just prints an argument that is passed to this method(in this case the key to de/encrypt your save file) to the console.
 

zerosix06

New Member
Nov 4, 2023
6
0
Well, my method of obtaining this password is by adding a "hook" to the games code( in my case just a Console.WriteLine) using DnSpy on Mono and UnityExplorer on IL2Cpp in combination with BepInEx to see the console output. This hook is added to a method that decrypts/encrypts your save file and the hook just prints an argument that is passed to this method(in this case the key to de/encrypt your save file) to the console.
I dont understand what you saying this time but im trying to learn about it. I wnat to learn about modding game data so i can easily finish the game in my offer wall and earn little cash from it. I hope you help me in my journey. Any recommendation or tips to start learning about this topic?
 

Henry1887

Member
Aug 2, 2020
271
251
I dont understand what you saying this time but im trying to learn about it. I wnat to learn about modding game data so i can easily finish the game in my offer wall and earn little cash from it. I hope you help me in my journey. Any recommendation or tips to start learning about this topic?
Well i dont claim to know much about it, i just set my goal and learnt on the way. If you wanna learn about unity game modding a starting point would probably be to learn C# and try to learn what BepInEx does and how you could use it. Oh and some knowledge about unity itself.
 

zerosix06

New Member
Nov 4, 2023
6
0
Well i dont claim to know much about it, i just set my goal and learnt on the way. If you wanna learn about unity game modding a starting point would probably be to learn C# and try to learn what BepInEx does and how you could use it. Oh and some knowledge about unity itself.
thanks bro . can i pm you ?
 

leechurch

Member
Oct 28, 2020
167
196
I've tried this with both unity explorer and the savehook method, for this game https://f95zone.to/threads/ukiyo-fantasy-fair-demo-fantasy-lab.184297/, but with the unity explorer I don't get a console opening up on launch, and with the savehook I get a console, but I don't see a password anywhere

I get this error in the console window

Code:
[Error  :   BepInEx] Error loading [ES3SaveHook 1.0.0]: System.IO.FileNotFoundException: Could not load file or assembly 'EasySave3, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
File name: 'EasySave3, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
   at System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule, RuntimeType type, IRuntimeMethodInfo pCtor, Byte** ppBlob, Byte* pEndBlob, Int32* pcNamedArgs)
   at System.Reflection.CustomAttribute.CreateCaObject(RuntimeModule module, RuntimeType type, IRuntimeMethodInfo ctor, IntPtr& blob, IntPtr blobEnd, Int32& namedArgs)
   at System.Reflection.CustomAttribute.AddCustomAttributes(ListBuilder`1& attributes, RuntimeModule decoratedModule, Int32 decoratedMetadataToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, ListBuilder`1 derivedAttributes)
   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
   at System.RuntimeType.GetCustomAttributes(Boolean inherit)
   at HarmonyLib.HarmonyMethodExtensions.GetFromType(Type type)
   at HarmonyLib.PatchClassProcessor..ctor(Harmony instance, Type type, Boolean allowUnannotatedType)
   at HarmonyLib.PatchClassProcessor..ctor(Harmony instance, Type type)
   at HarmonyLib.Harmony.CreateClassProcessor(Type type)
   at HarmonyLib.Harmony.<PatchAll>b__11_0(Type type)
   at HarmonyLib.CollectionExtensions.Do[T](IEnumerable`1 sequence, Action`1 action)
   at HarmonyLib.Harmony.PatchAll(Assembly assembly)
   at HarmonyLib.Harmony.PatchAll()
   at MyBepInExPlugin.MyPlugin.Load()
   at BepInEx.Unity.IL2CPP.IL2CPPChainloader.LoadPlugin(PluginInfo pluginInfo, Assembly pluginAssembly) in /home/runner/work/BepInEx/BepInEx/Runtimes/Unity/BepInEx.Unity.IL2CPP/IL2CPPChainloader.cs:line 134
   at BepInEx.Bootstrap.BaseChainloader`1.LoadPlugins(IList`1 plugins) in /home/runner/work/BepInEx/BepInEx/BepInEx.Core/Bootstrap/BaseChainloader.cs:line 411
 

Henry1887

Member
Aug 2, 2020
271
251
I've tried this with both unity explorer and the savehook method, for this game https://f95zone.to/threads/ukiyo-fantasy-fair-demo-fantasy-lab.184297/, but with the unity explorer I don't get a console opening up on launch, and with the savehook I get a console, but I don't see a password anywhere

I get this error in the console window

Code:
[Error  :   BepInEx] Error loading [ES3SaveHook 1.0.0]: System.IO.FileNotFoundException: Could not load file or assembly 'EasySave3, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
File name: 'EasySave3, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
   at System.Reflection.CustomAttribute._CreateCaObject(RuntimeModule pModule, RuntimeType type, IRuntimeMethodInfo pCtor, Byte** ppBlob, Byte* pEndBlob, Int32* pcNamedArgs)
   at System.Reflection.CustomAttribute.CreateCaObject(RuntimeModule module, RuntimeType type, IRuntimeMethodInfo ctor, IntPtr& blob, IntPtr blobEnd, Int32& namedArgs)
   at System.Reflection.CustomAttribute.AddCustomAttributes(ListBuilder`1& attributes, RuntimeModule decoratedModule, Int32 decoratedMetadataToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, ListBuilder`1 derivedAttributes)
   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
   at System.RuntimeType.GetCustomAttributes(Boolean inherit)
   at HarmonyLib.HarmonyMethodExtensions.GetFromType(Type type)
   at HarmonyLib.PatchClassProcessor..ctor(Harmony instance, Type type, Boolean allowUnannotatedType)
   at HarmonyLib.PatchClassProcessor..ctor(Harmony instance, Type type)
   at HarmonyLib.Harmony.CreateClassProcessor(Type type)
   at HarmonyLib.Harmony.<PatchAll>b__11_0(Type type)
   at HarmonyLib.CollectionExtensions.Do[T](IEnumerable`1 sequence, Action`1 action)
   at HarmonyLib.Harmony.PatchAll(Assembly assembly)
   at HarmonyLib.Harmony.PatchAll()
   at MyBepInExPlugin.MyPlugin.Load()
   at BepInEx.Unity.IL2CPP.IL2CPPChainloader.LoadPlugin(PluginInfo pluginInfo, Assembly pluginAssembly) in /home/runner/work/BepInEx/BepInEx/Runtimes/Unity/BepInEx.Unity.IL2CPP/IL2CPPChainloader.cs:line 134
   at BepInEx.Bootstrap.BaseChainloader`1.LoadPlugins(IList`1 plugins) in /home/runner/work/BepInEx/BepInEx/BepInEx.Core/Bootstrap/BaseChainloader.cs:line 411
Decryption Key for that game is: "dgs3FaghPoFjw3fgdUGE"

My mistake, i compiled the Plugin with references to "EasySave3.dll" which can be different for other games as it was for this game. The ES3 Stuff was in "Assembly-CSharp-firstpass.dll". I will upload the plugin for these games and update the tutorial. Thanks for reporting this!
 
  • Like
Reactions: leechurch