Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ThePanix
0 / 0 / 0
Регистрация: 20.06.2014
Сообщений: 55
#1

С++ Изменение значения в адресе ХЕлП (DLL) - C++

20.06.2014, 02:01. Просмотров 229. Ответов 0
Метки нет (Все метки)

Длл инжекторная если посмотрите под спойлером.
Проблема в след. надо изменить значение по конкретному адресу на конкретное число типо как типо как в Cheat Engine меняется коллво денег или жизней на другое.
Так вот как это реализовать в C++ и желательно нажатием кнопки.
Если не поняли спрашивайте уточню.
Вот что пытался всунуть но хз что наверное не так делаю или вообще не подходит этот вариант.
C++
1
2
3
4
5
6
7
8
9
10
11
const int Offset = 0x1; //смещение
const int PAdress = 0x012DFC; //адрес указателя на адрес переменной, которая нам нужна
int Adress; //переменная для адреса, нужной нам переменной
int Data; //переменная которая нам нужна
ReadProcessMemory(ProcessHandle,&PAdress, &Adress, sizeof(int), &ReadBytes); //читаем из указателя адресс переменной, которая нам нужна, и записываем в Adress
Adress += Offset;// добавляем к адресу смещение
ReadProcessMemory(ProcessHandle,&Adress, &Data, sizeof(int), &ReadBytes) // Читаем значение переменной, которая нам нужна.
 
Data += 10000; //Прибавляем к нужной переменной 10000
 
WriteProcessMemory(ProcessHandle, (void*)Adress, &Data, sizeof(int), NULL); //и переписываем
Вот весь код DLL-ки
Кликните здесь для просмотра всего текста

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
#include <Windows.h>
#include <fcntl.h>
#include <stdio.h>
#include <io.h>
#include <WinBase.h>
 
HANDLE phandle = GetCurrentProcess();
 
void CreateConsole()
{
    int hConHandle = 0;
    HANDLE lStdHandle = 0;
    FILE *fp = 0;
    AllocConsole();
    SetConsoleTitle(L"ThePanix");
    lStdHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    hConHandle = _open_osfhandle(PtrToUlong(lStdHandle), _O_TEXT);
    fp = _fdopen(hConHandle, "w");
    *stdout = *fp;
    setvbuf(stdout, NULL, _IONBF, 0);
}
 
void Status()
{
    CreateConsole();
    printf("This ko-ko-ko is made specifically for ko-ko-ko");
    for (;; Sleep(100))
    {
        DWORD Players = (DWORD)GetModuleHandleA("engine.dll")+ 0x00611CB8;
        DWORD Players_1 = *(DWORD*)(Players); 
        DWORD Players_2 = *(DWORD*)(Players_1 + 0x54); 
        DWORD Players_3 = *(DWORD*)(Players_2 + 0x2C0); 
        DWORD Players_Adress = Players_3 + 0x1e4;    
 
 
        DWORD InGameA=(DWORD)GetModuleHandleA("engine.dll") + 0x3B93BC; 
        int InGame = *(int*)(InGameA);
 
        if(InGame == 1)
        {
            DWORD PlayerCountA=(DWORD)GetModuleHandleA("server.dll") + 0x509DD0; 
            int PlayerCount = *(int*)(PlayerCountA);
            if(GetAsyncKeyState(VK_NUMPAD1)){printf("PlayerCount = [%d] \n",PlayerCount);}
        
 
            for (int i =0; i<PlayerCount; i++)// Тут мы делаем перебор на 64 игрока ( от 0 до 64 ) 
                { 
                    int Team = *(int*)(Players_Adress+i*0x140+0x20);//Команды игроков 
                    char *name = (char*)(Players_Adress+i*0x140+0x0);//Имена игроков 
                    int HP = *(int*)(Players_Adress+i*0x140+0x24);//Здоровье игроков 
                    if(GetAsyncKeyState(VK_NUMPAD2)){printf("   NAME = [%s] HP = [%d] TEAM = %d \n",name,HP,Team);}
 
                    float *POSITION_X = (float*)(Players_Adress + i * 0x140 + 0x28);//Позиция игроков X 
                    float *POSITION_Y = (float*)(Players_Adress + i * 0x140 + 0x2C);//Позиция игроков Y     
                    float *POSITION_Z= (float*)(Players_Adress + i * 0x140 + 0x30);//Позиция игроков Z 
                    /*
                    if (GetAsyncKeyState(VK_NUMPAD3)){ printf(" POSITION_X = %d\n   POSITION_Y = %d\n POSITION_Z = %d\n \n", POSITION_X, POSITION_Y, POSITION_Z); }
                    */ //пока не реализованно флоат значение не пишется нету указателей
                }
        }
            
    }
}
 
DWORD APIENTRY DllMain (HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Status,NULL,NULL,NULL);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return true;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2014, 02:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ Изменение значения в адресе ХЕлП (DLL) (C++):

Поменять местами номер дома в N-ом адресе и номер квартиры в M-ом адресе - C++
Описать переменную «адрес», содержащую: название города, название улицы, номер дома, корпус, номер квартиры. Создать массив адресов....

Удаление/изменение DLL после использования - C++
Доброго времени суток. Подскажите, возможна ли полная выгрузка DLL из процесса программы которая её использовала, без перезапуска самой...

Получение значения переменной в Dll - C++
Добрый день, как можно задавать и получать значение переменной которая описана в Dll. Я попробовал создать переменную, и написать процедуру...

Изменение значения 7 - C++
Добрый день! Стоит задача переопределить значение 7. Только не надо кричать, что это бред. Мне сказали, что это возможно, хоть и звучит...

Изменение значения указателя - C++
Здравствуйте В коде приведена функция, которая при помощи указателей считывает размер массива и его элементы из файла блокнота. Почему...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? - C++
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2014, 02:01
Привет! Вот еще темы с ответами:

Изменение значения статической переменной - C++
не дает =\ static char text; text = &quot;&quot;; это же не конст, а просто статик, в pawn&quot;е часто пользовался static и ок всё...

Изменение значения private поля в c++ - C++
При желании такое можно провернуть в c# (ну только естественно не на уровне объекта). Поэтому и возник такой вопрос. Ощущение что подобное...

Произвольное изменение значения на 0.000001 - C++
Совсем новичок в C++. Откуда появляются эти 0.000001 и как от этого избавиться? Да, я не прописал условия для функции (например,...

Изменение значения символа в строке - C++
например, есть строка string a = &quot;ABC&quot;; нужно заменить третий символ. a = 'D'; - не работает,как присваивать значение символу...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru