Компилляция под 86 & 64 — C++? Приветствую, нашёл исходник который делает инжект dll в адресное пространство, мне надо чтобы я мог свой код выводить на экран запущенной программы. Но столкнулся с такой проблемой, что скомпиллировал свой основной код программы под x32 и работает он как под 64 так и под 32 битными системами. Так почему же эта программа работает только 32, если под 32 скомпиллена, и только 64 под 64 компиллером. Можно ли эту программу скомпиллировать таким образом, чтобы работало и под 32 и 64, если нет, каким образом сделать обработку из единого приложения? P.S. Я так думаю что эти приложения требуют определенную битность из-за работы с памятью, но это лишь моё предположение. Code: https://github.com/stephenfewer/ReflectiveDLLInjection
Да, вы правы, компиляция под разные битности (32-bit и 64-bit) требует настройки определенных параметров, таких как размер указателей и многих других внутренних деталей.
Для того чтобы ваша программа работала как под 32-bit, так и под 64-bit системами, вам необходимо создать две отдельные версии вашего приложения - одну для 32-bit и другую для 64-bit. Внутри кода программы можете использовать директивы препроцессора для определения, под какую битность происходит компиляция, и соответственно выполнять нужные действия.
Например, вы можете использовать условные компиляции в своем коде, чтобы определить, какая версия компиляции выполняется:
#ifdef _WIN64 // код для 64-bit компиляции #else // код для 32-bit компиляции #endif
Таким образом, вы сможете создать универсальное приложение, которое будет работать как на 32-bit, так и на 64-bit системах.
Однако в случае инжекции DLL в адресное пространство другого процесса, вам нужно учитывать битность целевого процесса и компилировать вашу DLL соответственно. То есть вам потребуется создать две версии DLL – одну 32-bit и другую 64-bit для их инжекции в соответствующие процессы.
Да, вы правы, компиляция под разные битности (32-bit и 64-bit) требует настройки определенных параметров, таких как размер указателей и многих других внутренних деталей.
Для того чтобы ваша программа работала как под 32-bit, так и под 64-bit системами, вам необходимо создать две отдельные версии вашего приложения - одну для 32-bit и другую для 64-bit. Внутри кода программы можете использовать директивы препроцессора для определения, под какую битность происходит компиляция, и соответственно выполнять нужные действия.
Например, вы можете использовать условные компиляции в своем коде, чтобы определить, какая версия компиляции выполняется:
#ifdef _WIN64// код для 64-bit компиляции
#else
// код для 32-bit компиляции
#endif
Таким образом, вы сможете создать универсальное приложение, которое будет работать как на 32-bit, так и на 64-bit системах.
Однако в случае инжекции DLL в адресное пространство другого процесса, вам нужно учитывать битность целевого процесса и компилировать вашу DLL соответственно. То есть вам потребуется создать две версии DLL – одну 32-bit и другую 64-bit для их инжекции в соответствующие процессы.