Code:
#include <windows.h>
#include "Form1.h"
#include "Functions.h"
using namespace Dekaron_Boost;
void Android(void)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Application::Run(gcnew Dekaron);
Application::Exit();
}
//AutoPot
DWORD ssPotAdyy = 0x008C17B8;
DWORD PotReturn = ssPotAdyy+10;
BYTE disablePOT[] = {0x83, 0x78, 0x08, 0x13};
void PotASM()
{
__asm
{
cmp dword ptr [eax+0x08],0x01 // checking for HP pot?
jne [check_mana]
mov dword ptr[eax+0x08],0x11 // change to auto pot
mov dword ptr[eax+0x10],0x11
check_mana:
cmp dword ptr [eax+0x08],0x02
jne [finished_check]
mov dword ptr[eax+0x08],0x12 // change to auto pot
mov dword ptr[eax+0x10],0x12
finished_check:
cmp dword ptr [eax+0x08],0x13
jmp [PotReturn]
}
}
void Dekaron::checkBox1_CheckedChanged(System::Object^ sender, System::EventArgs^ e)
{
if(this->checkBox1->Checked)
{
*(BYTE*)ssPotAdyy = 0xE9;
*(DWORD*)(ssPotAdyy + 1) = jmp(ssPotAdyy, PotASM);
}
else
{
WriteMemory(ssPotAdyy, 4, 0x83, 0x78, 0x08, 0x13);
}
}
//Minimap Tele
DWORD ssteleAdyy = 0x0056B023;
DWORD teleReturn = ssPotAdyy+7;
BYTE disabletele[] = {0x8B, 0x80, 0xA0, 0x00, 0x00, 0x00, 0xC3};
void __declspec(naked) _stdcall teleASM()
{
__asm
{
mov eax,00000003
nop
ret
jmp [teleReturn]
}
}
void Dekaron::checkBox2_CheckedChanged(System::Object^ sender, System::EventArgs^ e)
{
if(this->checkBox2->Checked)
{
*(BYTE*)ssteleAdyy = 0xE9;
*(DWORD*)(ssteleAdyy + 1) = jmp(ssteleAdyy, teleASM);
}
else
{
WriteMemory(ssteleAdyy, 7, 0x8B, 0x80, 0xA0, 0x00, 0x00, 0x00, 0xC3);
}
}
//WallHack
DWORD sswallAdyy = 0x0086BAE9;
DWORD wallReturn = sswallAdyy+12;
BYTE disablewall[] = {0xFF, 0x50, 0x10, 0x8B, 0xF0, 0x8D, 0xBC, 0x24, 0x88, 0x00, 0x00, 0x00, 0xB9, 0x75, 0x04, 0x00, 0x00, 0xF3, 0xA5};
void __declspec(naked) _stdcall wallASM()
{
__asm
{
call dword ptr [eax+0x10]
mov esi,eax
lea edi,ss:[esp+0x00000088]
cmp dword ptr [eax+0x00000402],0x5F626577
je [check_wall]
check_wall:
mov dword ptr [eax+0x00000402],0x5F626577
mov dword ptr [eax+0x00000406],0x67616D69
mov dword ptr [eax+0x0000040A],0x616D2E65
mov dword ptr [eax+0x0000040E],0x00000063
jmp [wallReturn]
}
}
void Dekaron::checkBox3_CheckedChanged(System::Object^ sender, System::EventArgs^ e)
{
if(this->checkBox3->Checked)
{
*(BYTE*)sswallAdyy = 0xE9;
*(DWORD*)(sswallAdyy + 1) = jmp(sswallAdyy, wallASM);
}
else
{
WriteMemory(sswallAdyy, 19, 0xFF, 0x50, 0x10, 0x8B, 0xF0, 0x8D, 0xBC, 0x24, 0x88, 0x00, 0x00, 0x00, 0xB9, 0x75, 0x04, 0x00, 0x00, 0xF3, 0xA5);
}
}
//SkillHack
DWORD ssskillAdyy = 0x00506C14;
DWORD skillReturn = ssskillAdyy+6;
BYTE disablekill[] = {0x55, 0x8B, 0xCE, 0x88, 0x47, 0x61};
void __declspec(naked) _stdcall ssskillASM()
{
__asm
{
push ebp
mov ecx,esi
mov [edi+0x61],0x0a1
jmp [skillReturn]
}
}
void Dekaron::checkBox4_CheckedChanged(System::Object^ sender, System::EventArgs^ e)
{
if(this->checkBox4->Checked)
{
*(BYTE*)ssskillAdyy = 0xE9;
*(DWORD*)(ssskillAdyy + 1) = jmp(ssskillAdyy, ssskillASM);
}
else
{
WriteMemory(ssskillAdyy, 6, 0x55, 0x8B, 0xCE, 0x88, 0x47, 0x61);
}
}
//PetHack+NoAnim
DWORD Pdelay1 = 0x004BF3B9;
DWORD Pdelay2 = 0x004BF482;
DWORD Pdelay3 = 0x004BF551;
DWORD Pattack1 = 0x004BF43C;
DWORD Pattack2 = 0x004BF505;
DWORD Pattack3 = 0x004BF5D2;
BYTE enableattack1[] = {0xC7, 0x44, 0x24, 0x24, 0x07, 0x00, 0x00, 0x00};
BYTE enableattack2[] = {0xC7, 0x44, 0x24, 0x24, 0x07, 0x00, 0x00, 0x00};
BYTE enableattack3[] = {0xC7, 0x44, 0x24, 0x20, 0x07, 0x00, 0x00, 0x00};
BYTE disableattack1[] = {0xC7, 0x44, 0x24, 0x24, 0x04, 0x00, 0x00, 0x00};
BYTE disableattack2[] = {0xC7, 0x44, 0x24, 0x24, 0x06, 0x00, 0x00, 0x00};
BYTE disableattack3[] = {0xC7, 0x44, 0x24, 0x20, 0x05, 0x00, 0x00, 0x00};
BYTE enabledelay1[] = {0x8B, 0x68, 0x01};
BYTE enabledelay2[] = {0x8B, 0x68, 0x01};
BYTE enabledelay3[] = {0x8B, 0x68, 0x01};
BYTE disabledelay1[] = {0x8B, 0x68, 0x20};
BYTE disabledelay2[] = {0x8B, 0x68, 0x28};
BYTE disabledelay3[] = {0x8B, 0x68, 0x30};
DWORD ssnoanimAdyy = 0x005C334B;
DWORD noanimReturn = ssnoanimAdyy+6;
BYTE disablenoanim[] = {0xD8, 0x8B, 0x14, 0x01, 0x00, 0x00};
void __declspec(naked) _stdcall noanimASM()
{
__asm
{
mov dword ptr [ebx+0x00000114],0x3C0CCDCC
fmul dword ptr [ebx+0x00000114]
jmp [noanimReturn]
}
}
void Dekaron::checkBox5_CheckedChanged(System::Object^ sender, System::EventArgs^ e)
{
if(this->checkBox5->Checked)
{
memcpy((void*)Pdelay1, enabledelay1, sizeof(enabledelay1));
memcpy((void*)Pdelay2, enabledelay2, sizeof(enabledelay2));
memcpy((void*)Pdelay3, enabledelay3, sizeof(enabledelay3));
memcpy((void*)Pattack1, enableattack1, sizeof(enableattack1));
memcpy((void*)Pattack2, enableattack2, sizeof(enableattack2));
memcpy((void*)Pattack3, enableattack3, sizeof(enableattack3));
*(BYTE*)ssnoanimAdyy = 0xE9;
*(DWORD*)(ssnoanimAdyy + 1) = jmp(ssnoanimAdyy, noanimASM);
}
else
{
memcpy((void*)Pdelay1, disabledelay1, sizeof(disabledelay1));
memcpy((void*)Pdelay2, disabledelay2, sizeof(disabledelay2));
memcpy((void*)Pdelay3, disabledelay3, sizeof(disabledelay3));
memcpy((void*)Pattack1, disableattack1, sizeof(disableattack1));
memcpy((void*)Pattack2, disableattack2, sizeof(disableattack2));
memcpy((void*)Pattack3, disableattack3, sizeof(disableattack3));
WriteMemory(ssnoanimAdyy, 6, 0xD8, 0x8B, 0x14, 0x01, 0x00, 0x00);
}
}
//NonAggro
DWORD aggro1Adyy = 0x005BE6F7;
DWORD aggro1Return = aggro1Adyy+6;
BYTE disableaggro1[] = {0x89, 0x4C, 0x24, 0x48, 0x8B, 0x4F, 0x0C};
void __declspec(naked) _stdcall aggro1ASM()
{
__asm
{
mov [esp+0x48],ecx
mov [esp+0x30],0x00000000
mov [esp+0x4C],0x00000000
mov [esi+0x0000029C],0x00000000
mov [esi+0x000002D4],0x00000000
mov [esi+0x000003B4],0x00000000
mov [esi+0x000003EC],0x00000000
mov [esi+0x00000424],0x00000000
mov [esi+0x0000045C],0x00000000
mov [esi+0x00000240],0x00000000
mov [esi+0x0000023C],0x00000000
mov [esi+0x00000238],0x00000000
mov ecx,[edi+0x0C]
jmp [aggro1Return]
}
}
DWORD aggro2Adyy = 0x005BE70F;
DWORD aggro2Return = aggro2Adyy+7;
BYTE disableaggro2[] = {0x0F, 0xB7, 0x86, 0x64, 0x01, 0x00, 0x00};
void __declspec(naked) _stdcall aggro2ASM()
{
__asm
{
movzx eax,word ptr [esi+0x00000160]
mov byte ptr [esi+0x00000180],0x00
mov byte ptr [esi+0x00000250],0x00
mov dword ptr [esi+0x0000024C],0x00000000
mov dword ptr [esi+0x00000248],0x00000000
mov dword ptr [esi+0x00000244],0x00000000
mov eax,0x00000006
mov [esi+0x00000160],ax
jmp [aggro2Return]
}
}
void Dekaron::checkBox6_CheckedChanged(System::Object^ sender, System::EventArgs^ e)
{
if(this->checkBox6->Checked)
{
*(DWORD*)aggro1Adyy = 0xE9;
*(DWORD*)aggro2Adyy = 0xE9;
*(DWORD*)(aggro1Adyy + 1) = jmp(aggro1Adyy, aggro1ASM);
*(DWORD*)(aggro2Adyy + 1) = jmp(aggro2Adyy, aggro2ASM);
}
else
{
WriteMemory(aggro1Adyy, 7, 0x89, 0x4C, 0x24, 0x48, 0x8B, 0x4F, 0x0C);
WriteMemory(aggro2Adyy, 7, 0x0F, 0xB7, 0x86, 0x64, 0x01, 0x00, 0x00);
}
}
DWORD ssdillAdyy = 0x005D265E;
DWORD dillReturn = ssPotAdyy+5;
BYTE disabledill[] = {0x5F, 0x5E, 0xC2, 0x04, 0x00};
#define FuncToCall 0x00566980
DWORD myfunc = FuncToCall;
BYTE *blah3 = new BYTE[2024];
void __declspec(naked) _stdcall dillASM()
{
__asm
{
mov bx,[edi+0x10]
mov eax,blah3
mov dword ptr [eax],0xE7395B84
mov dword ptr [eax+0x04],0x00180000
mov dword ptr [eax+0x08],0x00000000
mov dword ptr [eax+0x0C],0x05030003
mov dword ptr [eax+0x10],0x00000500
mov [eax+0x14],bx
mov word ptr [eax+0x16],0x1000
mov ecx,[0x00CA01B0]
mov bx,0x0001
push eax
__asm call dword ptr [myfunc];
mov ax,0x0001
pop edi
pop esi
ret 0004
}
}
void Dekaron::checkBox7_CheckedChanged(System::Object^ sender, System::EventArgs^ e)
{
if(this->checkBox7->Checked)
{
*(BYTE*)ssdillAdyy = 0xE9;
*(DWORD*)(ssdillAdyy + 1) = jmp(ssdillAdyy, dillASM);
}
else
{
WriteMemory(ssdillAdyy, 5, 0x5F, 0x5E, 0xC2, 0x04, 0x00);
}
}
Code:
#include <Windows.h>
#define jmp(frm, to) (int)(((int)to - (int)frm) - 5)
#define jne(frm, to) (int)(((int)to - (int)frm) - 5)
#define je(frm, to) (int)(((int)to - (int)frm) - 5)
// don't do anything, it's not a functioni
DWORD ReadPointer1(CONST LPDWORD lpdwBase, CONST INT iOffset) { __try { return *(LPDWORD)(*lpdwBase + iOffset); } __except (EXCEPTION_EXECUTE_HANDLER) { return NULL; } }
//Reads a Pointer
unsigned long ReadPointer(unsigned long ulBase, int iOffset) //Now look at my read pointer.
{
__try { return *(unsigned long*)(*(unsigned long*)ulBase + iOffset); }
__except (EXCEPTION_EXECUTE_HANDLER) { return 0; }
}
//Reads Negative Pointers
int ReadNegativePointer(int ulBase, int iOffset)
{
__try { return *(int*)(*(int*)ulBase + iOffset); }
__except (EXCEPTION_EXECUTE_HANDLER) { return 0; }
}
//Writes a Pointer
bool WritePointer(unsigned long ulBase, int iOffset, int iValue)
{
__try { *(int*)(*(unsigned long*)ulBase + iOffset) = iValue; return true; }
__except (EXCEPTION_EXECUTE_HANDLER) { return false; }
}
unsigned long GetPointedAddress(unsigned long ulBase, int iOffset)
{
__try { return *(unsigned long*)ulBase + iOffset; }
__except (EXCEPTION_EXECUTE_HANDLER) { return 0; }
}
bool WriteValue(unsigned long ulBase, int iOffset, int iValue)
{
__try { *(int*)(ulBase + iOffset) = iValue; return true; }
__except (EXCEPTION_EXECUTE_HANDLER) { return false; }
}
//WritePointer Function---------------------------------------------------------------------
void Memory(PVOID address, void* val, int bytes)
{
DWORD d, ds;
VirtualProtect(address, bytes, PAGE_EXECUTE_READWRITE, &d);
memcpy(address, val, bytes);
VirtualProtect(address,bytes,d,&ds);
}
//waitn
void MakePageWritable(unsigned long ulAddress, unsigned long ulSize)
{
MEMORY_BASIC_INFORMATION* mbi = new MEMORY_BASIC_INFORMATION;
VirtualQuery((void*)ulAddress, mbi, ulSize);
if (mbi->Protect != PAGE_EXECUTE_READWRITE)
{
unsigned long* ulProtect = new unsigned long;
VirtualProtect((void*)ulAddress, ulSize, PAGE_EXECUTE_READWRITE, ulProtect);
delete ulProtect;
}
delete mbi;
}
//CALL Function------------------------------------------------------
bool Call(unsigned long ulAddress, void* Function, unsigned long ulNops)
{
__try
{
*(unsigned char*)ulAddress = 0xE8;
*(unsigned long*)(ulAddress + 1) = jmp(ulAddress, Function);
memset((void*)(ulAddress + 5), 0x90, ulNops);
return true;
}
__except (EXCEPTION_EXECUTE_HANDLER) { return false; }
}
//JMPCALL Function------------------------------------------------------
inline DWORD_PTR jmpcall(LPCVOID lpcvSrc, LPCVOID lpcvDest)
{
return reinterpret_cast<DWORD_PTR>(lpcvDest) - reinterpret_cast<DWORD_PTR>(lpcvSrc) - 5;
}
//MakePageRWX Function------------------------------------------------------
bool MakePageRWX(LPCVOID lpcvMemory)
{
MEMORY_BASIC_INFORMATION mbiInfo;
SecureZeroMemory(&mbiInfo, sizeof(MEMORY_BASIC_INFORMATION));
if (VirtualQuery(lpcvMemory, &mbiInfo, sizeof(mbiInfo)) == 0)
return false;
if (mbiInfo.Protect != PAGE_EXECUTE_READWRITE)
{
DWORD dwProtect = 0;
return (VirtualProtect(const_cast<LPVOID>(lpcvMemory), mbiInfo.RegionSize, PAGE_EXECUTE_READWRITE, &dwProtect) != FALSE);
}
return true;
}
//JUMPCALL Function------------------------------------------------------
bool JumpCall(bool fJump, const LPBYTE lpbAddress, LPCVOID lpcvHook, const LPBYTE lpbBuffer, size_t cNops)
{
if (MakePageRWX(reinterpret_cast<LPCVOID>(lpbAddress)))
{
if (lpbBuffer != NULL)
memcpy(reinterpret_cast<void*>(lpbBuffer), reinterpret_cast<const void*>(lpbAddress), cNops + 5);
*lpbAddress = (fJump ? 0xE9 : 0xE8);
*reinterpret_cast<LPDWORD>(lpbAddress + 1) = jmpcall(lpbAddress, lpcvHook);
if (cNops)
memset(reinterpret_cast<void*>(lpbAddress + 5), 0x90, cNops);
return true;
}
return false;
}
void WriteMemory( unsigned long ulAddress, unsigned char ucAmount, ...)
{
//MakePageWritable(ulAddress, (unsigned long)ucAmount); //Make memory writable before any modifications are attempted
DWORD dwOldProtect;
VirtualProtect((void*)ulAddress, ucAmount, PAGE_EXECUTE_READWRITE, &dwOldProtect);//Unprotect memory
va_list* va = new va_list;
va_start(*va, ucAmount);
for (unsigned char ByteToWrite = va_arg(*va, unsigned char), ucIndex = 0; ucIndex < ucAmount; ucIndex++, ByteToWrite = va_arg(*va, unsigned char))
{
*(unsigned char*)(ulAddress + ucIndex) = ByteToWrite;
}
va_end(*va);
delete va;
VirtualProtect((void*)ulAddress, ucAmount, dwOldProtect, &dwOldProtect);//revert back to the original.
}