0 / 0 / 0
Регистрация: 14.06.2022
Сообщений: 4
1

Ошибка компиляции "невозможно преобразовать параметр 1 из 'WCHAR [256]' в 'const char *'"

14.06.2022, 23:11. Показов 500. Ответов 3
Метки нет (Все метки)

Я решил попробовать написать свой чит для кс го (для просмотра сквозь стены) и через 3 дня экспериментов был написан следующий код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <thread>
const DWORD dwLocalPlayer = 0xCBD6A4;
const DWORD dwEntityList = 0x4CCDCBC;
const DWORD m_iTeamNum = 0xF4;
const DWORD m_iGlowIndex = 0xA3F8;
const DWORD dwGlowObjectManager = 0x520DAE0;
bool wh = false;
HANDLE process; // непосредственно сам процесс CSGO
DWORD clientBase; // для работы с client_panorama.dll
DWORD engineBase; // для работы с engine.dll
 
DWORD getModuleBaseAddress(DWORD pid, const char* name)
 
{
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
    MODULEENTRY32 mEntry{};
    mEntry.dwSize = sizeof(MODULEENTRY32);
    do
    {
        if (!strcmp(mEntry.szModule, name))
        {
            CloseHandle(snapshot);
            return (DWORD)mEntry.modBaseAddr;
        }
    } while (Module32Next(snapshot, &mEntry));
}
 
template <typename T>
T readMem(DWORD address)
{
    T buffer{};
    ReadProcessMemory(process, (LPVOID)address, &buffer, sizeof(buffer), 0);
    return buffer;
}
 
template <typename T>
void writeMem(DWORD address, T value)
{
    WriteProcessMemory(process, (LPVOID)address, &value, sizeof(value), 0);
}
 
int main() {
 
 
 
    std::cout << "Open CS:GO\n"; // выводим в консоль сообщение о том, что надо открыть ксго
 
    HWND hwnd = nullptr;
 
    do {
        hwnd = FindWindowA(0, "Counter-Strike: Global Offensive - Direct3D 9"); // ищем ксго, если находим - выходим из цикла
        Sleep(200); // таймаут (чтобы не грузить процессор)
    } while (!hwnd);
 
    DWORD pid;
    GetWindowThreadProcessId(hwnd, &pid); // получаем id приложения
    process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); // заходим в кс го его id
 
    std::cout << "Csgo started, pid " << pid << ".\n"; // выводим сообщение о том, что ксго запущена
 
    do {
        clientBase = getModuleBaseAddress(pid, "client_panorama.dll"); // ищем клиент кс го
        Sleep(50);
    } while (!clientBase);
 
    do {
        engineBase = getModuleBaseAddress(pid, "engine.dll"); // ищем движок кс го
        Sleep(50);
    } while (!engineBase);
    
 
}
void wallhack()
{
    while (true) // создаем бесконечный цикл
    {
        Sleep(10); // таймаут 10 мс, чтобы не грузить процессор под 100
        if (!wallhack && !readMem<DWORD>(readMem<DWORD>(clientBase + dwLocalPlayer) + 0xED)) // если вх выключено или не удается прочитать память - выходим из цикла
            continue;
 
        DWORD glowObj = readMem<DWORD>(clientBase + dwGlowObjectManager); // создаем объект glowObj из модельки игрока
        DWORD myTeam = readMem<DWORD>(readMem<DWORD>(clientBase + dwLocalPlayer) + m_iTeamNum); // создаем объект тиммейтов
 
        for (int x = 0; x < 32; x++) // сам вх
        {
            DWORD player = readMem<DWORD>(clientBase + dwEntityList + x * 0x10); // обычный игрок
            if (player == 0)
                continue;
 
            bool dormant = readMem<bool>(player + 0xED); // спектатор
            if (dormant)
                continue;
 
            DWORD team = readMem<DWORD>(player + m_iTeamNum); // тиммейт
            if (team != 2 && team != 3)
                continue;
 
            DWORD currentGlowIndex = readMem<DWORD>(player + m_iGlowIndex); // текущий индекс игрока
 
            if (team != myTeam) // если игрок не тиммейт
            {
                // делаем его обводку красным
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x4, 255); // red
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x8, 0); // green
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0xC, 0); // blue
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x10, 255);
                writeMem<bool>(glowObj + currentGlowIndex * 0x38 + 0x24, true);
                writeMem<bool>(glowObj + currentGlowIndex * 0x38 + 0x25, false);
            }
            else // если игрок тиммейт
            {
                // делаем его обводку синим
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x4, 0); // red
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x8, 0); // green
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0xC, 255); // blue
                writeMem<float>(glowObj + currentGlowIndex * 0x38 + 0x10, 255);
                writeMem<bool>(glowObj + currentGlowIndex * 0x38 + 0x24, true);
                writeMem<bool>(glowObj + currentGlowIndex * 0x38 + 0x25, false);
            }
        }
    }
}
Однако, он не может быть скомпилирован из за одной ошибки в 23 строке.
аргумент типа WCAR несовместим с параметром типа CONST CHAR.
Перелазив все тематические форумы так и не нашел человека со схожей проблемой. Пришлось самому писать пост на киберфоруме).
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2022, 23:11
Ответы с готовыми решениями:

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *'
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void...

Printf: невозможно преобразовать параметр 1 из 'char' в 'const char *'
Здравствуйте, подскажите как исправить? &quot;printf: невозможно преобразовать параметр 1 из 'char' в...

Невозможно преобразовать параметр 1 из 'char' в 'const char *'
Дана задача: Задана последовательность, состоящая только из символов ‘&gt;’, ‘&lt;’ и ‘-‘. Требуется...

Невозможно преобразовать параметр из int в const char
Приветствую, помогите пожалуйста исправить следующую ошибку: printf: невозможно преобразовать...

Невозможно преобразовать параметр 1 из 'const char [15]' в 'LPCWSTR'
с сайта скачала прогу которая должна рисовать сферу, но при компилировании выходит ошибка:error...

3
Модератор
Эксперт С++
12098 / 9771 / 5908
Регистрация: 18.12.2011
Сообщений: 26,229
15.06.2022, 06:37 2
C++
1
        if (!strcmp((const char*)mEntry.szModule, name))
1
фрилансер
4169 / 3579 / 797
Регистрация: 11.10.2019
Сообщений: 9,622
15.06.2022, 08:05 3
Цитата Сообщение от zamonary1 Посмотреть сообщение
mEntry.szModule, name
у name тип const char*
а у szModule, судя по словам компилятора, - WCHAR [256]

чтобы сравнить эти строки, их нужно бы представить в одной кодировке. То есть, либо передать в функцию const wchar_t* name, либо использовать явно

MODULEENTRY32A mEntry{};
и Module32NextA

а затем сравнивать (пример для варианта с const char*):

C++
1
2
3
if(std::string_view(mEntry.szModul)==name)
{
}
Добавлено через 2 минуты
а для wchar_t понадобится std::wstring_view
1
565 / 307 / 160
Регистрация: 19.12.2016
Сообщений: 1,252
15.06.2022, 09:08 4
5.7.Запрещено обсуждение, создание и распространение вредоносного кода и ПО, вирусов, кряков и взлома лицензионного софта, а также публикация ссылок для их скачивания.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2022, 09:08
Помогаю со студенческими работами здесь

Ошибка 1 error C2664: CFileFind::FindFile: невозможно преобразовать параметр 1 из 'const char [7]' в 'LPCTSTR'
Нужно вывести на экран, в консольном режиме имена всех файлов, которые находятся в какой-то...

Невозможно преобразовать параметр 1 из 'const char [3]' в 'const wchar_t *
void CprojectDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: добавьте...

Невозможно преобразовать параметр 2 из 'char' в 'const char *
Уважаемые господа программисты,как преобразовать тип переменной из 'char' в 'const char *'? ...

Невозможно преобразовать параметр из 'const char [7]' в 'LPCTSTR'
Здравствуйте! Я совсем недавно начал изучать С++. По большей степени ничего пока не знаю :- //...

Ошибка С2664: невозможно преобразовать параметр 1 из 'double' в 'const char *'
Ошибка C2664: невозможно преобразовать параметр 1 из 'double' в 'const char *' Visual 2008....

WinAPI - Невозможно преобразовать параметр из 'const char [26]' в 'LPCWSTR'
Здравствуйте!! Начал немного изучать WinAPI!! и тут возникла проблемка &quot;Невозможно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru