我有两个可执行文件,都由我手动创建,我将分别称为1.exe和2.exe。首先,两个可执行文件都是由MSVS 2010使用Microsoft编译器编译的。我想在1.exe中键入一条消息,我希望1.exe将该消息注入2.exe(可能作为某种参数),所以当我在1.exe注入消息后运行2.exe时, 2.exe将显示该消息。
注意 - 这不是非法使用,这些可执行文件都是由我创建的。
对我来说最重要的是:
我完全理解我不能简单地使用C ++代码作为注入,它必须是裸装配,可以在运行时由编译器生成/翻译(如果我错了,请纠正我)
我一直在想的一些解决方案:
注意 - 我不希望有一个勺子,我想熟练地理解编程的这个方面,我已经阅读了PE文件格式并且对汇编有很好的理解(MASM汇编语法),并且我很想学习更多。谢谢你的时间。
答案 0 :(得分:4)
很少有程序员需要做这类事情。没有它,你可以完成整个职业生涯。我上次在大约1983年做过。
如果我没记错的话,我有2.exe包含一个这样的汇编程序模块(我忘记了语法):
.GLOBAL TARGET
TARGET DB 200h ; Reserve 512 bytes
1.exe然后打开2.exe,在符号表中搜索全局符号“TARGET”,找出文件中的位置,写下它想要的512个字节,然后保存文件。这是一个许可计划。
来自https://stackoverflow.com/users/422797/igor-skochinsky的评论提醒我,我当时没有使用符号表。这是一个不同的操作系统。在这种情况下,我确实扫描了一个字符串。
答案 1 :(得分:0)
从您的描述中可以看出,只需在命令行上传递值即可。
Win32 GetCommandLine()
函数会为您提供传递给MessageBox()
的值。
如果它需要是另一个正在运行的实例,那么另一种形式的IPC就像Windows消息(WM_COPYDATA
)一样。