c - 如何将 lua 打印重定向到新的或现有的控制台窗口?
问题描述
我有一个程序可以将Luajit和自定义的 C 编写的 DLL 注入到已经运行的进程中。自定义 DLL 调用DllMain中的CreateThread来运行创建新 Lua 状态并在受害进程上运行 Lua 脚本的函数。如何在新的控制台窗口中或最好在注入器的现有控制台窗口中显示 Lua 脚本的打印输出?
注入器只是一个通过命令行运行到 luajit.exe 的 Lua 脚本。它使用 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("[+] Console activated!\n");
使用上面的代码,我看到了一个新的控制台,并看到了从 DLL 内部完成的 C printf 的输出。但是在 Lua 脚本中看不到print的输出。奇怪的是,我也没有看到ffi.C.printf的输出。我知道 Lua 脚本工作正常,因为我确实看到了 ffi.C.MessageBoxA弹出窗口。
解决方案
推荐阅读
- java - Java 强制对象::toString
- c - What do the parameters mean in scull's proc read implementation?
- java - Removing an array of elements causes NullPointerException
- python-3.x - module 'pandas_datareader.data' has no attribute 'Datareader'
- algolia - 隐藏 ais-state-results 小部件的默认消息
- java - Map Object Array to a Bean
- java - Android Foreground Service onStartCommand doesn't invoke, only onCreate invokes
- reactjs - Axios - Interceptors not working on request error - 401 code
- c# - Using $in clause for insensitive search in mongo db driver c#
- php - How to fix embedded code in richeditor - octobercms