Programmer
- Joined
- Jun 10, 2009
- Messages
- 659
- Reaction score
- 141
great guide karthik !!much needed information for modding zoneserver !or how to do reverse engineering.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 loverstt1:
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 followed these steps
- 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
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 loverstt1:
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 followed these steps
- 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
When i loaded the zoneserver.exe in IDA pro it asked for load file as with 3 options
1.portable execution
2.ms-dos
3.Binary
which one to select? thankyou in advance
Portable executable.
tried all options, the reason I asked you that is when I tried to load PDB file am getting error .
Added level cap feature to the project!
This is promising. I hope even we can remove the cap of 165 from this.
Using dll injector softwareHow to add dll into ZoneServer.exe?