dll注入项目 F5调试成功但执行exe时失败
2013-08-10 09:13
218 查看
dll注入用到的路子是
先找到目标进程,获取进程快照,
打开该进程(openProcess),
在目标进程中分配出内存(VirtualAllocEx),
然后写入待注入的dll文件名(WriteProcessMemory),
建立远程线程(createdRemoteThread),加载(loadLibrary)待注入的dll,线程执行后,dll就注入到了目标进程里。调试过程中显示可以正常注入,但在双击执行exe时,目标进程里始终没有自己的dll名字,通过debugView得知,在openProcess过程失败了,根据返回值,应该是ACCESS_DENIED,用户没有打开该系统进程的权限,系统进程禁止了本次访问。那么就要通过提高权限令牌,
先找到目标进程,获取进程快照,
打开该进程(openProcess),
在目标进程中分配出内存(VirtualAllocEx),
然后写入待注入的dll文件名(WriteProcessMemory),
建立远程线程(createdRemoteThread),加载(loadLibrary)待注入的dll,线程执行后,dll就注入到了目标进程里。调试过程中显示可以正常注入,但在双击执行exe时,目标进程里始终没有自己的dll名字,通过debugView得知,在openProcess过程失败了,根据返回值,应该是ACCESS_DENIED,用户没有打开该系统进程的权限,系统进程禁止了本次访问。那么就要通过提高权限令牌,
bool EnableDebugPrivilege() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) { return false; } if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) { CloseHandle(hToken); return false; } tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL)) { CloseHandle(hToken); return false; } return true; }以上操作在openProcess之前完成,关键操作就是AdjustTokenPrivileges,可以在MSDN中找到详细说明。在得到权限令牌之后,OpenProcess执行成功,接下来dll注入到了系统进程里。
相关文章推荐
- Duilib vs调试程序加载资源失败,但是单独执行exe可以成功
- 在VS上调试执行能成功,直接执行不调试则失败
- vs2010 下 当前项目调试编译失败时,设置不启动上一次成功的实例
- 我的VS2005采用的是web开发设置。不知道动到了那里,现在每次按F5启动调试的时候总是不能成功启动调试。效果和按CTRL+F5一样。就是把项目显示在了浏览器之后,那个启动调试的绿色按钮还可以使用,不是暗色的。
- 注入win7 64要将dll和exe都编译成64位,我就说咋我的总是失败呢!!!
- mvn 构建项目,脚本windows编译成功,linux执行失败
- 调试dll和exe加载失败
- 将DLL项目转换为exe可执行程序
- 归纳一下项目成功或者失败的主要因素
- 今天碰到试图运行项目时出错:无法在web服务器上启动调试.调试失败,因为没有启用集成windows身份验证
- vs2008 c#项目调试dll源码,问题:“若要调试此模块,请将其项目生成配置更改为“调试”模式” 的解决方案
- 混淆加密保护项目,C#中将dll汇入exe,并加壳
- vs2008中exe调试dll的路径设置
- SpringBoot项目在eclipse启动成功,在idea中失败
- 项目成功与失败杂谈
- ASP.NET验证控件客户端验证成功或失败之后执行js脚本(转)
- 为可执行程序(sys/exe)生成公有调试符号
- vs2008 让”生成事件”在项目生成成功后依旧执行的方法:
- 生产成功,但点击EXE提示无法加载DLL"coredll.dll"找不到指定的模块(异常来自HRESULT:0x8007007E)
- 解决Autofac MVC 自动注入在 Areas拆分到不同dll下的注入失败问题