CreateRemoteThread LoadLibrary 注入DLL

详细的注入代码实现可参考链接中的第二部分:

http://www.codeproject.com/Articles/4610/Three-Ways-to-Inject-Your-Code-into-Another-Proces

网上大多数用CreateRemoteThread  LoadLibrary 这种方式注入DLL的博文最终都参考这个链接。我修改了部分代码,输入pid注入对应的进程,本文仅记录注入过程中遇到意外和解决途径

1.调用OpenProcess会失败,加入以下提升进程权限的代码

#pragma comment(lib,"Advapi32.lib")            
            LUID luidTmp;
            HANDLE hToken;
            TOKEN_PRIVILEGES tokenP;
            OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
            LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luidTmp);
            tokenP.PrivilegeCount = 1;
            tokenP.Privileges[0].Luid = luidTmp;
            tokenP.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
            AdjustTokenPrivileges(hToken, FALSE, &tokenP, sizeof(tokenP), NULL, NULL);

可能能解决一部分问题;

2.要想成功注入,最重要的一点是新创建一台虚拟机,所有的测试全在那完成,当然能免杀就随便了

3.调用VirtualAllocEx和WriteProcessMemory后,如何查看dll名字是否成功写进指定进程?这时祭出windbg,attach进将要被注入的进程,查看VirtualAllocEx的返回值所指向的地址(da 0xXXXXXXXX)

4.再然后,虽然ThreadRemoteThread创建线程成功,但是dll运行出错怎么调试?在dll的入口处加入_asm int 3,在注入前依然用windbg attach目标进程,重新注入-运行这时windbg会触发断点异常,就可以调试了~

下面是我的dll的例子:


注入代码后,线程遇到MessageBox,弹出对话框,此时,windbg附加到目标进程。然后MessageBox返回,就能遇到int 0x03了



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值