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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как получить внедренные URL-адреса при обнаружении службы Aspire
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как получить внедренные URL-адреса при обнаружении службы Aspire
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Блазор унаследованное обновление компонентов внедренные свойства класса
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Лучший способ ссылаться на разные версии DLL и генерировать Dll с другой версией.
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Невозможно загрузить динамическую библиотеку «php_mongodb.dll» C:\xampp\php\ext\php_php_mongodb.dll.dll в Неизвестно в с
    Anonymous » » в форуме Php
    0 Ответы
    166 Просмотры
    Последнее сообщение Anonymous

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