Nice work. Just wanted to let you know about a few bugs I found while porting it to x64.
FailInjector
Your WNDPROC callback should have the return type 'LRESULT' instead of 'long' or it breaks when compiling as x64
UI.cpp : UI::MainUIProc
Code:
ProcessList = CreateWindowEx(0, "combobox", "Process List",
WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST,
5, 5, 142, 20, Window, nullptr, nullptr, nullptr);
Increase the height to fix the "combo box not showing any processes" issue. Around 200 or so seems like a decent size although I'm using a smaller than default font size so you might want to increase it even more. You also might want to add the WS_VSCROLL style.
OHack
Misc.cpp : line 72
Contents is allocated with new[]. Causes a crash when running with the debug CRT and a mem leak with release.
Hacks.cpp : line 11
Code:
Write(WoWBase + CGGameUI__CanPerformAction + 0x20, LuaUnlock, 2);
Does not unprotect (list is taken from 15211 so it might have changed)
- CancelLogout
- GuildInvite
- InteractUnit
- PortGraveyard
- ReloadUI
- SetCVar
- SetCVarBitfield
- SetCurrentTitle
- TargetDirection*
- TargetNearest*
See http://www.ownedcore.com/forums/worl...ml#post2200401 ([Question] LUA protection disabler for 4.0.6a) for a generic fix. (I haven't tested if it still works for 15354 but I'm assuming it does)
You also seem to like to store pointers in uints. Not really a problem for you since you're only targeting x86 but it makes porting it to 64bit a bit more complicated 
I'll post a diff here when I get a bit closer to getting it working. Am a bit short on time atm though