/MapleClientEditTemplate

An increasingly generic and comprehensive MapleStory client editing framework. Written by Erik A (Minimum Delta). Intended to abstract away some of the MapleStory client editing learning curve.

Primary LanguageC++

MapleClientCollection

A (increasingly generic) framework that is intended to be used when crafting new MapleStory client redirectors/edits.
This should work pretty much out of the box and all that is required is potential anticheat and crc bypasses. These are version dependant.
This solution contains all the Windows library hooks that are required for a MapleStory localhost enabler and is configured to be as noob friendly as possible.
The Windows hooks are abstracted away (as best as I could) and can be toggled on/off depending on need. For example, if using this with an unvirtualized localhost (eg v83), the WinSock hooks can be disabled with a simple switch and memory editing can be done immediately on injection rather than waiting for the client to be unpacked (since it's already unpacked no need to wait).

DebugView

In order to see the debug log output you can use this program: https://docs.microsoft.com/en-us/sysinternals/downloads/debugview

Current Status

This project is in active development by myself (Minimum Delta). Issue/feature requests are appreciated.
The project is in alpha stage, so do not expect it to work perfectly (even though it should work pretty well).

Credits

Darter (aka Moozi) - Very helpful mentor
Ez - Another mentor and friend
SunCat - Great insight from this friendly fellow
The Muffin Man - Always staying positive
DAVHEED - u know

Config settings

All generic config settings are in the Common/Common.h file. More information on the specifics of this will come at a later point (documentation is always last, eh). However, I've commented reasonbly well so it should be pretty apparent what each setting does.

Compiling for proxy vs regular injection

Ijl15 proxy injection (auto injection on Maple start rather than using a launcher) can be turned on/off by defining MAPLE_INJECT_USE_IJL in Common.h.
You'll need to rename the compiled DLL to ijl15.dll instead of LEN.dll in order for it to be auto injected.

GenericLauncher

Regular injection can be done with the GenericLauncher project exe. This program will boot up MapleStory and inject LEN.dll. It's very simple, but works very well.

Common Project

The Common project contains all the Windows library hooks that are not version specific.
These can be used by any version and are already configured to be hooked on injection. They can be toggled on/off in the Common.h file. There are also a number of Maple templates in this project -- feel free to contribute yours!

When does hooking and memory editing happen?

Windows functions are hooked immediately after injection which happens directly after MapleStory is launched (for ijl proxy and regular GenericLauncher injection).
Unlike MapleStory function hooks, external API hooks (winhooks) do not need to wait for the client to be unpacked. Assuming that the instaject config option is disabled, when the WinAPI CreateMutexA hook is triggered by MapleStory then MainFunc in dllmain is triggered and any hooks or editing called from that function will be executed. If the instaject option is enabled, this happens on injection.
It is recommended to have all Maple hooking and memory editing inside or called from the CreateMutexA function. This is the default behavior.

MapleAPI Hooking Examples

I have added some simple memory editing and hooking examples to the repo.

Coming Soon: Dear ImGui Support

Dear ImGui is a framework for creating simple, quick GUIs inside of an existing 3D application. Unfortunately ImGui only supports DX9+, which means pre-big bang servers will not be able to use ImGui until someone provides a DX8 or I write one myself.