Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

C++ Как найти офсеты используя DLL

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
24 Мар 2021
Сообщения
4
Реакции
0
Чтение используя .exe

C++:
Expand Collapse Copy
 DWORD endAddress = base;
for (int i = 0; i < totalOffsets; i++)
{
endAddress += offsets.at(i);
if(i < totalOffsets - 1)
ReadProcessMemory(handle, (void*)endAddress, &endAddress, sizeof(endAddress), nullptr);
}


Чтение используя DLL
Код:
Expand Collapse Copy
    // как??

функция ReadProcessMemory не работает если это DLL, как тогда найти адрес по офсетам?
базовый адрес получается найти, а вот по офсетам вообще никак не выходит.

так нахожу базовый адрес:

Код:
Expand Collapse Copy
  uintptr_t* finallyAddress = *(uintptr_t**)(moduleBase + moduleOffset);


а как к этому добавить офсеты к примеру 0x4C 0x8 0x22 и получить нужный адрес ?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Чтение используя .exe

C++:
Expand Collapse Copy
 DWORD endAddress = base;
for (int i = 0; i < totalOffsets; i++)
{
endAddress += offsets.at(i);
if(i < totalOffsets - 1)
ReadProcessMemory(handle, (void*)endAddress, &endAddress, sizeof(endAddress), nullptr);
}


Чтение используя DLL
Код:
Expand Collapse Copy
    // как??

функция ReadProcessMemory не работает если это DLL, как тогда найти адрес по офсетам?
базовый адрес получается найти, а вот по офсетам вообще никак не выходит.

так нахожу базовый адрес:

Код:
Expand Collapse Copy
  uintptr_t* finallyAddress = *(uintptr_t**)(moduleBase + moduleOffset);


а как к этому добавить офсеты к примеру 0x4C 0x8 0x22 и получить нужный адрес ?
Когда ты получаешь по итогу баз. адрес == прибавляешь то, что тебе нужно.
Взависимости, что именно.
Байты - добавляй массивом байты.
Так по крайней мере мне объяснял кодер зевса..............................
 
Ты находишь уже внутри процесса, тебе не нужно читать его внешними способами, достаточно обратиться по ссылке к полученному адресу указанного типа и ты получишь значение
*(тип*)(адрес)
 
Когда ты получаешь по итогу баз. адрес == прибавляешь то, что тебе нужно.
Взависимости, что именно.
Байты - добавляй массивом байты.
Так по крайней мере мне объяснял кодер зевса..............................
я так пробовал, вобще не получается,какой-то левый адрес либо 00000000000

если кто-то шарит, напишите кусочек кода пожалуйста

Ты находишь уже внутри процесса, тебе не нужно читать его внешними способами, достаточно обратиться по ссылке к полученному адресу указанного типа и ты получишь значение
*(тип*)(адрес)
не понял, но попытаюсь разобраться как домой приду
 
вроде как, я проверю
Ничё не понял, но оставлю это
C++:
Expand Collapse Copy
uintptr_t address = *(uintptr_t*)(base + offset);
address = *(uintptr_t*)(address + next_offset);
почему-то базовый адрес всегда находит , а вот когда добавляю офсет то адрес превращается в 0000000

буду пытаться как приду домой
 
вроде как, я проверю

почему-то базовый адрес всегда находит , а вот когда добавляю офсет то адрес превращается в 0000000

буду пытаться как приду домой
Значит оффсет неправильный
Reclass в помощь.
 
Назад
Сверху Снизу