Hello Ragezone,
Recently, I found a very interesting MapleStory Game made with Unity.
View attachment 173231
it can run on Android/iOS/Desktop platform. today I'm going to share some techs to reverse-engineering this game. from those techs you can also modify your client and develop your sever. just like what we did in office-MapleStory(analyze packet structure)
1. Analyze
Briefly, this server is built with WebSocket, the architecture is 1 login server and 10 Channel server. the packet is plain-text, so it is easy to make your own server.
this is some basic information in interacting between server and client. the server would reponse 10 Channel Server Ip to client when player login success.
View attachment 173232View attachment 173233
Another thing is when player open this game, it will download lots of client resources and Hot-Fix library. this hot-Fix libraray is very important, becasue it is the main game logic. here is the libraray address(
2. Reverse-Engineering
now we have client and we know the basic archtecuture, so we can try to reverse it. (I mainly introduce how to do it in windows platform, but it is samilar for u to do it in android platform.
Tools .
1. dnSpy
2. Download its client and Hot-Fix library.
As we mentioned before. this game would download the libraray from network, but it did not save to local, so the first step is hacking it and load the your native libaray.
Open dnSpy and load the 冒险新纪元_Data\Managed\Assembly-CSharp.dll, found the class GuangYing.AppDomainManager
we can see there is a function named LoadHotFixAssembly, unity's string encryption is based on base64, so
Decrypt it
"OjovVW5pdHlQcm9qZWN0L01hcGxlU3RvcnkvQXNzZXRzL1N0cmVhbWluZ0Fzc2V0cy9Ib3RGaXhfUHJvamVjdC5kbGw="
it was ::/UnityProject/MapleStory/Assets/StreamingAssets/HotFix_Project.dll
so we can modify it directly from dnSpy to
stringdllPath=Application.streamingAssetsPath+"/HotFix_Project.dll";
and then put HotFix_Project.dll to local streamPath, it would load local library.
Note the streamingAssetsPathis under 冒险新纪元_Data/StreamingAssets
3. Add your feature
using dnSpy to modify HotFix_Project.dll , you can find alot of packet receiver and even how to write packet. like
. After you modify it just re-compile and save, it would be ok.
Note: some useful functions
GyUtils.Instance.AlertBlueInput("You Message", delegate(string npcId)
{
});
GyUtils.Instance.PushChatBoxMessage("Put this message to Chat List", new Color?(Color.red));
Reverse Android.
In Android Platform, it packed with il2cpp, so you need to use il2cpp tools to unpack your libil2cpp.so
After unpack it, it looks like this
. then modify it and repack it, you can get your mobile MapleStory.
The Android Client
The Windows Client
My Demo Patch Lib
We can talk more about how to reverse and how to develop an easyily server.
Thanks ...
Recently, I found a very interesting MapleStory Game made with Unity.
View attachment 173231
it can run on Android/iOS/Desktop platform. today I'm going to share some techs to reverse-engineering this game. from those techs you can also modify your client and develop your sever. just like what we did in office-MapleStory(analyze packet structure)
1. Analyze
Briefly, this server is built with WebSocket, the architecture is 1 login server and 10 Channel server. the packet is plain-text, so it is easy to make your own server.
this is some basic information in interacting between server and client. the server would reponse 10 Channel Server Ip to client when player login success.
View attachment 173232View attachment 173233
Another thing is when player open this game, it will download lots of client resources and Hot-Fix library. this hot-Fix libraray is very important, becasue it is the main game logic. here is the libraray address(
To view the content, you need to sign in or register
). 2. Reverse-Engineering
now we have client and we know the basic archtecuture, so we can try to reverse it. (I mainly introduce how to do it in windows platform, but it is samilar for u to do it in android platform.
Tools .
1. dnSpy
To view the content, you need to sign in or register
2. Download its client and Hot-Fix library.
As we mentioned before. this game would download the libraray from network, but it did not save to local, so the first step is hacking it and load the your native libaray.
Open dnSpy and load the 冒险新纪元_Data\Managed\Assembly-CSharp.dll, found the class GuangYing.AppDomainManager
we can see there is a function named LoadHotFixAssembly, unity's string encryption is based on base64, so
Decrypt it
"OjovVW5pdHlQcm9qZWN0L01hcGxlU3RvcnkvQXNzZXRzL1N0cmVhbWluZ0Fzc2V0cy9Ib3RGaXhfUHJvamVjdC5kbGw="
it was ::/UnityProject/MapleStory/Assets/StreamingAssets/HotFix_Project.dll
so we can modify it directly from dnSpy to
stringdllPath=Application.streamingAssetsPath+"/HotFix_Project.dll";
and then put HotFix_Project.dll to local streamPath, it would load local library.
Note the streamingAssetsPathis under 冒险新纪元_Data/StreamingAssets
3. Add your feature
using dnSpy to modify HotFix_Project.dll , you can find alot of packet receiver and even how to write packet. like
. After you modify it just re-compile and save, it would be ok.
Note: some useful functions
GyUtils.Instance.AlertBlueInput("You Message", delegate(string npcId)
{
});
GyUtils.Instance.PushChatBoxMessage("Put this message to Chat List", new Color?(Color.red));
Reverse Android.
In Android Platform, it packed with il2cpp, so you need to use il2cpp tools to unpack your libil2cpp.so
After unpack it, it looks like this
. then modify it and repack it, you can get your mobile MapleStory.
The Android Client
To view the content, you need to sign in or register
The Windows Client
To view the content, you need to sign in or register
My Demo Patch Lib
To view the content, you need to sign in or register
We can talk more about how to reverse and how to develop an easyily server.
Thanks ...