我想知道是否可以通过直接调用程序内部工作方法/函数来绕过可执行文件的 GUI。
假设可执行文件是 C/C++ 程序,在 Linux 上具有工作的 Gnome 或 KDE 界面。
答案1
特殊情况下可以这样做。您所描述的类似于通过 C 动态链接加载器动态加载插件:尝试man dlopen
了解相关详细信息。通常,所谓的代码必须编译为“位置无关”,因此对于任何特定程序来说,几乎肯定会运气不佳。
你可以看看用户态执行代码以获取有关如何完成此操作的一些提示,但几乎肯定无法执行您所描述的操作。
答案2
这还没有经过测试,这只是我会尝试的。
所以我不知道这是否可以算作答案。
如果您设法使用调试器跟踪执行情况(这是一项耐心的工作)。记下要运行的函数的地址后。您也许可以通过脚本远程控制调试器。请注意,大多数应用程序必须首先执行一些初始化步骤。
会:
- 启动调试器
- 加载可执行文件
- 应用程序初始化后设置断点
- 跑步
- 到达断点后跳转到函数。