#pragma region FMA&MobDisarm unsigned long ulIntersectRect = (unsigned long)GetProcAddress(GetModuleHandle("user32.dll"), "IntersectRect"); unsigned long ulIntersectRectRet = ulIntersectRect + 5; void __declspec(naked) FMA_ASM(){ __asm { cmp dword ptr [esp],0x00771641 // 85 c0 75 0C 8B 5C ? ? 45 je return_true mov edi,edi push ebp mov ebp,esp jmp dword ptr [ulIntersectRectRet] return_true: mov eax,1 ret 0x0C } } void __declspec(naked) Disarm_ASM(){ __asm { cmp [esp],0x00770D56//85 c0 75 35 8D 4c 24 ? je return_false cmp [esp],0x00756AE2//85 c0 75 6b 39 ? ? ? je return_false cmp [esp],0x00756B0B//85 c0 ? ? ? ? ? ? 33 c9 Eb je return_false cmp [esp],0x00756B26//85 C0 74 04 33 C9 ? ? je return_false cmp [esp],0x00756B49//85 C0 0F ? 8E ? ? ? B9 je return_false cmp [esp],0x0074A0A2//85 C0 ? 84 6E ? ? ? 5F 5E 5D B8 ? je return_false mov edi,edi push ebp mov ebp,esp jmp dword ptr ulIntersectRectRet return_false: mov eax,0 ret 0x000C } } void __declspec(naked) Both_ASM(){ __asm { IntersectRectHook: cmp [esp],0x00770D56 je return_false cmp [esp],0x00756AE2 je return_false cmp [esp],0x00756B0B je return_false cmp [esp],0x00756B26 je return_false cmp [esp],0x00756B49 je return_false cmp [esp],0x0074A0A2 je return_false cmp [esp],0x00771641 je return_true mov edi,edi push ebp mov ebp,esp jmp ulIntersectRectRet return_false: mov eax,0 ret 0x000C return_true: mov eax,1 ret 0x000C } } bool FMAOn = false; bool MobDisarmOn = false; void FMAMobDisarm() { if(FMAOn) { VirtualProtect((LPVOID)ulIntersectRect, 5, PAGE_EXECUTE_READWRITE, &dw_OldProtect); Jump(ulIntersectRect, FMA_ASM, 0); VirtualProtect((LPVOID)ulIntersectRect, 5, dw_OldProtect, &dw_OldProtect); } else if(MobDisarmOn) { VirtualProtect((LPVOID)ulIntersectRect, 5, PAGE_EXECUTE_READWRITE, &dw_OldProtect); Jump(ulIntersectRect, Disarm_ASM, 0); VirtualProtect((LPVOID)ulIntersectRect, 5, dw_OldProtect, &dw_OldProtect); } else if(MobDisarmOn && FMAOn) { VirtualProtect((LPVOID)ulIntersectRect, 5, PAGE_EXECUTE_READWRITE, &dw_OldProtect); Jump(ulIntersectRect, Both_ASM, 0); VirtualProtect((LPVOID)ulIntersectRect, 5, dw_OldProtect, &dw_OldProtect); } } //fma void Form1::checkBox10_CheckedChanged(System::Object^ sender, System::EventArgs^ e){ if(this->checkBox10->Checked){ FMAOn = true; FMAMobDisarm(); }else{ FMAOn = false; WriteMemory(ulIntersectRect, 5, 0x8b, 0xFF, 0x55, 0x8b, 0xEC); FMAMobDisarm(); } } //Mob Disarm void Form1::checkBox11_CheckedChanged(System::Object^ sender, System::EventArgs^ e){ if(this->checkBox11->Checked){ MobDisarmOn = true; FMAMobDisarm(); }else{ MobDisarmOn = false; WriteMemory(ulIntersectRect, 5, 0x8b, 0xFF, 0x55, 0x8b, 0xEC); FMAMobDisarm(); } } #pragma endregion FMA&MobDisarm