Hook CreateProcess,改写程序入口方式注入dll

Hook CreateProcess,改写程序入口方式注入dll

ID:37553127

大小:100.92 KB

页数:7页

时间:2019-05-25

Hook CreateProcess,改写程序入口方式注入dll_第1页
Hook CreateProcess,改写程序入口方式注入dll_第2页
Hook CreateProcess,改写程序入口方式注入dll_第3页
Hook CreateProcess,改写程序入口方式注入dll_第4页
Hook CreateProcess,改写程序入口方式注入dll_第5页
资源描述:

《Hook CreateProcess,改写程序入口方式注入dll》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、HookCreateProcess,改写程序入口方式注入dll学习各种外挂制作技术,马上去百度搜索"魔鬼作坊"点击第一个站进入、快速成为做挂达人。原理很简单,就是hookCreateProcess,然后以CREATE_SUSPENDED方式创建进程,接着根据程序入口,改写入口代码,ResumeThread恢复运行,然后先执行的是自己写入的代码。可现在一执行就出错,以记事本为例,大牛们帮忙看下:代码://前面hookCreateProcess的代码已经省去。//如果是感兴趣的进程(这里以记事本为例)被创建,将通过EPO技术挂关键函数,这

2、里只是修改进程的EP入口,对目标进程实现dll注入if(0==strncmp(lpExeName,"notepad.exe",strlen("notepad.exe"))){//如果是记事本被创建,先以CREATE_SUSPENDED方式创建进程dwCreationFlags

3、=CREATE_SUSPENDED;boolbRes=((LPCREATEPROCESS)dwOrigCreateProcessAddr)(lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadA

4、ttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation);//再次将记事本的可执行文件映射到内存,获取程序的入口地址HANDLEhFile=CreateFile(lpExePath,GENERIC_READ,FILE_SHARE_READ

5、FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);if(hFile==NULL){OutLog("

6、打开目标文件失败");if(bRes)ResumeThread(lpProcessInformation->hThread);returnbRes;}HANDLEhMapping=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);CloseHandle(hFile);if(hMapping==NULL){OutLog("打开目标文件映射失败");if(bRes)ResumeThread(lpProcessInformation->hThread);returnbRes;}LPVO

7、IDlpMapFile=MapViewOfFile(hMapping,FILE_MAP_READ,0,0,0);if(lpMapFile==NULL){OutLog("映射目标文件失败");if(bRes)ResumeThread(lpProcessInformation->hThread);CloseHandle(hMapping);returnbRes;}CloseHandle(hMapping);//已经完成文件映射PIMAGE_DOS_HEADERlpstDosHeader=(PIMAGE_DOS_HEADER)lpMapFi

8、le;PIMAGE_NT_HEADERSlpstNtHeaders=(PIMAGE_NT_HEADERS)((ULONG)lpMapFile+lpstDosHeader->e_lfanew);DWORDdwPeEntry=lpstNtHeaders->OptionalHeader.AddressOfEntryPoint+lpstNtHeaders->OptionalHeader.ImageBase;DWORDdwSizeOfImage=lpstNtHeaders->OptionalHeader.SizeOfImage;charlpEn

9、try[50]={0};sprintf(lpEntry,"EntryAddr:%x",dwPeEntry);OutLog(lpEntry);//从程序的入口点,寻找第一个call,然后替换这个call地址,从而转到我们的shellcode中,执行完shellcode//再继续走原来的函数流程//1.查找第一个call地址BYTEbCode=0;DWORDdwReadAddr=dwPeEntry;while(bCode!=0xe8){boolbOk=ReadProcessMemory(lpProcessInformation->hPro

10、cess,(LPVOID)dwReadAddr,&bCode,1,NULL);if(!bOk){OutLog("查找第一个call地址出错");if(bRes)ResumeThread(lpProcessInformat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。