Resultados 1 a 10 de 14

Threaded View

  1. #1
    Developer C++ boris160's Avatar
    Data de Ingresso
    Apr 2016
    Posts
    61
    Thanks Thanks Given 
    3
    Thanks Thanks Received 
    4
    Thanked in
    2 Posts
    Mencionado
    23 Post(s)

    Post [SOURCE] SmokerEffect code main MuEmu

    Bom fiz uma pequena adaptação desse efeito para o main emu S4,com base na source S6 da Mwebgame,se tiver alguma falha no code peço desculpas como disse foi uma adaptação q para mim funcionou!

    SmokerEffect.h
    Dica


    extern bool g_sEnabled;
    void AttachNewEffect();


    SmokerEffect.cpp
    Dica

    #include "StdAfx.h"
    #include "SmokerEffect.h"
    #include "ToolKit.h"
    #include "Offset.h"
    #include "Defines.h"


    DWORD pItemType = 0;


    bool g_sEnabled = GetPrivateProfileIntA("Setting", "SmokerEffect", 0, ".\\Settings.ini");




    __declspec(naked) void SetItemEffect()
    {
    __asm
    {
    Mov pItemType, Eax
    }


    switch (pItemType)
    {
    case ITEM2(11, 100):
    {
    __asm
    {
    Mov Esi, HDK_ITEM_EFFECT_ALLOW
    JMP Esi
    }
    }
    break;
    }


    __asm
    {
    Mov Esi, HDK_ITEM_EFFECT_NOT_ALLOW
    JMP Esi
    }
    }


    __declspec(naked) void SetColorEffect()
    {
    __asm
    {
    Mov pItemType, Ecx
    }




    switch (pItemType)
    {
    case ITEM2(11, 29): //RED
    __asm
    {
    MOV EDX, DWORD PTR SS : [EBP + 0xC]
    MOV DWORD PTR DS : [EDX + 0x9C], 0x3F266666 //Red Color Value
    MOV EAX, DWORD PTR SS : [EBP + 0xC]
    MOV DWORD PTR DS : [EAX + 0xA0], 0 //Green Color Value
    MOV ECX, DWORD PTR SS : [EBP + 0xC]
    MOV DWORD PTR DS : [ECX + 0xA4], 0 //Blue Color Value


    }
    break;
    }


    __asm
    {
    Mov Esi, HDK_NEXT_ITEM_COLOR
    JMP Esi
    }
    }
    void AttachNewEffect()
    {
    if (!g_sEnabled)
    return;


    DWORD dwPotect;


    dwPotect = ToolKit.UnProtect(HDK_SET_ITEM_EFFECT, 11); //12
    ToolKit.SetNop(HDK_SET_ITEM_EFFECT, 11);//12
    ToolKit.WriteJmp(HDK_SET_ITEM_EFFECT, (DWORD)&SetItemEffect);
    ToolKit.Protect(HDK_SET_ITEM_EFFECT, 21, dwPotect); //22


    dwPotect = ToolKit.UnProtect(HDK_SET_COLOR_EFFECT, 30);//46
    ToolKit.SetNop(HDK_SET_COLOR_EFFECT, 30); //46
    ToolKit.WriteJmp(HDK_SET_COLOR_EFFECT, (DWORD)&SetColorEffect);
    ToolKit.Protect(HDK_SET_COLOR_EFFECT, 45, dwPotect); //56
    }


    Defines.h
    Dica

    #define ITEM_INTER 333
    #define ITEM(x, y) ((x * 512) + y)
    #define ITEM2(x, y) ((x * 512) + y + ITEM_INTER)
    #define Color4f(r, b, g, o) ((o << 24) + (g << 16) + (b << 8) + r)
    #define HDK_SET_ITEM_EFFECT 0x004F31FB
    #define HDK_SET_COLOR_EFFECT 0x004F326F
    #define HDK_ITEM_EFFECT_ALLOW 0x0057AD8D
    #define HDK_ITEM_EFFECT_NOT_ALLOW 0x0057B73B
    #define HDK_NEXT_ITEM_COLOR 0x0057AF2E


    ToolKit.h
    Dica

    #pragma once


    #include "StdAfx.h"


    class ToolKitEx
    {
    public:
    ToolKitEx();
    virtual ~ToolKitEx();


    bool FileExists(char * name);
    void SetNop(DWORD dwSrcOffset, int Size);
    void SetByteP(DWORD dwSrcOffset, BYTE bOpCode);
    void SetByteU(DWORD dwOffset, BYTE btValue);
    void WriteJmp(DWORD dwSrcOffset, DWORD dwDstOffset);
    void HookThis(DWORD dwDstOffset, DWORD dwSrcOffset);
    void HookOffset(DWORD my, DWORD tohook, BYTE type);
    void HookExactOffset(DWORD my, DWORD tohook, BYTE type);
    void Protect(DWORD dwSrcOffset, int Size, DWORD dwNewProtect);
    DWORD UnProtect(DWORD dwSrcOffset, int Size);


    private:


    protected:
    };
    extern ToolKitEx ToolKit;


    ToolKit.cpp
    Dica

    #include "StdAfx.h"
    #include "ToolKit.h"


    ToolKitEx::ToolKitEx() {};


    ToolKitEx::~ToolKitEx() {};


    ToolKitEx ToolKit;


    void ToolKitEx::Protect(DWORD dwSrcOffset, int Size, DWORD dwNewProtect)
    {
    DWORD OldProtect = 0;
    VirtualProtect((LPVOID)dwSrcOffset, Size, dwNewProtect, &OldProtect);
    };


    DWORD ToolKitEx::UnProtect(DWORD dwSrcOffset, int Size)
    {
    DWORD OldProtect = 0;
    VirtualProtect((LPVOID)dwSrcOffset, Size, PAGE_EXECUTE_READWRITE, &OldProtect);
    return OldProtect;
    };


    void ToolKitEx::SetNop(DWORD dwSrcOffset, int Size)
    {
    for (int i = 0; i < Size; i++)
    *(BYTE*)(dwSrcOffset + i) = 0x90;
    };


    void ToolKitEx::SetByteP(DWORD dwSrcOffset, BYTE bOpCode)
    {
    __try
    {
    DWORD dwProtect = this->UnProtect(dwSrcOffset, 1);
    *(BYTE*)(dwSrcOffset) = bOpCode;
    this->Protect(dwSrcOffset, 1, dwProtect);
    }
    __finally {}
    }


    void ToolKitEx::WriteJmp(DWORD dwSrcOffset, DWORD dwDstOffset)
    {
    if (dwSrcOffset)
    {
    __try
    {
    DWORD dwOffset = UnProtect(dwSrcOffset, 10);
    SetByteP(dwSrcOffset, 0xE9);
    HookThis(dwDstOffset, dwSrcOffset);
    Protect(dwSrcOffset, 10, dwOffset);
    }
    __finally {}
    }
    };


    void ToolKitEx::HookThis(DWORD dwDstOffset, DWORD dwSrcOffset)
    {
    *(DWORD*)(dwSrcOffset + 1) = dwDstOffset - (dwSrcOffset + 5);
    };


    void ToolKitEx::HookExactOffset(DWORD my, DWORD tohook, BYTE type)
    {
    *(BYTE*)tohook = type;
    *(DWORD*)(tohook + 1) = my;
    };


    void ToolKitEx::HookOffset(DWORD my, DWORD tohook, BYTE type)
    {
    *(BYTE*)tohook = type;
    *(DWORD*)(tohook + 1) = my - (tohook + 5);
    };


    void ToolKitEx::SetByteU(DWORD dwOffset, BYTE btValue)
    {
    *(BYTE*)(dwOffset) = btValue;
    };


    bool ToolKitEx::FileExists(char * name)
    {
    if (CreateFile(name, 0, 0, 0, OPEN_EXISTING, 0, 0) == INVALID_HANDLE_VALUE)
    return false;
    return true;
    };

    Main.cpp

    Dica


    #include "SmokerEffect.h"


    AttachNewEffect();



    RESULTADO









    pra quem utiliza versão season 6 os offsets são

    0x0057AD82
    0x0057AEFA
    0x0057AD8D
    0x0057B73B
    0x0057AF2E


    créditos :
    MWebGame
    Boris160
    Last edited by boris160; 30/06/2017 at 04:03 PM.

Tags para este Tópico

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • You may not post Resposta(s)
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •  
Sobre nós
Somos uma comunidade em atividade a 8 anos que aborda assuntos relacionados a games em geral, principalmente games MMORPG. e que busca sempre ajudar os membros através de conteúdos, tutoriais e suporte...
Nossos anunciantes
Hinetworks
VelozHost
InovHost
Rede Sociais