Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Shared SavedVariables

Упомянутые в теме пользователи:

Показано с 1 по 12 из 19

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Заблокирован
    Регистрация
    14.12.2018
    Адрес
    Кровать твоей мамы
    Сообщений
    244
    Поблагодарил(а)
    44
    Получено благодарностей: 126 (сообщений: 93).
    Репутация: 126

    Shared SavedVariables

    Цель мода сделать SavedVariables общими для всех аккаунтов, что б не приходилось каждый раз лазить в WTF. Настраиваете аддоны 1 раз, и в дальнейшем при смене аккаунта все что остается сделать это выбрать нужный профиль в настройках аддонов, будто вы зашли на твинка в пределах 1 акка.
    По идеи должно хорошо сочитаться с ActionBarSaver, кто тестанет, отпишите.

    Скачать:
    http://www.mediafire.com/file/98n948...lobal.zip/file

    Установка:
    Распаковываете содержимое архива в директорию игры, там где лежит Wow.exe. В дальнейшем запускаете игру через инжектор из архива.
    Если у вас название экзешника игры отличается от обычного, например Wowcircle.exe, переименуйте инжектор в Wowcircle_mods.exe, либо сам клиент в Wow.exe.

    Мойнез из холдильника пропал это все ты!!1


    Нет, ты.

    global.dll


    main
    PHP код:
    #include <Windows.h>
    #include "Detours.hpp"
    #define GLOBAL "Global"

    Detourdetour;

    inline auto Hook()
    {
        
    detour->Detach(); // Восстанавливаем
        
    auto res = ((int32_t(__cdecl*)())detour->Address())(); // и вызываем оригинальную функцию
        
    detour->Attach(); // Хук на место

        
    auto acc = (char*)0x00c24418// Поле в котором лежит имя аккаунта
        
    if (strcmp(acc, GLOBAL) != 0) { // Если не равно Global
            
    strcpy(acc, GLOBAL); // Пишем Global
            
    for (auto i strlen(acc) + 1acc[i] != '\0'i++) // Если имя аккаунта длиннее Global
                
    acc[i] = '\0'// Заполняем разницу нолями
        
    }

        return 
    res;
    }

    BOOL WINAPI DllMain(HMODULE hModuleDWORD dwReasonLPVOID)
    {
        if (
    dwReason == DLL_PROCESS_ATTACH) {
            
    DisableThreadLibraryCalls(hModule);
            
    detour = new Detour(0x004de390, (int)Hook); // Записываем джамп на хук в процедуру которая вызывается для реквеста у сервера биндов/макросов и т.п.
        
    }

        return 
    TRUE;

    Detours.hpp
    PHP код:
    #pragma once
    #include <Windows.h>
    #include <vector>
    #include <cstdint>


    class Detour
    {
    public:
        
    Detour(int pFuncint pHook)
            : 
    m_pFunc(pFunc), m_pHook(pHook)
        {
            
    m_orig.reserve(6);
            
    m_path.reserve(6);

            for (
    int8_t i 06; ++i)
                
    m_orig.push_back(*(int*)(pFunc i));

            
    m_path.push_back(0x68);
            for (
    int8_t i 04; ++i)
                
    m_path.push_back(pHook >> (8) & 0xff);
            
    m_path.push_back(0xC3);

            
    Attach();
        }

        ~
    Detour()
        {
            if (
    applied)
                
    Detach();
        }

        
    void Attach()
        {
            
    DWORD dwProtect;
            
    VirtualProtect((LPVOID)m_pFunc6PAGE_EXECUTE_READWRITE, &dwProtect);
            
    memcpy((LPVOID)m_pFuncm_path.data(), 6);
            
    VirtualProtect((LPVOID)m_pFunc6dwProtect0);

            
    applied true;
        }

        
    void Detach()
        {
            
    DWORD dwProtect;
            
    VirtualProtect((LPVOID)m_pFunc6PAGE_EXECUTE_READWRITE, &dwProtect);
            
    memcpy((LPVOID)m_pFuncm_orig.data(), 6);
            
    VirtualProtect((LPVOID)m_pFunc6dwProtect0);

            
    applied false;
        }

        
    int Address()
        {
            return 
    m_pFunc;
        }
    private:
        
    bool applied false;
        
    std::vector<bytem_origm_path;
        
    int m_pFuncm_pHook;
    }; 
    [свернуть]

    Инжектор

    PHP код:
    #include <Windows.h>
    #include <filesystem>
    #include <iostream>
    #include <string>
    #include <vector>
    #include <sstream>

    std::string progargs;
    std::vector<std::stringdlls;

    inline auto Error(const charformat, ...)
    {
        
    AllocConsole();
        
    freopen("CONOUT$""w"stdout);

        
    va_list argptr;
        
    va_start(argptrformat);
        
    printf(formatargptr);
        
    va_end(argptr);
        
    printf("\r\n");

        
    getchar();
        exit(
    0);
    }

    inline auto InjectDll(LPTHREAD_START_ROUTINE loadlibraryaHANDLE hProcess, const std::stringdllname)
    {
        
    bool res false;
        if (
    auto lpAddr VirtualAllocEx(hProcessNULLdllname.size(), MEM_COMMITPAGE_READWRITE)) {
            if (
    WriteProcessMemory(hProcesslpAddrdllname.c_str(), dllname.size(), NULL)) {
                if (
    auto hThread CreateRemoteThread(hProcessFALSE0loadlibraryalpAddr0NULL)) {
                    
    res WaitForSingleObject(hThread10 1000) == WAIT_OBJECT_0;
                    
    CloseHandle(hThread);
                }
            }
            
    VirtualFreeEx(hProcesslpAddrdllname.size(), MEM_FREE);
        }
        return 
    res;
    }

    inline auto strsplit(const std::stringstrchar delim)
    {
        
    std::stringstream strstream(str);
        
    std::vector<std::stringres;
        for (
    std::string itemstd::getline(strstreamitemdelim);)
            
    res.push_back(item);
        
        return 
    res;
    }

    inline auto PutToContainer(const std::stringstrpath)
    {
        if (
    std::filesystem::exists(strpath)) {
            
    auto abspath std::filesystem::absolute(strpath);
            if (
    std::filesystem::is_directory(abspath)) {
                for (
    autofile std::filesystem::directory_iterator(abspath)) {
                    
    auto filepath file.path();
                    if (
    filepath.extension().compare(".dll") == 0)
                        
    dlls.push_back(filepath.string());
                }
            } else if(
    std::filesystem::is_regular_file(abspath)) {
                if (
    abspath.extension().compare(".dll") == 0)
                    
    dlls.push_back(abspath.string());
                else if ((
    abspath.extension().compare(".exe") == 0)) {
                    if (
    prog.empty())
                        
    prog abspath.string();
                    else
                        
    Error("%s\r\nProgram alredy assigned!"strpath);
                }
                else
                    
    Error("%s\r\nUnknown file extension. Expected \".exe\" or \".dll\""abspath.c_str());
            }else
                
    Error("%s\r\nUnknown file type."abspath.c_str());
        }
        else {
            if (
    std::filesystem::exists(strpath ".dll"))
                
    dlls.push_back(strpath ".dll");
            else if(
    std::filesystem::exists(strpath ".exe")){
                if (
    prog.empty())
                    
    prog std::filesystem::absolute(strpath ".exe").string();
                else
                    
    Error("%s\r\nProgram alredy assigned!"strpath);
            }
            else
                
    args.append(strpath).append(" ");
        }
    }

    int main(int argccharargv[])
    {
        
    auto launch std::filesystem::path(argv[0]);

        
    auto vector strsplit(launch.stem().string(), '_');
        if (
    vector.size() <= 1) {
            
    vector.clear();
            for (
    int8_t i 1argci++)
                
    vector.push_back(argv[i]);
        }
        else {
            for (
    int8_t i 1argci++)
                
    args.append(argv[i]).append(" ");
        }


        for (
    autoval vector)
            
    PutToContainer(val);

        if (
    prog.empty())
            
    Error("Program is not assigned");

        
    args.insert(0std::filesystem::absolute(prog).string().append(" "));

        
    STARTUPINFOA sInfo = { sizeof(STARTUPINFOA) };
        
    PROCESS_INFORMATION pInfo;
        
        if (!
    CreateProcessA(prog.c_str(), args.data(), NULLNULLFALSE0NULLNULL, &sInfo, &pInfo))
            
    Error("Program launch fail");

        
    auto loadlibrarya = (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandleA("kernel32"), "LoadLibraryA");
        for (
    autodll dlls) {
            if (!
    InjectDll(loadlibraryapInfo.hProcessdll))
                
    Error("%s\r\nInjection fail."dll.c_str());
        }

        
    WaitForSingleObject(pInfo.hProcessINFINITE);
        
    CloseHandle(pInfo.hProcess);
        
    CloseHandle(pInfo.hThread);

        return 
    0;

    [свернуть]

    https://www.virustotal.com/gui/file/...54fb/detection
    https://www.virustotal.com/gui/file/...8823/detection
    [свернуть]



    зы.: Сделал перекат в всстудио, теперь без громоздких рантаймов. Ахк на очереди.
    Последний раз редактировалось Толя фитоняшка; 12.04.2019 в 18:10.

Похожие темы

  1. [Paladin] Kizz - "The shared souls" (PvP Movie)
    от Kizz в разделе Корзина
    Ответов: 191
    Последнее сообщение: 07.03.2015, 19:08

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •