什么是代码注入?
代码注入是一种向目标进程插入独立运行代码并使之运行的技术,它一般调用CreateRemoteThread()API以远程线程形式运行插入的代码,所以也被称为线程注入。
使用代码注入的原因
其实,代码注入要实现的功能与DLL注入类似,但具体实施时要考虑的事项更多,使用起来 更加不便。那它的优点究竟是什么呢?
1.占用内存少
如果要注入的代码与数据较少,那么就不需要将它们做成DLL的形式再注入。此时直接采用 代码注入的方式同样能够获得与DLL注入相同的效果,且占用的内存会更少。
2.难以查找痕迹
釆用DLL注入方式会在目标进程的内存中留下相关痕迹,很容易让人判断出目标进程是否被 执行过注入操作。但采用代码注入方式几乎不会留下任何痕迹(当然也有一些方法可以检测), 因此恶意代码中大量使用代码注入技术。
3.其他
不需要另外的DLL文件,只要有代码注入程序即可。大家刚开始会觉得代码注入技术生疏, 熟悉之后就会觉得简单好用。
简单归纳一下:DLL注入技术主要用在代码量大且复杂的时候,而代码注入技术则适用于代 码量小且简单的情况。
在vs 2019上运行下面的程序
// CodeInjection.cpp
// reversecore@gmail.com
// http://www.reversecore.com
#include "windows.h"
#include "stdio.h"
typedef struct _THREAD_PARAM
{
FARPROC pFunc[2]; // LoadLibraryA(), GetProcAddress()
char szBuf[4][128]; // "user32.dll", "MessageBoxA", "www