#include <Windows.h>
#include <stdio.h>
extern "C" int value = 0;
int main(int argc, char** argv[]) {
if (argc == 2) { //
printf("value of target: %d\n", value);
return 0;
}
value = 0xdd;
wchar_t sz_exe[MAX_PATH] = {};
::GetModuleFileName(nullptr, sz_exe, MAX_PATH);
::lstrcatW(sz_exe, L" --target");
STARTUPINFO startup = {};
startup.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION process_info = {};
::CreateProcess(nullptr, sz_exe, nullptr, nullptr, false, CREATE_SUSPENDED,
nullptr, nullptr, &startup, &process_info);
//
SIZE_T written = 0;
::WriteProcessMemory(process_info.hProcess, &value, &value, sizeof(int),
&written);
::ResumeThread(process_info.hThread);
::WaitForSingleObject(process_info.hProcess, INFINITE);
return 0;
}