Адрес DLL из стороннего процесса с++

Статус
В этой теме нельзя размещать новые ответы.

Gafask

Участник
Автор темы
137
13
Пробыв год в одном месте и потеряв все исходники и знания я задам теперь вопрос который меня щас мучает ооочень сильно !
Пример: У нас есть адрес в формате samp.dll+0x12D8F8 который был найден в Cheat Engine и адрес 0xS3FSFD + 0х9201 который нам кто-то дал ( ну или нашли где-то ) .
😘🤓😘😇Практика : 😘🤓😘😇


ReadProcessMemory(process, (LPCVOID)(0xS3FSFD), &TestS, sizeof(TestS), NULL)[/COLOR][/SIZE][/B][/CENTER][/CENTER][/HEADING] [HEADING=2][CENTER][CENTER][B][SIZE=5][COLOR=rgb(0, 0, 0)]ReadProcessMemory(process, (LPCVOID)(TestS+0х9201 ), &TestD, sizeof(TestD), NULL);

Значит адрес 0xS3FSFD + 0х9201 мы вроде как можем прочитать и вроде все верно или нет то посоветуйте как правильнее 🙂, так дальше .🙂
Адрес формата : samp.dll+0x12D8F8 я не могу прочитать так как я не знаю как правильно прочитать samp.dll что-бы к нему 🙂добавить смещение 0x12D8F8 . 🙂
Вопрос : Как прочитать адрес samp.dll+0x12D8F8 а точнее samp.dll что бы к примеру его прочитать и вывести в консоль или 🙂наоборот изменить его . 🙂
Я пишу на языке с++ , использую консольно приложение , редактирую адреса памяти не через DLL ! а используя консольое 😘🤓😘😇приложение .exe тоесть из левой программы пытаюсь взаимодействовать с гта са . 😘🤓😘😇
Надеюсь я правильно все вам написал и вы правильно мой вопрос поняли , даже если не знаете на него ответ ) . 😘

😘🤓😘😇Спасибо за внимание жду ваших ответов с примерами желательно . 😇 😇 😇
🥰🥰Всем удачи ! Денег , дачи .🥰🥰
 
Последнее редактирование модератором:
Решение
Привет-привет.
Давай все по порядку.

1) Что такое адрес? Адрес – это цифра, правда в шестнадцатеричной системе, но все же это обычная цифра. И по каждому адресу находится какое-то значение от 0 до 255 (1 байт). Все типы данных (int; float; char...) складываются из некого массива байт. Ближе к делу.
Поэтому если у тебя адрес такой:
0x3FBFD + 0x9201
То тебе нужно просто сложить его (0x3FBFD + 0x9201 = 0x48DFE) и прочитать уже значение по адресу, который является найденной суммой. Кстати, не стоит забывать, что нужно установить корректный уровень защиты на память, которую читаешь или в которую записываешь.
C++:
DWORD bytes; // вместо DWORD любой тип данных, который ты хочешь прочитать
DWORD oldProtect = 0;
VirtualProtectEx(process...

Vintik

Мечтатель
Проверенный
1,469
917
Доброго времени суток! Если не затруднит, поясните пожалуйста. Выдаёт несколько ошибок, по приведению типов переменных...
В плюсах ноль, понимаю что это просто из за типизации, но как с этим быть не понимаю..
аргумент типа "WCHAR *" несовместим с параметром типа "const char *"
аргумент типа "TCHAR *" несовместим с параметром типа "const char *" mBYTE
"int strcmp(const char *,const char *)": невозможно преобразовать аргумент 1 из "WCHAR [256]" в "const char *"

аргумент типа "const wchar_t *" несовместим с параметром типа "TCHAR *" 53
"DWORD getModuleBaseAddress(DWORD,TCHAR *)": невозможно преобразовать аргумент 2 из "const wchar_t [11]" в "TCHAR *"

=: преобразование "DWORD_PTR" в "DWORD", возможна потеря данных

#include <iostream>
#include <Windows.h>
#include <string>
#include <psapi.h>
#include <tchar.h>
#include <tlhelp32.h>
using namespace std
Поставь в настройках многобайтовую кодировку.
 
  • Нравится
Реакции: rumboorumboo
Статус
В этой теме нельзя размещать новые ответы.