2 внедренные библиотеки DLL, показывающие разные значения в памятиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 2 внедренные библиотеки DLL, показывающие разные значения в памяти

Сообщение Anonymous »

Итак, у меня есть две разные библиотеки DLL, которые я добавляю в приложение. Я пытаюсь перенести dll, написанную кем-то другим, с ржавчины на С++. Когда я ввожу их обоих, я читаю разные значения из памяти в каждом. хотя я получаю тот же базовый адрес. в Rust для получения базового адреса используется пакет toy_arms, а в моем порту C++ я использую:

Код: Выделить всё

GetModuleHandle(L"ProgramName")
Я получаю доступ к данным из памяти в Rust следующим образом:

Код: Выделить всё

*((module_base_address + GNAMES_OFFSET) as *mut usize))
и вот так в c++:

Код: Выделить всё

*(unsigned long long *)(module_base_address + GNAMES_OFFSET)
однако я всегда получаю 0 для строки C++, а для кода Rust это значение варьируется (примеры: 1974523893904, 2751407560848). Разработчик кода ржавчины также использовал эту строку для настройки точки входа, если это имеет значение:

Код: Выделить всё

internal::create_entrypoint!(main_thread);
который является частью пакета toy_arms, а я просто использую:

Код: Выделить всё

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD  ul_reason_for_call,
LPVOID lpReserved
)
точка входа. Я написал тестовую программу с использованием LoadLibraryA для созданной мною dll и смог вызвать исполняемый файл в программе, загружающей dll, вот так:

Код: Выделить всё

typedef int(__stdcall* printStringFunc)(const char *);
printStringFunc myPrintString = (printStringFunc)(baseAddress + 0x12330);
поэтому я знаю, что это возможно. Есть идеи, что происходит?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-memory
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»