远程线程注入的一点经验
转自CSDN
就是那个createremotethread
使用它之前需要准备:
1.提升本进程特权,通常debug就够了
2.准备线程函数
3.使用writeprocessmemory把线程函数写到目标进程
4.createremotethread启动线程
ok
其他什么的如何获取进程句柄,virtualallocex之类就不多说了,msdn上大把事例代码
最为重要的就是那个线程函数,即step2
该函数在正常情况下是不能调用任何函数的,包括crt、api和自定义的函数。但有些是例外的,例如kernel32.dll内的,因为这些函数总是映射到每一个进程的特定位置,有了kernel32.dll的loadlibrary和getprocaddress,你就可以为所欲为了,要注意的是,loadlibrary和getprocaddress也不能用函数名来调用,一定要通过地址来调用,就像:
PLoadLibraryA pllba = (PLoadLibraryA)0x7C801D77;
HMODULE huser32 = pllba(tmp);// tmp="my.dll"
还有就是在线程内不能使用常量,特别是字符串常量,因为常量的地址不是对应目标进程的
必要时可在线程内嵌入汇编
_asm
{
int 3;// 这个的作用不用说了吧
}
这是为了在release下也能启动调试器来调试目标进程内我注入的那个线程
以上,个人见解
请指点一下,谢了