- Joined
- Oct 29, 2007
- Messages
- 1,292
- Reaction score
- 1,314
Well... as Title says, I'm sharing my cool way to: "downgrade" your MU Client (1.04d) Season 6.3 to: Season 5, Season 4 or even: Season 3.2. This is nothing from another world... is only disable: Rage Fighter Character Creation Button from: Select Character Screen. but maybe this is the best choice. I mean.. you can completely emulate a nice: Season 5 or Season 4, without change your Server Files or Client.
Screenshots & Small Explain:
#1
#2
Link:You must be registered to see links
PS: Core.dll don't have process name, is normal hook required.
Credits:
Webzen
Nemesis (Me: Kiosani).
SetByte((PVOID)(0x004030D1 + 3), 5); // Create character max chars (default: 7)and how to block sum?
Please share me full source pleaseSetByte((PVOID)(0x004030D1 + 3), 5); // Create character max chars (default: 7)
What full source?Please share me full source please
Well... as Title says, I'm sharing my cool way to: "downgrade" your MU Client (1.04d) Season 6.3 to: Season 5, Season 4 or even: Season 3.2. This is nothing from another world... is only disable: Rage Fighter Character Creation Button from: Select Character Screen. but maybe this is the best choice. I mean.. you can completely emulate a nice: Season 5 or Season 4, without change your Server Files or Client.
Screenshots & Small Explain:
#1
#2
Link:You must be registered to see links
PS: Core.dll don't have process name, is normal hook required.
Credits:
Webzen
Nemesis (Me: Kiosani).
full source dll block Rf and SUMWhat full source?
Why dll?
SetByte((PVOID)(0x004030D1 + 3), 7); // Create character max chars (default: 7)
You can add this code to your sources.full source dll block Rf and SUM
I dont know.how found this in others mains?
how found this in others mains?
#include "Windows.h"
DWORD OldProtect;
DWORD WriteMemory(const LPVOID lpAddress, const LPVOID lpBuf, const UINT uSize)
{
DWORD dwErrorCode = 0;
DWORD dwOldProtect = 0;
int iRes = VirtualProtect(lpAddress, uSize, PAGE_EXECUTE_READWRITE, &dwOldProtect);
if (iRes == 0)
{
dwErrorCode = GetLastError();
return dwErrorCode;
}
memcpy(lpAddress, lpBuf, uSize);
DWORD dwBytes = 0;
iRes = VirtualProtect(lpAddress, uSize, dwOldProtect, &dwBytes);
if (iRes == 0)
{
dwErrorCode = GetLastError();
return dwErrorCode;
}
return 0x00;
}
DWORD SetByte(const LPVOID dwOffset, const BYTE btValue)
{
return WriteMemory(dwOffset, (LPVOID)& btValue, sizeof(BYTE));
}
extern "C" __declspec(dllexport)void Init()
{
if (VirtualProtect(LPVOID(0x401000), 0xD21FFF, PAGE_EXECUTE_READWRITE, &OldProtect))
{
SetByte((PVOID)(0x004030D1 + 3), 6);
}
}
help me find offset in main MuEMu Season 8Small Guide to Find on any main.exe (SS2 to SS6) (maybe not in old school mains)
I know how to find on any main.exe.. the most important is know in really how works this code... well to start.. every time that you create a new character.. exists on button a "TEXTURE" in this case the texture is called: "cha_bt.tga", in new mains exists 2 TEXTURES with this name... but you must search for all referenced string for example on 1.04d GMO main.exe this:
then.. ENTER on this code and you can see something like this:
OK, now you found Load Texture part of code on main... but how to make to found drawing proc ? easy.. only: "Second Click" -> "Find references to" -> "Immediate constant" and you can see something like this:
OK, now double click on the first refence, and BOOM! your offsetif you make all on good way, then you must can see something like this in this pass:
help me find offset in main MuEMu Season 8
Here is the source for a dll
Code:#include "Windows.h" DWORD OldProtect; DWORD WriteMemory(const LPVOID lpAddress, const LPVOID lpBuf, const UINT uSize) { DWORD dwErrorCode = 0; DWORD dwOldProtect = 0; int iRes = VirtualProtect(lpAddress, uSize, PAGE_EXECUTE_READWRITE, &dwOldProtect); if (iRes == 0) { dwErrorCode = GetLastError(); return dwErrorCode; } memcpy(lpAddress, lpBuf, uSize); DWORD dwBytes = 0; iRes = VirtualProtect(lpAddress, uSize, dwOldProtect, &dwBytes); if (iRes == 0) { dwErrorCode = GetLastError(); return dwErrorCode; } return 0x00; } DWORD SetByte(const LPVOID dwOffset, const BYTE btValue) { return WriteMemory(dwOffset, (LPVOID)& btValue, sizeof(BYTE)); } extern "C" __declspec(dllexport)void Init() { if (VirtualProtect(LPVOID(0x401000), 0xD21FFF, PAGE_EXECUTE_READWRITE, &OldProtect)) { SetByte((PVOID)(0x004030D1 + 3), 6); } }
just replace your offset compile and hook it using the api init