- Joined
- Jun 10, 2009
- Messages
- 659
- Reaction score
- 141
Ever wondered how some private servers have disabled PK in a particular map? Look no further!
I have made a structured way to add features into ZoneServer.exe using C++ DLL injection. As an example, disabling PK in Quanato has been implemented. If you inject that DLL into your ZoneServer.exe then Quanato is only for peace lovers tt1:
Question: I am newbie and I want to add features into ZoneServer. How do I do?
Answer: It is not that simple but also not as hard as it was before if you are willing to learn and experiment :w00t:
I will write in brief how I managed to code disabling PK in a map:
Tools required -
I will try to write more such simple mods which can used to modify ZoneServer behaviour.
Looking forward for queries as well suggestions on improving the project. Even code contributions are welcome in Github!
If you feel this project is interesting or helpful in anyway please do star it in Github.
Project link:
Thanks to all my reverse engineering mentors as well as online guides :
Happy modding
I have made a structured way to add features into ZoneServer.exe using C++ DLL injection. As an example, disabling PK in Quanato has been implemented. If you inject that DLL into your ZoneServer.exe then Quanato is only for peace lovers tt1:
Question: I am newbie and I want to add features into ZoneServer. How do I do?
Answer: It is not that simple but also not as hard as it was before if you are willing to learn and experiment :w00t:
I will write in brief how I managed to code disabling PK in a map:
Tools required -
- Brain
- IDA Pro
- ZoneServer.exe and ZoneServer.pdb files
- Opened IDA Pro
- Dragged and dropped ZoneServe.exe and waited for it to finish it's initial analysis.
- Clicked on File -> Load File -> PDB file.. and chose ZoneServer.pdb file. This file has lot of info on ZoneServer including original function names.
- As I wanted to to find function realtion to PK I click on functions window in IDA Pro and pressed Ctrl + F to searched. I searched for "PK" and found many functions. Interesting one was IsEnabled2PK and it's name suggested it was doing can PK check. I double clicked on the function and IDA showed me it's assembly code. I pressed F5 which shows C-like pseudo code. I saw that the function had 3 params. First param was pointer to current instance of that class, 2nd was level and 3rd I assumed it was map ID. But my assumptions were wrong. Luckily IsEnabled2PK called another function named IsNeviaValley which expected map ID. So from that I understood how to access map ID in this function.
- I did some research on how to hook a function and came across Microsoft Detours library. I understood how to write hooks using the library in C++ and built a small project for it.
I will try to write more such simple mods which can used to modify ZoneServer behaviour.
Looking forward for queries as well suggestions on improving the project. Even code contributions are welcome in Github!
If you feel this project is interesting or helpful in anyway please do star it in Github.
Project link:
You must be registered to see links
Thanks to all my reverse engineering mentors as well as online guides :
Happy modding
Last edited: