Ваш «Launcher.exe» и ваша DLL, введенная в «Client.exe», могут взаимодействовать друг с другом через межпроцессное взаимодействие , например, сопоставление файлов . Это может быть использовано для «Launcher.exe» для передачи любого желаемого имени пользователя и пароля в «Client.exe».
Однако главная проблема, которую я вижу, состоит в том, как заставить «Client.exe» использовать эти данные. , если у вас нет доступа к исходному коду и он также не предоставляет API для этого.
Если вы хотите обмануть "Client.exe", используя данные, предоставленные вами (или вашими вставлен DLL) вместо предполагаемых данных, то вы должны выполнить обратный инжиниринг программы и изменить соответствующие инструкции, чтобы они загружали ваши данные вместо исходных данных. Поскольку у вас нет доступа к исходному коду C / C ++, вам нужно будет понять инструкции на языке ассемблера , чтобы выполнить sh this.
Чтобы выяснить, какие инструкции изменения, вам, вероятно, понадобится инструмент отладки, такой как x64dbg , который предназначен для отладки приложений, для которых вы сами не написали (и не имеете исходного кода), и, возможно, также инструмент анализа stati c например IDA или Гидра . Кроме того, если программа намеренно защищает себя от обратного инжиниринга, вам придется научиться преодолевать это (что может быть очень сложно).
Вы также можете выполнить sh, не вводя DLL, путем используя WriteProcessMemory . Вам также может понадобиться использовать VirtualAllocEx , если вам требуется дополнительная память внутри целевого процесса, например, для ввода инструкций или данных.
В любом случае, прежде чем вмешиваться в инструкции или данные другого процесса, может быть целесообразно приостановить все его потоки с помощью SuspendThread , а затем возобновить все потоки с помощью ResumeThread . В противном случае, если программа запускается, когда ее инструкции или данные находятся в несогласованном состоянии, программа может обработать sh.