AHK скрипт T1RANIUM | AHK SKIN CHANGER | EXTERNAL

Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
И снова приветствую вас, друзья! Представляю вашему вниманию новый skin changer - T1RANIUM, написанный на скриптовом языке - AutoHotkey v2.0.
Этот скрипт вобрал в себя логику прошлой версии, но потерпел небольшое переосмысление по нескольким направлениям. Этот скрипт - смесь нескольких моих гайдов на тематику AutoHotkey.


Особенности T1RANIUM по отношению к прошлой версии:
  • Код скрипта написан на новой релизнутой версии AutoHotkey v2.0, которая в свою очередь стала более оптимизированной.
  • Переосмыслена логика выражений, за счёт чего значительно уменьшено конечное количество строчек кода.
  • Добавлен парсер для автоматического обновления ID скинов ко всем видам оружия.
  • Приспособлен signature scanner из прошлого моего гайда (сигнатуры взяты из
    Пожалуйста, авторизуйтесь для просмотра ссылки.
    ).
  • Стабильность скрипта значительно увеличена, за счёт чего скины стали применятся в 99.5% случаях (зависит от обогревателя).
И так, чтобы начать использовать новый SKIN CHANGER, нужно убедиться, что все компоненты уже присутствуют на вашем ПК. Для работы скрипта необходимо скачать и установить AutoHotkey v2.0, а также Fcode64.dll, который выполняет математику поиска сигнатуры (более подробно *ТУТ).

ВНИМАНИЕ!!!
Если вы хотите обезопасить свой аккаунт от VAC, рекомендую содержимое кода Fcode64.dll компилировать исключительно на своём ПК и некому не передавать этот файл. Это касается и скрипта. Запомните, Valve собирает информацию о метаданных любого файла на ПК человека. Передача даже самого безобидного скрипта может стоить вам блокировки вашего аккаунта и аккаунта друга. Если вы хотите поделиться с кем-то каким-либо скриптом, не поленитесь и передайте содержимое файла, а не сам файл.
Вот содержимое Fcode64.dll:
#include "pch.h"
#include <vector>

using namespace std;

extern "C" __declspec(dllexport) size_t module(HANDLE PROCESS_HANDLE, LPCVOID START_ADDRESS, uintptr_t END_ADDRESS, char* PATTERN, int PATTERN_LENGTH, int EXTRA)
{
    MEMORY_BASIC_INFORMATION mbi;
    mbi.RegionSize = 0x1000;
    size_t start;
    int i = 0;
    int j = 0;

    VirtualQueryEx(PROCESS_HANDLE, START_ADDRESS, &mbi, sizeof(mbi));
    for (start = (size_t)START_ADDRESS; start < start + END_ADDRESS; start += mbi.RegionSize)
    {
        if (!VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi))) continue;
        if (mbi.State != MEM_COMMIT || mbi.Protect & PAGE_NOACCESS) continue;

        vector<char> buffer(mbi.RegionSize);
        if (ReadProcessMemory(PROCESS_HANDLE, mbi.BaseAddress, buffer.data(), mbi.RegionSize, NULL))
        {
            for (i = 0; i < mbi.RegionSize; i++)
            {
                for (j = 0; j < PATTERN_LENGTH; j++)
                {
                    if (buffer[i + j] != PATTERN[j] && PATTERN[j] != -1)
                    {
                        break;
                    }
                }
                if (j == PATTERN_LENGTH)
                {
                    return start + i + EXTRA;
                }
            }
        }
    }
    return -100;
}

extern "C" __declspec(dllexport) size_t process(HANDLE PROCESS_HANDLE, LPCVOID START_ADDRESS, char* PATTERN, int PATTERN_LENGTH, int EXTRA)
{
    MEMORY_BASIC_INFORMATION mbi;
    mbi.RegionSize = 0x1000;
    size_t start;
    int i = 0;
    int j = 0;

    VirtualQueryEx(PROCESS_HANDLE, START_ADDRESS, &mbi, sizeof(mbi));
    for (start = (size_t)START_ADDRESS; VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi)); start += mbi.RegionSize)
    {
        if (!VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi))) continue;
        if (mbi.State != MEM_COMMIT || mbi.Protect & PAGE_NOACCESS) continue;

        vector<char> buffer(mbi.RegionSize);
        if (ReadProcessMemory(PROCESS_HANDLE, mbi.BaseAddress, buffer.data(), mbi.RegionSize, NULL))
        {
            for (i = 0; i < mbi.RegionSize; i++)
            {
                for (j = 0; j < PATTERN_LENGTH; j++)
                {
                    if (buffer[i + j] != PATTERN[j] && PATTERN[j] != -1)
                    {
                        break;
                    }
                }
                if (j == PATTERN_LENGTH)
                {
                    return start + i + EXTRA;
                }
            }
        }
    }
    return -100;
}
Установка AutoHotkey v2.0:
  1. Скачать установочный файл -
    Пожалуйста, авторизуйтесь для просмотра ссылки.
  2. Запустить установочный файл
  3. Клацаем на Install
  4. Появившееся окно - AutoHotkey Dash закрываем
  5. Готово!
Открываем SKIN CHANGER с помощью AutoHotkey v2.0:
  1. Заходим в свойства скрипта правой кнопкой мыши
  2. Изменить
  3. Выбираем в появившемся окне AutoHotkey 64-bit
  4. Закрываем свойства скрипта
  5. Запускаем скрипт и радуемся
Советы по безопасности:
  1. Файл - Fcode64.dll компилируем самостоятельно
  2. Не компилировать скрипт, запускать исключительно в формате .ahk
  3. Не распространять и не передавать знакомым готовый скрипт и Fcode64.dll
Исходя из моего опыта и опыта пользователей прошлого скрипта, прошлую версию скрипта запустило большое количество человек, но ещё ни один из них не получил VAC за использование моего скрипта. Учтите, я не несу ответственность за ваш аккаунт в случае блокировки. Данный скрипт является external читом!
T1RANIUM:
#SingleInstance Force
CALL_WIN_HTTP_REQUEST()
;  Что делать, если не работает скрипт:
;  проверьте свой интернет
;  проверьте паттерн в dwLocalPlayer и dwEntityList
;  если скрипт выдаёт ошибку скорее всего это из-за: накрылся/изменилась структура сайта/не обновились данные - https://csgo.dumps.host или https://github.com/frk1/hazedumper/blob/master/csgo.toml
;  в случае если накрылся парсер как в прошлый раз, прошу об этом написать, исправлю
name_weapon := ["ak47", "aug", "awp", "bizon", "cz75a", "deagle", "elite", "famas", "fiveseven", "g3sg1"
                ,"galilar", "glock", "hkp2000", "m249", "m4a1", "m4a1_silencer", "mac10", "mag7", "mp5sd"
                ,"mp7", "mp9", "negev", "nova", "p250", "p90", "revolver", "sawedoff", "scar20", "sg556"
                ,"ssg08", "tec9", "ump45", "usp_silencer", "xm1014"]
COMPONENT_CHECK()
GET_NETVAR()
INITIALIZING_ARRAY()
LOAD_FAST_CODE()
CONNECTING_TO_GAME("csgo.exe", "client.dll")
dwLocalPlayer := READ_MEMORY(FAST_SEARCH_SIGNATURE_IN_MODULE("8D 34 85 ?? ?? ?? ?? 89 15 ?? ?? ?? ?? 8B 41 08 8B 48 04 83 F9 FF") + 3) + 4 - Client
dwEntityList := READ_MEMORY(FAST_SEARCH_SIGNATURE_IN_MODULE("BB ?? ?? ?? ?? 83 FF 01 0F 8C ?? ?? ?? ?? 3B F8") + 1) + 0 - Client
paint_usp_state := IniRead("settings.ini", "weapon", "usp", 1)
paint_ak47_state := IniRead("settings.ini", "weapon", "ak47", 1)
paint_awp_state := IniRead("settings.ini", "weapon", "awp", 1)
paint_deagle_state := IniRead("settings.ini", "weapon", "deagle", 1)
paint_glock_state := IniRead("settings.ini", "weapon", "glock", 1)
paint_fiveseven_state := IniRead("settings.ini", "weapon", "fiveseven", 1)
paint_p250_state := IniRead("settings.ini", "weapon", "p250", 1)
paint_tec9_state := IniRead("settings.ini", "weapon", "tec9", 1)
paint_m4a4_state := IniRead("settings.ini", "weapon", "m4a4", 1)
paint_m4a1_state := IniRead("settings.ini", "weapon", "m4a1", 1)
paint_galil_state := IniRead("settings.ini", "weapon", "galil", 1)
paint_famas_state := IniRead("settings.ini", "weapon", "famas", 1)
paint_aug_state := IniRead("settings.ini", "weapon", "aug", 1)
paint_sg553_state := IniRead("settings.ini", "weapon", "sg553", 1)
paint_scout_state := IniRead("settings.ini", "weapon", "scout", 1)
paint_mac10_state := IniRead("settings.ini", "weapon", "mac10", 1)
paint_mp7_state := IniRead("settings.ini", "weapon", "mp7", 1)
paint_mp9_state := IniRead("settings.ini", "weapon", "mp9", 1)
paint_bizon_state := IniRead("settings.ini", "weapon", "bizon", 1)
paint_p90_state := IniRead("settings.ini", "weapon", "p90", 1)
paint_ump_state := IniRead("settings.ini", "weapon", "ump", 1)
paint_mag7_state := IniRead("settings.ini", "weapon", "mag7", 1)
paint_nova_state := IniRead("settings.ini", "weapon", "nova", 1)
paint_sawedoff_state := IniRead("settings.ini", "weapon", "sawedoff", 1)
paint_xm1014_state := IniRead("settings.ini", "weapon", "xm1014", 1)
paint_revolver_state := IniRead("settings.ini", "weapon", "revolver", 1)
paint_cz75auto_state := IniRead("settings.ini", "weapon", "cz75auto", 1)
paint_dualberettas_state := IniRead("settings.ini", "weapon", "dualberettas", 1)
paint_p2000_state := IniRead("settings.ini", "weapon", "p2000", 1)
paint_mp5sd_state := IniRead("settings.ini", "weapon", "mp5sd", 1)
paint_negev_state := IniRead("settings.ini", "weapon", "negev", 1)
paint_m249_state := IniRead("settings.ini", "weapon", "m249", 1)
paint_g3sg1_state := IniRead("settings.ini", "weapon", "g3sg1", 1)
paint_scar20_state := IniRead("settings.ini", "weapon", "scar20", 1)
loop
{
    if (LocalPlayer := READ_MEMORY(Client + dwLocalPlayer))
    {
        if (!LifeState := READ_MEMORY(LocalPlayer + m_lifeState))
        {
            try
            {
                Gun := READ_MEMORY(LocalPlayer + m_hActiveWeapon) & 0xFFF
                Gun_address := READ_MEMORY(Client + dwEntityList + (Gun - 1) * 0x10)
                GunID := READ_MEMORY(Gun_address + m_iItemDefinitionIndex, "Short")
                switch GunID
                {
                    case 61:
                        fallbackpaint := USPSILENCER[paint_usp_state]
                    case 7:
                        fallbackpaint := AK47[paint_ak47_state]
                    case 9:
                        fallbackpaint := AWP[paint_awp_state]
                    case 1:
                        fallbackpaint := DEAGLE[paint_deagle_state]
                    case 4:
                        fallbackpaint := GLOCK[paint_glock_state]
                    case 3:
                        fallbackpaint := FIVESEVEN[paint_fiveseven_state]
                    case 36:
                        fallbackpaint := P250[paint_p250_state]
                    case 30:
                        fallbackpaint := TEC9[paint_tec9_state]
                    case 16:
                        fallbackpaint := M4A4[paint_m4a4_state]
                    case 60:
                        fallbackpaint := M4A1SILENCER[paint_m4a1_state]
                    case 13:
                        fallbackpaint := GALILAR[paint_galil_state]
                    case 10:
                        fallbackpaint := FAMAS[paint_famas_state]
                    case 8:
                        fallbackpaint := AUG[paint_aug_state]
                    case 39:
                        fallbackpaint := SG553[paint_sg553_state]
                    case 40:
                        fallbackpaint := SSG08[paint_scout_state]
                    case 17:
                        fallbackpaint := MAC10[paint_mac10_state]
                    case 33:
                        fallbackpaint := MP7[paint_mp7_state]
                    case 34:
                        fallbackpaint := MP9[paint_mp9_state]
                    case 26:
                        fallbackpaint := BIZON[paint_bizon_state]
                    case 19:
                        fallbackpaint := P90[paint_p90_state]
                    case 24:
                        fallbackpaint := UMP45[paint_ump_state]
                    case 27:
                        fallbackpaint := MAG7[paint_mag7_state]
                    case 35:
                        fallbackpaint := NOVA[paint_nova_state]
                    case 29:
                        fallbackpaint := SAWEDOFF[paint_sawedoff_state]
                    case 25:
                        fallbackpaint := XM1014[paint_xm1014_state]
                    case 64:
                        fallbackpaint := REVOLVER[paint_revolver_state]
                    case 63:
                        fallbackpaint := CZ75A[paint_cz75auto_state]
                    case 2:
                        fallbackpaint := ELITE[paint_dualberettas_state]
                    case 32:
                        fallbackpaint := HKP2000[paint_p2000_state]
                    case 23:
                        fallbackpaint := MP5SD[paint_mp5sd_state]
                    case 28:
                        fallbackpaint := НАГИЕВ[paint_negev_state]
                    case 14:
                        fallbackpaint := M249[paint_m249_state]
                    case 11:
                        fallbackpaint := G3SG1[paint_g3sg1_state]
                    case 38:
                        fallbackpaint := SCAR20[paint_scar20_state]
                }
                my_skins := READ_MEMORY(Gun_address + m_nFallbackPaintKit)
                if (!my_skins)
                {
                    WRITE_MEMORY(Gun_address + m_iItemIDHigh, -1)
                    WRITE_MEMORY(Gun_address + m_nFallbackPaintKit, fallbackpaint)
                    WRITE_MEMORY(Gun_address + m_iAccountID, 1)
                }
            }
        }
    }
}
UP::
{
    global
    ActiveWeapon := READ_MEMORY(LocalPlayer + m_hActiveWeapon) & 0xFFF
    ActiveWeapon_address := READ_MEMORY(Client + dwEntityList + (ActiveWeapon - 1) * 0x10)
    ActiveWeaponID := READ_MEMORY(ActiveWeapon_address + m_iItemDefinitionIndex, "Short")
    switch ActiveWeaponID
    {
        case 61:
            if (paint_usp_state != USPSILENCER.Length)
                paint_usp_state++
        case 7:
            if (paint_ak47_state != AK47.Length)
                paint_ak47_state++
        case 9:
            if (paint_awp_state != AWP.Length)
                paint_awp_state++
        case 1:
            if (paint_deagle_state != DEAGLE.Length)
                paint_deagle_state++
        case 4:
            if (paint_glock_state != GLOCK.Length)
                paint_glock_state++
        case 3:
            if (paint_fiveseven_state != FIVESEVEN.Length)
                paint_fiveseven_state++
        case 36:
            if (paint_p250_state != P250.Length)
                paint_p250_state++
        case 30:
            if (paint_tec9_state != TEC9.Length)
                paint_tec9_state++
        case 16:
            if (paint_m4a4_state != M4A4.Length)
                paint_m4a4_state++
        case 60:
            if (paint_m4a1_state != M4A1SILENCER.Length)
                paint_m4a1_state++
        case 13:
            if (paint_galil_state != GALILAR.Length)
                paint_galil_state++
        case 10:
            if (paint_famas_state != FAMAS.Length)
                paint_famas_state++
        case 8:
            if (paint_aug_state != AUG.Length)
                paint_aug_state++
        case 39:
            if (paint_sg553_state != SG553.Length)
                paint_sg553_state++
        case 40:
            if (paint_scout_state != SSG08.Length)
                paint_scout_state++
        case 17:
            if (paint_mac10_state != MAC10.Length)
                paint_mac10_state++
        case 33:
            if (paint_mp7_state != MP7.Length)
                paint_mp7_state++
        case 34:
            if (paint_mp9_state != MP9.Length)
                paint_mp9_state++
        case 26:
            if (paint_bizon_state != BIZON.Length)
                paint_bizon_state++
        case 19:
            if (paint_p90_state != BIZON.Length)
                paint_p90_state++
        case 24:
            if (paint_ump_state != UMP45.Length)
                paint_ump_state++
        case 27:
            if (paint_mag7_state != MAG7.Length)
                paint_mag7_state++
        case 35:
            if (paint_nova_state != NOVA.Length)
                paint_nova_state++
        case 29:
            if (paint_sawedoff_state != SAWEDOFF.Length)
                paint_sawedoff_state++
        case 25:
            if (paint_xm1014_state != XM1014.Length)
                paint_xm1014_state++
        case 64:
            if (paint_revolver_state != REVOLVER.Length)
                paint_revolver_state++
        case 63:
            if (paint_cz75auto_state != CZ75A.Length)
                paint_cz75auto_state++
        case 2:
            if (paint_dualberettas_state != ELITE.Length)
                paint_dualberettas_state++
        case 32:
            if (paint_p2000_state != HKP2000.Length)
                paint_p2000_state++
        case 23:
            if (paint_mp5sd_state != MP5SD.Length)
                paint_mp5sd_state++
        case 28:
            if (paint_negev_state != НАГИЕВ.Length)
                paint_negev_state++
        case 14:
            if (paint_m249_state != M249.Length)
                paint_m249_state++
        case 11:
            if (paint_g3sg1_state != G3SG1.Length)
                paint_g3sg1_state++
        case 38:
            if (paint_scar20_state != SCAR20.Length)
                paint_scar20_state++
    }
    IniWrite(paint_usp_state, "settings.ini", "weapon", "usp")
    IniWrite(paint_ak47_state, "settings.ini", "weapon", "ak47")
    IniWrite(paint_awp_state, "settings.ini", "weapon", "awp")
    IniWrite(paint_deagle_state, "settings.ini", "weapon", "deagle")
    IniWrite(paint_glock_state, "settings.ini", "weapon", "glock")
    IniWrite(paint_fiveseven_state, "settings.ini", "weapon", "fiveseven")
    IniWrite(paint_p250_state, "settings.ini", "weapon", "p250")
    IniWrite(paint_tec9_state, "settings.ini", "weapon", "tec9")
    IniWrite(paint_m4a4_state, "settings.ini", "weapon", "m4a4")
    IniWrite(paint_m4a1_state, "settings.ini", "weapon", "m4a1")
    IniWrite(paint_galil_state, "settings.ini", "weapon", "galil")
    IniWrite(paint_famas_state, "settings.ini", "weapon", "famas")
    IniWrite(paint_aug_state, "settings.ini", "weapon", "aug")
    IniWrite(paint_sg553_state, "settings.ini", "weapon", "sg553")
    IniWrite(paint_scout_state, "settings.ini", "weapon", "scout")
    IniWrite(paint_mac10_state, "settings.ini", "weapon", "mac10")
    IniWrite(paint_mp7_state, "settings.ini", "weapon", "mp7")
    IniWrite(paint_mp9_state, "settings.ini", "weapon", "mp9")
    IniWrite(paint_bizon_state, "settings.ini", "weapon", "bizon")
    IniWrite(paint_p90_state, "settings.ini", "weapon", "p90")
    IniWrite(paint_ump_state, "settings.ini", "weapon", "ump")
    IniWrite(paint_mag7_state, "settings.ini", "weapon", "mag7")
    IniWrite(paint_nova_state, "settings.ini", "weapon", "nova")
    IniWrite(paint_sawedoff_state, "settings.ini", "weapon", "sawedoff")
    IniWrite(paint_xm1014_state, "settings.ini", "weapon", "xm1014")
    IniWrite(paint_revolver_state, "settings.ini", "weapon", "revolver")
    IniWrite(paint_cz75auto_state, "settings.ini", "weapon", "cz75auto")
    IniWrite(paint_dualberettas_state, "settings.ini", "weapon", "dualberettas")
    IniWrite(paint_p2000_state, "settings.ini", "weapon", "p2000")
    IniWrite(paint_mp5sd_state, "settings.ini", "weapon", "mp5sd")
    IniWrite(paint_negev_state, "settings.ini", "weapon", "negev")
    IniWrite(paint_m249_state, "settings.ini", "weapon", "m249")
    IniWrite(paint_g3sg1_state, "settings.ini", "weapon", "g3sg1")
    IniWrite(paint_scar20_state, "settings.ini", "weapon", "scar20")
}
DOWN::
{
    global
    ActiveWeapon := READ_MEMORY(LocalPlayer + m_hActiveWeapon) & 0xFFF
    ActiveWeapon_address := READ_MEMORY(Client + dwEntityList + (ActiveWeapon - 1) * 0x10)
    ActiveWeaponID := READ_MEMORY(ActiveWeapon_address + m_iItemDefinitionIndex, "Short")
    switch ActiveWeaponID
    {
        case 61:
            if (paint_usp_state != 1)
                paint_usp_state--
        case 7:
            if (paint_ak47_state != 1)
                paint_ak47_state--
        case 9:
            if (paint_awp_state != 1)
                paint_awp_state--
        case 1:
            if (paint_deagle_state != 1)
                paint_deagle_state--
        case 4:
            if (paint_glock_state != 1)
                paint_glock_state--
        case 3:
            if (paint_fiveseven_state != 1)
                paint_fiveseven_state--
        case 36:
            if (paint_p250_state != 1)
                paint_p250_state--
        case 30:
            if (paint_tec9_state != 1)
                paint_tec9_state--
        case 16:
            if (paint_m4a4_state != 1)
                paint_m4a4_state--
        case 60:
            if (paint_m4a1_state != 1)
                paint_m4a1_state--
        case 13:
            if (paint_galil_state != 1)
                paint_galil_state--
        case 10:
            if (paint_famas_state != 1)
                paint_famas_state--
        case 8:
            if (paint_aug_state != 1)
                paint_aug_state--
        case 39:
            if (paint_sg553_state != 1)
                paint_sg553_state--
        case 40:
            if (paint_scout_state != 1)
                paint_scout_state--
         case 17:
            if (paint_mac10_state != 1)
                paint_mac10_state--
        case 33:
            if (paint_mp7_state != 1)
                paint_mp7_state--
        case 34:
            if (paint_mp9_state != 1)
                paint_mp9_state--
        case 26:
            if (paint_bizon_state != 1)
                paint_bizon_state--
        case 19:
            if (paint_p90_state != 1)
                paint_p90_state--
        case 24:
            if (paint_ump_state != 1)
                paint_ump_state--
        case 27:
            if (paint_mag7_state != 1)
                paint_mag7_state--
        case 35:
            if (paint_nova_state != 1)
                paint_nova_state--
        case 29:
            if (paint_sawedoff_state != 1)
                paint_sawedoff_state--
        case 25:
            if (paint_xm1014_state != 1)
                paint_xm1014_state--
        case 64:
            if (paint_revolver_state != 1)
                paint_revolver_state--
        case 63:
            if (paint_cz75auto_state != 1)
                paint_cz75auto_state--
        case 2:
            if (paint_dualberettas_state != 1)
                paint_dualberettas_state--
        case 32:
            if (paint_p2000_state != 1)
                paint_p2000_state--
        case 23:
            if (paint_mp5sd_state != 1)
                paint_mp5sd_state--
        case 28:
            if (paint_negev_state != 1)
                paint_negev_state--
        case 14:
            if (paint_m249_state != 1)
                paint_m249_state--
        case 11:
            if (paint_g3sg1_state != 1)
                paint_g3sg1_state--
        case 38:
            if (paint_scar20_state != 1)
                paint_scar20_state--
    }
    IniWrite(paint_usp_state, "settings.ini", "weapon", "usp")
    IniWrite(paint_ak47_state, "settings.ini", "weapon", "ak47")
    IniWrite(paint_awp_state, "settings.ini", "weapon", "awp")
    IniWrite(paint_deagle_state, "settings.ini", "weapon", "deagle")
    IniWrite(paint_glock_state, "settings.ini", "weapon", "glock")
    IniWrite(paint_fiveseven_state, "settings.ini", "weapon", "fiveseven")
    IniWrite(paint_p250_state, "settings.ini", "weapon", "p250")
    IniWrite(paint_tec9_state, "settings.ini", "weapon", "tec9")
    IniWrite(paint_m4a4_state, "settings.ini", "weapon", "m4a4")
    IniWrite(paint_m4a1_state, "settings.ini", "weapon", "m4a1")
    IniWrite(paint_galil_state, "settings.ini", "weapon", "galil")
    IniWrite(paint_famas_state, "settings.ini", "weapon", "famas")
    IniWrite(paint_aug_state, "settings.ini", "weapon", "aug")
    IniWrite(paint_sg553_state, "settings.ini", "weapon", "sg553")
    IniWrite(paint_scout_state, "settings.ini", "weapon", "scout")
    IniWrite(paint_mac10_state, "settings.ini", "weapon", "mac10")
    IniWrite(paint_mp7_state, "settings.ini", "weapon", "mp7")
    IniWrite(paint_mp9_state, "settings.ini", "weapon", "mp9")
    IniWrite(paint_bizon_state, "settings.ini", "weapon", "bizon")
    IniWrite(paint_p90_state, "settings.ini", "weapon", "p90")
    IniWrite(paint_ump_state, "settings.ini", "weapon", "ump")
    IniWrite(paint_mag7_state, "settings.ini", "weapon", "mag7")
    IniWrite(paint_nova_state, "settings.ini", "weapon", "nova")
    IniWrite(paint_sawedoff_state, "settings.ini", "weapon", "sawedoff")
    IniWrite(paint_xm1014_state, "settings.ini", "weapon", "xm1014")
    IniWrite(paint_revolver_state, "settings.ini", "weapon", "revolver")
    IniWrite(paint_cz75auto_state, "settings.ini", "weapon", "cz75auto")
    IniWrite(paint_dualberettas_state, "settings.ini", "weapon", "dualberettas")
    IniWrite(paint_p2000_state, "settings.ini", "weapon", "p2000")
    IniWrite(paint_mp5sd_state, "settings.ini", "weapon", "mp5sd")
    IniWrite(paint_negev_state, "settings.ini", "weapon", "negev")
    IniWrite(paint_m249_state, "settings.ini", "weapon", "m249")
    IniWrite(paint_g3sg1_state, "settings.ini", "weapon", "g3sg1")
    IniWrite(paint_scar20_state, "settings.ini", "weapon", "scar20")
}
COMPONENT_CHECK()
{
    if (!FileExist("CFG.txt"))
        GET_SKINS_ID()
    else if (MsgBox("Обновить список скинов?",, "YesNo") = "Yes")
        GET_SKINS_ID()
    else
        INITIALIZING_ARRAY()
}
INITIALIZING_ARRAY()
{
    global
    loop read "CFG.txt"
    {
        switch name_weapon[A_Index]
        {
            case "ak47":
                AK47 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "aug":
                AUG := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "awp":
                AWP := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "bizon":
                BIZON := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "cz75a":
                CZ75A := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "deagle":
                DEAGLE := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "elite":
                ELITE := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "famas":
                FAMAS := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "fiveseven":
                FIVESEVEN := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "g3sg1":
                G3SG1 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "galilar":
                GALILAR := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "glock":
                GLOCK := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "hkp2000":
                HKP2000 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "m249":
                M249 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "m4a1":
                M4A4 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "m4a1_silencer":
                M4A1SILENCER := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "mac10":
                MAC10 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "mag7":
                MAG7 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "mp5sd":
                MP5SD := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "mp7":
                MP7 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "mp9":
                MP9 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "negev":
                НАГИЕВ := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "nova":
                NOVA := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "p250":
                P250 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "p90":
                P90 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "revolver":
                REVOLVER := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "sawedoff":
                SAWEDOFF := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "scar20":
                SCAR20 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "sg556":
                SG553 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "ssg08":
                SSG08 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "tec9":
                TEC9 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "ump45":
                UMP45 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "usp_silencer":
                USPSILENCER := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
            case "xm1014":
                XM1014 := StrSplit(StrReplace(A_LoopReadLine, name_weapon[A_Index] ": ", ""), A_Space)
        }
    }
}
GET_NETVAR()
{
    global m_hActiveWeapon, m_iItemDefinitionIndex, m_nFallbackPaintKit, m_OriginalOwnerXuidHigh, m_iItemIDHigh, m_iAccountID, m_lifeState
    OPEN_AND_PARSE("https://github.com/frk1/hazedumper/blob/master/csgo.toml")
    page := Parse.ResponseText
    netvar := ["m_hActiveWeapon", "m_iItemDefinitionIndex", "m_nFallbackPaintKit", "m_OriginalOwnerXuidHigh", "m_iItemIDHigh", "m_iAccountID", "m_lifeState"]
    loop netvar.Length
    {
        RegExMatch(page, netvar[A_Index] " = (\d+)", &value)
        switch netvar[A_Index]
        {
            case "m_hActiveWeapon":
                m_hActiveWeapon := value[1]
            case "m_iItemDefinitionIndex":
                m_iItemDefinitionIndex := value[1]
            case "m_nFallbackPaintKit":
                m_nFallbackPaintKit := value[1]
            case "m_OriginalOwnerXuidHigh":
                m_OriginalOwnerXuidHigh := value[1]
            case "m_iItemIDHigh":
                m_iItemIDHigh := value[1]
            case "m_iAccountID":
                m_iAccountID := value[1]
            case "m_lifeState":
                m_lifeState := value[1]
        }
    }
}
GET_SKINS_ID()
{
    if (FileExist("CFG.txt"))
        FileDelete("CFG.txt")
    MyGui := Gui(, "Обновление")
    MyGui.Add("Text",, "Обновление списка:")
    MyGui.Add("Progress", "w200 h20 c00ff37 vMyProgress", 0)
    MyGui.OnEvent("Close", About_Close)
    MyGui.Show("AutoSize")
    About_Close(*)
    {
        MyGui.Destroy()
        ExitApp()
    }
    loop name_weapon.Length
    {
        MyGui["MyProgress"].Value += 3
        weapon := name_weapon[A_Index]
        OPEN_AND_PARSE("https://csgo.dumps.host/items?item=weapon_" weapon)
        ;image := document.getElementsByTagName("img")[1].getAttribute("src")
        length := document.getElementsByClassName("text-xs font-medium text-gray-100").length
        loop length
        {
            Paintkit_id := StrReplace(document.getElementsByClassName("text-xs font-medium text-gray-100")[A_Index - 1].innerText, "Paintkit-id: ", "")
            switch weapon
            {
                case "ak47":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "aug":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "awp":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "bizon":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "cz75a":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "deagle":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "elite":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "famas":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "fiveseven":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "g3sg1":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "galilar":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "glock":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "hkp2000":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "m249":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "m4a1":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "m4a1_silencer":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "mac10":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "mag7":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "mp5sd":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "mp7":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "mp9":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "negev":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "nova":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "p250":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "p90":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "revolver":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "sawedoff":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "scar20":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "sg556":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "ssg08":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "tec9":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "ump45":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "usp_silencer":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
                case "xm1014":
                    CREATE_CFG(A_Index, length, weapon, Paintkit_id)
            }
        }
    }
    MyGui.Destroy()
}
CALL_WIN_HTTP_REQUEST()
{
    global
    Parse := ComObject("WinHttp.WinHttpRequest.5.1")
    document := ComObject("HTMLfile")
    document.write("<meta http-equiv=`"X-UA-Compatible`" content=`"IE=9`">")
}
OPEN_AND_PARSE(URL)
{
    global
    Parse.Open("GET", URL)
    Parse.Send()
    Parse.WaitForResponse()
    document.write(Parse.ResponseText)
    document.close()
}
CREATE_CFG(INDEX, LENGTH, WEAPON, PAINTKIT_ID)
{
    if (INDEX == 1)
        FileAppend(WEAPON ": " Paintkit_id " ", "CFG.txt")
    else if (INDEX != length)
        FileAppend(Paintkit_id " ", "CFG.txt")
    else
        FileAppend(Paintkit_id "`n", "CFG.txt")
}
CONNECTING_TO_GAME(NAME_GAME, DLL_GAME)
{
    global PID, Client, ProcessHandle
    if (!PID        := ProcessWait(NAME_GAME, 60))
    {
        MsgBox("Игра не найдена!")
        ExitApp()
    }
    Client          := GET_DLL_BASE(DLL_GAME, PID)
    ProcessHandle   := DllCall("OpenProcess", "int", 2035711, "char", 0, "UInt", PID, "UInt")
}
GET_DLL_BASE(DLL_GAME, PID)
{
    static TH32CS_SNAPMODULE := 0x00000008
    static TH32CS_SNAPMODULE32 := 0x00000010
    global modBaseSize, hModule
    while hSnapshot := DllCall("CreateToolhelp32Snapshot", "UInt", (TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32), "UInt", PID, "Ptr")
    {
        MODULEENTRY32 := Buffer(A_PtrSize = 8 ? 568 : 548, 0)
        NumPut("UInt", MODULEENTRY32.Size, MODULEENTRY32, 0)
        if (DllCall("Module32First", "UInt", hSnapshot, "UInt", MODULEENTRY32.Ptr))
        {
            while DllCall("Module32Next", "UInt", hSnapshot, "UInt", MODULEENTRY32.Ptr)
            {
                if (DLL_GAME == StrGet(MODULEENTRY32.Ptr + (A_PtrSize = 8 ? 48 : 32), 256, "CP0"))
                {
                    modBaseSize := NumGet(MODULEENTRY32, (A_PtrSize = 8 ? 32 : 24), "Ptr")
                    hModule     := NumGet(MODULEENTRY32, (A_PtrSize = 8 ? 40 : 32), "Ptr")
               
                    DllCall("CloseHandle", "Ptr", hSnapshot)
                    return modBaseAddr := NumGet(MODULEENTRY32, (A_PtrSize = 8 ? 24 : 20), "Ptr")
                }
            }
        }
        DllCall("CloseHandle", "Ptr", hSnapshot)
    }
}
FAST_SEARCH_SIGNATURE_IN_MODULE(PATTERN := "", EXTRA := 0, START_ADDRESS := Client, END_ADDRESS := modBaseSize)
{
    PATTERN := StrSplit(StrReplace(RegExReplace(StrReplace(" " PATTERN, A_Space, " 0x"), A_Space, "", , 1, 1), "0x??", "-1"), A_Space)
    create_array_cpp := Buffer(PATTERN.Length * 1)
    loop PATTERN.Length
    {
        NumPut("Char", PATTERN[A_Index], create_array_cpp.Ptr, (A_Index - 1) * 1)
    }
    result := DllCall(A_PtrSize = 8 ? "Fcode64\module" : "Fcode32\module", "Ptr", ProcessHandle, "Ptr", START_ADDRESS, "Ptr", END_ADDRESS, "Ptr", create_array_cpp, "Ptr", PATTERN.Length, "Ptr", EXTRA, "CDecl Ptr")
    return result != -100 ? Format("0x{:02X}", result) : result
}
FAST_SEARCH_SIGNATURE_IN_PROCESS(PATTERN := "", EXTRA := 0, START_ADDRESS := 0)
{
    PATTERN := StrSplit(StrReplace(RegExReplace(StrReplace(" " PATTERN, A_Space, " 0x"), A_Space, "", , 1, 1), "0x??", "-1"), A_Space)
    create_array_cpp := Buffer(PATTERN.Length * 1)
    loop PATTERN.Length
    {
        NumPut("Char", PATTERN[A_Index], create_array_cpp.Ptr, (A_Index - 1) * 1)
    }
    result := DllCall(A_PtrSize = 8 ? "Fcode64\process" : "Fcode32\process", "Ptr", ProcessHandle, "Ptr", START_ADDRESS, "Ptr", create_array_cpp, "Ptr", PATTERN.Length, "Ptr", EXTRA, "CDecl Ptr")
    return result != -100 ? Format("0x{:02X}", result) : result
}
LOAD_FAST_CODE()
{
    #DllLoad "Kernel32.dll"
    #DllLoad "*i Fcode64.dll"
    #DllLoad "*i Fcode32.dll"
    if (!DllCall("GetModuleHandle", "Str", (A_PtrSize = 8 ? "Fcode64.dll" : "Fcode32.dll")))
    {
        MsgBox("Dll: Fcode не обнаружен!")
        ExitApp()
    }
}
READ_MEMORY(ADDRESS, TYPE := "UInt")
{
    if (DllCall("Kernel32\ReadProcessMemory", "UInt", ProcessHandle, "UInt", ADDRESS, TYPE "*", &uint32 := 0, "Ptr", 4, "UInt", 0))
    return uint32
}
WRITE_MEMORY(ADDRESS, VALUE, TYPE := "UInt")
{
    if (result := DllCall("Kernel32\WriteProcessMemory", "UInt", ProcessHandle, "UInt", ADDRESS, TYPE "*", VALUE, "UInt", 4, "UInt *", 0))
    return result
}
INS:: Pause -1
END:: ExitApp
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
Ребят, забыл уточнить для новичков.
Вопрос:
Как менять скины?
Ответ: Берём в руки нужное оружие, и клавишами UP (следующий скин) или DOWN (предыдущий скин) меняем скин. Для отображения нового скина ждём начала раунда. Рекомендую перед запуском каточки настроить все скины на пользовательских картах.

Вопрос: Сделал всё как написано выдаёт ошибку - "Dll: Fcode не обнаружен!"
Ответ: После того как вы скомпилировали Fcode64.dll (это c++ код), готовый файл положите туда, где находится ваш AHK скрипт со скин ченджером. Если скрипт и Fcode64.dll будут находится в разных местах, скрипт работать не будет. Для лучшего комфорта рекомендую создать отдельную папку и закинуть оба файла туда, после чего создать ярлык AHK скрипта и переместить ярлык, к примеру, на рабочий стол.

Вопрос: Могу ли я передать своему другу мой сет скинов?
Ответ: Да! При запуске AHK файла, он создаст ещё два файла: первый - это все номера красок, второй - ваш конфиг, с которым можно делиться с друзьями.
 
Новичок
Статус
Оффлайн
Регистрация
14 Май 2020
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Error: This variable has not been assigned a value.

Specifically: global LocalPlayer

152: }
155: {
▶ 157: ActiveWeapon := READ_MEMORY(LocalPlayer + m_hActiveWeapon) & 0xFFF
158: ActiveWeapon_address := READ_MEMORY(Client + dwEntityList + (ActiveWeapon - 1) * 0x10)
159: ActiveWeaponID := READ_MEMORY(ActiveWeapon_address + m_iItemDefinitionIndex, "Short")

и много других ошибок
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
Error: This variable has not been assigned a value.

Specifically: global LocalPlayer

152: }
155: {
▶ 157: ActiveWeapon := READ_MEMORY(LocalPlayer + m_hActiveWeapon) & 0xFFF
158: ActiveWeapon_address := READ_MEMORY(Client + dwEntityList + (ActiveWeapon - 1) * 0x10)
159: ActiveWeaponID := READ_MEMORY(ActiveWeapon_address + m_iItemDefinitionIndex, "Short")

и много других ошибок
Ошибок быть недолжно, я надеюсь ты же не в кс 2 запускал скрипт?
 
Новичок
Статус
Оффлайн
Регистрация
27 Май 2023
Сообщения
1
Реакции[?]
0
Поинты[?]
0
как комрелировать это?
#include "pch.h"
#include <vector>

using namespace std;

extern "C" __declspec(dllexport) size_t module(HANDLE PROCESS_HANDLE, LPCVOID START_ADDRESS, uintptr_t END_ADDRESS, char* PATTERN, int PATTERN_LENGTH, int EXTRA)
{
MEMORY_BASIC_INFORMATION mbi;
mbi.RegionSize = 0x1000;
size_t start;
int i = 0;
int j = 0;

VirtualQueryEx(PROCESS_HANDLE, START_ADDRESS, &mbi, sizeof(mbi));
for (start = (size_t)START_ADDRESS; start < start + END_ADDRESS; start += mbi.RegionSize)
{
if (!VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi))) continue;
if (mbi.State != MEM_COMMIT || mbi.Protect & PAGE_NOACCESS) continue;

vector<char> buffer(mbi.RegionSize);
if (ReadProcessMemory(PROCESS_HANDLE, mbi.BaseAddress, buffer.data(), mbi.RegionSize, NULL))
{
for (i = 0; i < mbi.RegionSize; i++)
{
for (j = 0; j < PATTERN_LENGTH; j++)
{
if (buffer[i + j] != PATTERN[j] && PATTERN[j] != -1)
{
break;
}
}
if (j == PATTERN_LENGTH)
{
return start + i + EXTRA;
}
}
}
}
return -100;
}

extern "C" __declspec(dllexport) size_t process(HANDLE PROCESS_HANDLE, LPCVOID START_ADDRESS, char* PATTERN, int PATTERN_LENGTH, int EXTRA)
{
MEMORY_BASIC_INFORMATION mbi;
mbi.RegionSize = 0x1000;
size_t start;
int i = 0;
int j = 0;

VirtualQueryEx(PROCESS_HANDLE, START_ADDRESS, &mbi, sizeof(mbi));
for (start = (size_t)START_ADDRESS; VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi)); start += mbi.RegionSize)
{
if (!VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi))) continue;
if (mbi.State != MEM_COMMIT || mbi.Protect & PAGE_NOACCESS) continue;

vector<char> buffer(mbi.RegionSize);
if (ReadProcessMemory(PROCESS_HANDLE, mbi.BaseAddress, buffer.data(), mbi.RegionSize, NULL))
{
for (i = 0; i < mbi.RegionSize; i++)
{
for (j = 0; j < PATTERN_LENGTH; j++)
{
if (buffer[i + j] != PATTERN[j] && PATTERN[j] != -1)
{
break;
}
}
if (j == PATTERN_LENGTH)
{
return start + i + EXTRA;
}
}
}
}
return -100;
}
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
как комрелировать это?
#include "pch.h"
#include <vector>

using namespace std;

extern "C" __declspec(dllexport) size_t module(HANDLE PROCESS_HANDLE, LPCVOID START_ADDRESS, uintptr_t END_ADDRESS, char* PATTERN, int PATTERN_LENGTH, int EXTRA)
{
MEMORY_BASIC_INFORMATION mbi;
mbi.RegionSize = 0x1000;
size_t start;
int i = 0;
int j = 0;

VirtualQueryEx(PROCESS_HANDLE, START_ADDRESS, &mbi, sizeof(mbi));
for (start = (size_t)START_ADDRESS; start < start + END_ADDRESS; start += mbi.RegionSize)
{
if (!VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi))) continue;
if (mbi.State != MEM_COMMIT || mbi.Protect & PAGE_NOACCESS) continue;

vector<char> buffer(mbi.RegionSize);
if (ReadProcessMemory(PROCESS_HANDLE, mbi.BaseAddress, buffer.data(), mbi.RegionSize, NULL))
{
for (i = 0; i < mbi.RegionSize; i++)
{
for (j = 0; j < PATTERN_LENGTH; j++)
{
if (buffer[i + j] != PATTERN[j] && PATTERN[j] != -1)
{
break;
}
}
if (j == PATTERN_LENGTH)
{
return start + i + EXTRA;
}
}
}
}
return -100;
}

extern "C" __declspec(dllexport) size_t process(HANDLE PROCESS_HANDLE, LPCVOID START_ADDRESS, char* PATTERN, int PATTERN_LENGTH, int EXTRA)
{
MEMORY_BASIC_INFORMATION mbi;
mbi.RegionSize = 0x1000;
size_t start;
int i = 0;
int j = 0;

VirtualQueryEx(PROCESS_HANDLE, START_ADDRESS, &mbi, sizeof(mbi));
for (start = (size_t)START_ADDRESS; VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi)); start += mbi.RegionSize)
{
if (!VirtualQueryEx(PROCESS_HANDLE, (LPCVOID)start, &mbi, sizeof(mbi))) continue;
if (mbi.State != MEM_COMMIT || mbi.Protect & PAGE_NOACCESS) continue;

vector<char> buffer(mbi.RegionSize);
if (ReadProcessMemory(PROCESS_HANDLE, mbi.BaseAddress, buffer.data(), mbi.RegionSize, NULL))
{
for (i = 0; i < mbi.RegionSize; i++)
{
for (j = 0; j < PATTERN_LENGTH; j++)
{
if (buffer[i + j] != PATTERN[j] && PATTERN[j] != -1)
{
break;
}
}
if (j == PATTERN_LENGTH)
{
return start + i + EXTRA;
}
}
}
}
return -100;
}
Для начала нужно установить Microsoft Visual Studio и в ней поставить C++. Теперь делаешь как делает человек на видео только выбираешь пункт - Библиотека динамической компановки (
). Когда выдало поле для ввода кода убераешь все содержимое (если будет) и вставляешь мой код от C++ туда. Вверху также будет надпись - Debug, нажимаешь и выбираешь - Release. Правее, если у тебя стоит x86, ставь x64. Далее в верху программы Сборка → Собрать решение. Ждёшь пока не завершится создание .dll. После находишь этот файл там где указывал при создании проекта. Если для тебя это сложно, можешь воспользоваться моей готовой .dll. Но лучше со временем сделать свою. Вот моя готовая .dll :
Пожалуйста, авторизуйтесь для просмотра ссылки.
(no ad). Я надеюсь у тебя уже стоит AHK второй версии, это обязательно для работы скрипта. Если возникнут траблы с запуском, опиши свою проблему, помогу.
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
Скрипт парсит сайт со смещениями нетваров, бывает такое, когда игра обновляется, они не успевают обновить информацию или вообще сайт падает. Тут проблема в том, что скрипт не смог корректно прочитать активное оружие в руках. Два варика: 1) нетвар устарел в момент запуска скрипта на сайте (на данный момент уже такой проблемы нет); 2) Ты зашёл на паблик перегруженный разными модами. В любом случае я сейчас запустил, всё работает. Если у тебя не заработало, отпиши, помогу решить проблему.
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,053
Реакции[?]
185
Поинты[?]
74K
пиздец ахк скинченджер, когда конкурентоспособность с нлом и скитом?
 
Пользователь
Статус
Оффлайн
Регистрация
28 Июн 2020
Сообщения
366
Реакции[?]
56
Поинты[?]
1K
Скрипт парсит сайт со смещениями нетваров, бывает такое, когда игра обновляется, они не успевают обновить информацию или вообще сайт падает. Тут проблема в том, что скрипт не смог корректно прочитать активное оружие в руках. Два варика: 1) нетвар устарел в момент запуска скрипта на сайте (на данный момент уже такой проблемы нет); 2) Ты зашёл на паблик перегруженный разными модами. В любом случае я сейчас запустил, всё работает. Если у тебя не заработало, отпиши, помогу решить проблему.
1. я тестил на локалке
2. можешь написать конкретно как запускать скрипт? например: csgo->server(local server)->open script или по другому?
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
1. я тестил на локалке
2. можешь написать конкретно как запускать скрипт? например: csgo->server(local server)->open script или по другому?
Запустил CS:GO (дождался полной загрузки главного меню) → Запустил скрипт → Играй где хочешь (но скрипт нацелен на нормальные сервера без разных модов на оружия). Если всё равно возникают трудности, дай свой Дискорд, помогу там. И ещё одно, об этом я забыл написать, когда запускаешь скрипт, не нужно каждый раз обновлять список скинов. Например сегодня вышел новый кейс с новыми скинами - обновляй. Иначе скрипт загружает список всех скинов, а это занимает какое-то количество времени, а уже после самой загрузки всех скинов, он только-только начинает их применять.
пиздец ахк скинченджер, когда конкурентоспособность с нлом и скитом?
Вчера бро)
 
Пользователь
Статус
Оффлайн
Регистрация
28 Июн 2020
Сообщения
366
Реакции[?]
56
Поинты[?]
1K
Запустил CS:GO (дождался полной загрузки главного меню) → Запустил скрипт → Играй где хочешь (но скрипт нацелен на нормальные сервера без разных модов на оружия). Если всё равно возникают трудности, дай свой Дискорд, помогу там. И ещё одно, об этом я забыл написать, когда запускаешь скрипт, не нужно каждый раз обновлять список скинов. Например сегодня вышел новый кейс с новыми скинами - обновляй. Иначе скрипт загружает список всех скинов, а это занимает какое-то количество времени, а уже после самой загрузки всех скинов, он только-только начинает их применять.

Вчера бро)
добавляй в дс - "meloch_" без " , не работает
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
Проблема с переключением скинов решена! (тема обновлена)
Она заключалась в том, что пользователь каждый раз обновлял список скинов, не дожидаясь завершения этого процесса, тем самым прерывая основной поток горячими клавишами UP или DOWN. Я обновил тему и добавил строку прогресса, отображающую степень завершения обновления всех идентификаторов скинов для более удобного ориентирования. Теперь проблема решена. Я хотел бы сделать это еще более красиво, но на форуме есть ограничение в 40000 символов.

В общем, если вы нажали на кнопку обновления списка скинов, пожалуйста, дождитесь завершения процесса, пока прогресс-бар не закроется. Когда прогресс-бар закроется, вы можете спокойно наслаждаться игрой! Ещё раз повторюсь, каждый раз обновлять список НЕНАДА, вышел новый кейс со скинами - НАДА.
 
Пользователь
Статус
Оффлайн
Регистрация
30 Апр 2019
Сообщения
143
Реакции[?]
34
Поинты[?]
5K
Добавь какое-то видео, хотелось бы глянуть на твой скрипт.
Моя основная рабочая лошадка скоптилась ещё более года назад, да и желания заниматься этим за спасибо, сам понимаешь, ну и проку мне от этого никакого, от слова совсем. Всегда можно зайти на левый аккаунт и провести интересующие для себя тесты там, я же не товар продаю, чтобы рекламировать свой софт. Кому интересно - пользуются, страшно или ещё что-то, не вижу смысла вообще интересоваться подобной тематикой. Мне показалось это интересным, я сделал и опубликовал по доброте душевной, а вы ребята уже сами для себя решайте)
 
Сверху Снизу