下面是我正在编写的一小段代码:http://pastebin.com/92Nzc6pG
我基本上注入代码到一个运行的进程,但问题是,CRT库不再有效,所以我不能使用字符串为例。有什么变通办法吗?我的程序的其余部分也需要创建/修改字符串,所以我真的需要把它整理出来。
我设法让它工作与传递一个char指针,像这样:http://pastebin.com/T1qdjfRK
然而,使用字符串对我来说仍然是一种"必须",所以任何变通方法,想法和任何东西都是受欢迎的。
一种更简单的方法是注入最少的代码,只加载带有适当导入和重定位的DLL。一旦DLL被加载,所有的导入都将被加载器满足。
如果出于某种原因您确实必须注入代码而不是DLL,则必须确保您的代码是针对编译进程的同一CRT进行编译的。如果它根本不使用CRT,您可以使用静态CRT,或者根本不使用CRT。Windows有内置的字符串函数,如lstrlen()和friends。
到目前为止,最简单的方法是注入整个DLL,而不仅仅是代码。这将会有点复杂,因为它只有两个步骤,但是一旦你完全加载好了,你就可以像在你自己的过程中那样做几乎所有的事情。