Win7 CreateRemoteThread 另类使用方法

本文介绍了一种在Windows 7环境下实现DLL远程注入的方法,针对XP与Win7平台下DLL注入的不同挑战,通过动态调用ntdll.dll来解决。文章详细展示了如何使用NtCreateThreadEx函数替代CreateRemoteThread,并提供了兼容不同操作系统的示例代码。
摘要由CSDN通过智能技术生成

同样的代码,在XP下面随便你怎么整,WIN7的话是相当纠结的,具体哪些错误就不解释了 ~~

 

gg点了二十多页,在韩国某大牛的博客上总算找到一点思路(虽然看不懂韩文,但代码还算勉强看得懂吧)

 

原来是要用动态调用ntdll.dll >> NtCreateRemoteThreadEx ,于是over~~

 

说明:

1、InjectDll.exe   是注入DLL的EXE

2、dummy.dll       是一个普通DLL,加载后弹出MessageBox

 

下面是一个XP中远程线程注入DLL的代码,在WIN7 + OD调试的例子:

 

 

看看错误信息:

 

 

杯具了,接着看! 重新运行OD调试,bp CreateRemoteThread

 

 

看看CreateRemoteThread 中的几个参数:

 

 

上图重要标记的几个参数:

(1) svchost.exe (PID: 3184) 句柄

(2) kernel32.dll ! LoadLibarayA

(3) 在svchost中为C://Work//dummy.dll字符串所分配的首地址

 

进入CreateRemoteThread

 

 

我们发现,实际上是调用kernelbase >> CreateRemoteThreadEx 函数。

 

(GG了这个DLL,原来是它是继VISTA/WIN7之后额外的DLL,负责协助Kernel32.dll的调用!)

 

那我们看看这个函数调用栈中的参数吧:

 

 

 

发现与kernel32.dll >> CreateRemoteThread 参数一模一样!

 

OK ! 我们再继续跟进kernelbase.dll >> CreateRemoteThreadEx

 

 

那我们看看这个函数调用栈中的参数吧:

 

 

OK,这算到底儿了,因为ntdll.dll >> ZwCreateThreadEx 已经运行到了内核代码,我们的OD没办法再调试了!

 

于是请google sysenter吧!

 

特别说明,kernelbase.dll >> CreateRemoteThreadEx 是对 ntdll.dll >> ZwCreateThreadEx 的补充扩展!

 

那我们都得到这样的结果 :

 

 

ntdll.dll >> ZwCreateThreadEx 是未公开的API,MSDN、GG也很难找到相关资料!

 

下面是看看这个结构体伪代码:

 

 

OK ,那剩下的我们只需要重写CreateThreadEx 函数即可!

 

为了保证XP的兼容,所以需要判断一下OS版本,下面是完整的测试代码:

 

 

DLL就不贴了吧,有兴趣的友友可以参考一下~~

 

<转载请注明出处:   http://blog.csdn.net/wangningyu/archive/2011/05/31/6456607.aspx >

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪宁宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值