另类DLL注入(非CreateRemoteThread)
本帖最后由 迷雾少年 于 2018-2-22 15:57 编辑很久没法贴子了,趁开学前发个小帖子。。。嗯
我们知道传送的dll注入就是利用
1.LoadLibrary 函数基地址在每个进程空间都是一样
2.在目标进程分配DLL路径存下DLL路径
3.利用CreateRemoteThread函数调用LoadLibrary函数然后把dll路径参数传入
但是这种老掉牙的方法容易检测且太老了
今天早上突然灵光一闪想到一种办法可以不利用 CreateRemoteThread 函数的
具体步骤如下:
1.找到一个目标进程肯定会调用的函数我这里暂时称这个函数为 目标函数(这个太容易了)
2.在目标进程分配一段内存空间
3.构造一段代码 代码内容是 调用LoadLibrary函数 将这段代码写入第二部分配的空间里
4.保存目标函数的前5个字节
5.在我们构造的那段代码的后面写入这5个字节
现在我们 第 2 步 分配的 空间的内容是 调用LoadLibrary加载我们的DLL -> 目标函数的前5个字节(代码)
6.再在结尾加个jmp跳会到目标函数的下一行代码
现在我们 第 2 步 分配的 空间的内容是 调用LoadLibrary加载我们的DLL -> 目标函数的前5个字节(代码)->jmp回到目标函数执行正常代码
文字可能很粗糙
那看图吧
我这里以QQ.EXE为测试对象目标函数选为
代码我已经写好了
一步步走
首先是输入目标进程ID和DLL路径 这里我已经把DLL放在QQ的目录里了所以填相对地址就可以了
然后 在目标进程分配一段空间写入dll路径
然后就是 构造好代码写入目标的一段空间里 这里还没修改目标函数 所以不会出现问题
注意我图中红色框标注的就是我们构造的代码
前面的2个push是和后面2个pop对应 为的就是保持堆栈平衡 不然崩溃
而 push
mov
call
就是调用loadlibrary的
具体是这样的
0DDA0000 - 55 - push ebp
0DDA0001 - 54 - push esp
0DDA0002 - 68 0000D90D - push 0DD90000 { ["1.DLL"] }
0DDA0007 - B8 80599175 - mov eax,KERNEL32.LoadLibraryA { }
0DDA000C - FF D0 - call eax
0DDA000E - 5C - pop esp
0DDA000F - 5D - pop ebp
0DDA0010 - 8B FF - mov edi,edi
0DDA0012 - 55 - push ebp
0DDA0013 - 8B EC - mov ebp,esp
0DDA0015 - B8 C5F2C073 - mov eax,USER32.IsWindowEnabled+5 { }
0DDA001A - FF E0 - jmp eax
红色的是保持堆栈平衡
绿色的是跳回到目标函数
最后就是修改目标函数头5个字节了
最后就是这样
代码回复见
:
**** Hidden Message *****
如果你觉得有用,记得点赞哦
本帖最后由 迷雾少年 于 2018-2-22 15:56 编辑
其实。。。。。。。。。。{:10_256:} 有些网站,只要你一进入他就能修改你的注册表,他是怎么做到的? 望楼主教我{:5_96:} alltolove 发表于 2018-2-22 14:05
有些网站,只要你一进入他就能修改你的注册表,他是怎么做到的? 望楼主教我
这个应该是利用浏览器的漏洞吧,我不懂这个 {:10_266:}没人顶吗。。。 小弱鸡吓得不敢说话{:10_245:}
大佬~ 这个看看再说吧 {:10_266:}{:10_266:} 顶你个肺!支持一下楼主! 好代码,看看,学习中 我想看看这个 {:10_247:} 开头的描述有点看不懂!我先收藏下来慢慢看 大佬6666 从群里看到有人推荐这个方法,赶紧过来看看 学习下,谢谢 看看代码。。。 正好需要
页:
[1]