Вопрос Сигнатура SwapChain

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Апр 2022
Сообщения
11
Реакции
0
дайте пожалуйста сигнатуру SwapChain

либо как найти её, я не могу найти её

вот старая сигна которая у меня

C++:
Expand Collapse Copy
SwapChain = **reinterpret_cast<ISwapChainDx11***>(MEM::ResolveRelativeAddress(MEM::FindPattern(RENDERSYSTEM_DLL, CS_XOR("48 8D 0D ?? ?? ?? ?? E8")), 0x4, 0x8));
 
uint8_t* relativeAddress = MEM::ResolveRelativeAddress(MEM::FindPattern(RENDERSYSTEM_DLL, CS_XOR("48 8D 15 ? ? ? ? 0F 28 44 24")), 0x3, 0x7);
ISwapChainDx11* SwapChain = relativeAddress ? *reinterpret_cast<ISwapChainDx11**>(relativeAddress) : nullptr;
 
Спасибо большое
 
i tried it myself im getting only symbol strings from it
 
Exception thrown: read access violation.
SwapChain was 0xFFFFFFFFFFFFFE8F.

uint8_t* relativeAddress = MEM::ResolveRelativeAddress(
MEM::FindPattern(RENDERSYSTEM_DLL, CXOR("48 8D 15 ? ? ? ? 0F 28 44 24")),
0x3, 0x7
);

ISwapChainDx11* SwapChain = relativeAddress
? *reinterpret_cast<ISwapChainDx11**>(relativeAddress)
: nullptr;

bSuccess &= (SwapChain != nullptr);
 
(48 89 2D ? ? ? ? 4C 89 35 ? ? ? ? 48 89 2D, 3, 0) + 0x140
Exception thrown: read access violation.
SwapChain was 0xFFFFFFFFFFFFFE8F.

uint8_t* relativeAddress = MEM::ResolveRelativeAddress(
MEM::FindPattern(RENDERSYSTEM_DLL, CXOR("48 8D 15 ? ? ? ? 0F 28 44 24")),
0x3, 0x7
);

ISwapChainDx11* SwapChain = relativeAddress
? *reinterpret_cast<ISwapChainDx11**>(relativeAddress)
: nullptr;

bSuccess &= (SwapChain != nullptr);
 
(48 89 2D ? ? ? ? 4C 89 35 ? ? ? ? 48 89 2D, 3, 0) + 0x140
1757208951754.png
 
а есть GameTraceManager сигнатура со смещениями?
 
ida: rendersystemdx11.dll; "48 89 2D ? ? ? ? 48 C7 05", rel: 3, 7

и сдвиг как и был в дарксайде - 0x170
Вот объясни мне, дураку. Че не так?
void c_directx::initialize() {
uint8_t* ptr = g_opcodes->scan_relative(g_modules->m_modules.rendersystem_dll.get_name(), "48 89 2D ? ? ? ? 48 C7 05", 3, 7);

if (!ptr)
return;

uint8_t* next_ptr = *reinterpret_cast<uint8_t**>(ptr);
if (!next_ptr)
return;

m_swap_chain = *reinterpret_cast<IDXGISwapChain**>(next_ptr + 0x170); <- ошибка
if (!m_swap_chain)
return;

m_present_address = vmt::get_v_method(m_swap_chain, 8);
}
1757242329174.png

1757242343794.png

Че ему еще нужно
 
Вот объясни мне, дураку. Че не так?
void c_directx::initialize() {
uint8_t* ptr = g_opcodes->scan_relative(g_modules->m_modules.rendersystem_dll.get_name(), "48 89 2D ? ? ? ? 48 C7 05", 3, 7);

if (!ptr)
return;

uint8_t* next_ptr = *reinterpret_cast<uint8_t**>(ptr);
if (!next_ptr)
return;

m_swap_chain = *reinterpret_cast<IDXGISwapChain**>(next_ptr + 0x170); <- ошибка
if (!m_swap_chain)
return;

m_present_address = vmt::get_v_method(m_swap_chain, 8);
}
Посмотреть вложение 315243
Посмотреть вложение 315244
Че ему еще нужно
попробуй вместо scan_relative использовать scan_absolute
 
Назад
Сверху Снизу