如何将lua print重定向到新的或现有的控制台窗口?

我有一个程序,它将_Luajit_和一个自定义的C编写的DLL注入到一个已经运行的进程中。自定义的DLL在_DllMain_中调用_CreateThread_运行一个函数,在受害进程中创建一个新的Lua状态并运行Lua脚本。我如何将Lua脚本的_print_输出显示在一个新的控制台窗口或更好地显示在注入器的现有控制台窗口中?

注入器只是通过_command line_运行的Lua脚本到luajit.exe。它使用FFI和Windows API来查找受害进程并注入lua51.dll和我的自定义DLL。请记住,我不能运行受害者exe。我正在尝试学习为单人Microsoft Gamepass游戏创建作弊。

编辑(更新1):

AllocConsole();
freopen_s((FILE**)stdout, "CONOUT$", "w", stdout);
freopen_s((FILE**)stdin, "CONIN$", "r", stdin);

printf("[+]控制台已激活!\n");

通过上面的代码,我看到了一个新的控制台,并且可以看到来自DLL内部的C printf的输出。但是,我没有看到来自Lua脚本_print_的输出。奇怪的是,我也没有看到_ffi.C.printf_的输出。我知道Lua脚本正常工作,因为我确实看到了_ffi.C.MessageBoxA_弹出窗口。

点赞