首页
论坛
课程
招聘
未解决 [求助]在内核中实现无模块注入功能,但是从模块基址遍历导出表的时候碰到问题 50.00元
3天前 741

未解决 [求助]在内核中实现无模块注入功能,但是从模块基址遍历导出表的时候碰到问题 50.00元

3天前
741

我想实现在内核无模块注入DLL,自己修复重定位表和导入表,同样的思路在应用层测试了一下是可以的,然后我在内核当中实现同样的功能,但是当我修复导入表的时候发现导入Kernel32.dll 中EnterCriticalSection函数
和应用层获取到的地址是不一样的,所以导致注入后进程崩溃,对比应用层的地址后,发现应用层的GetProcAddress函数获取Kernel32.dll中EnterCriticalSection 实际获取的是ntdll.RtlEnterCriticalSection的地址
在我一一对比之后发现还有很多函数都有类似情况
1)Kernel32.dll中EnterCriticalSection取ntdll.RtlEnterCriticalSection的地址
2)Kernel32.dll中LeaveCriticalSection取ntdll.RtlLeaveCriticalSection的地址
3)Kernel32.dll中DeleteCriticalSection取ntdll.RtlDeleteCriticalSection的地址
4)Kernel32.dll中InterlockedFlushSList取ntdll.RtlInterlockedFlushSList的地址
5)Kernel32.dll中HeapAlloc取的是ntdll.RtlAllocateHeap的地址
6)Kernel32.dll中HeapSize取的是ntdll.RtlSizeHeap的地址
7)Kernel32.dll中HeapReAlloc取的是ntdll.RtlReAllocateHeap的地址

 

GetProcAddress函数就是这么获取的,不懂在内核中该怎么解决,还有如果所注入的DLL又依赖其它的DLL,而在目标进程中不存在这些DLL,这种情况有什么好的解决办法吗?等大神回答

 

附带问题:现在除了VT之外有什么办法可以稳定过PG呢
因为在网上搜索的VT资料只有在Intel上开启的,并没有找到amd的,不知道哪里可以找到开源的amd vt项目呢,主要目的想找一份可以稳定过PG的代码


[公告]春风十里不如你,看雪团队诚邀你的加入!

最后于 2天前 被wx_普贤编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 145
活跃值: 活跃值 (380)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huojier 活跃值 3天前
2
0
发现应用层的GetProcAddress函数获取Kernel32.dll中EnterCriticalSection 实际获取的是ntdll.RtlEnterCriticalSection的地址
这种一般是自己写一个shellcode自定位api地址修复注入的dll的
还有如果所注入的DLL又依赖其它的DLL,而在目标进程中不存在这些DLL,这种情况有什么好的解决办法吗
loadlibrary
不知道哪里可以找到开源的amd vt项目呢
AMD不是VT是SVM,AMD的NTP机制很蛋疼,很卡.没啥用
现在除了VT之外有什么办法可以稳定过PG呢
找ntbase在rdata区段里面的结构,应该有一些结构还是没有被PG保护到的
雪    币: 8
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_普贤 活跃值 3天前
3
0
huojier 发现应用层的GetProcAddress函数获取Kernel32.dll中EnterCriticalSection 实际获取的是ntdll.RtlEnterCriticalSection的地址 这种 ...
感谢你的回答,但是你回答的没有一句是我想要的
雪    币: 8
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_普贤 活跃值 2天前
4
0

这个GetProcAddress的问题已经解决,在内核读取Kernel32.DLL导出表的地址里面有Ntdll.前缀字符串可以用来区分,

现在内核无模块注入偶尔能成功,但经常出现没有效果的现象,不知道是什么原因导致的,插入用户APC执行和NtCreateThreadEx执行两种方式都测试了,就是进程经常崩溃,但也不是每次都崩溃,10次有那么一次会执行成功,我在DLL里面就弹出了一个MessageBox框,应用层使用的是同样的方式进行的注入而应用层是百分之百成功

最后于 2天前 被wx_普贤编辑 ,原因:
游客
登录 | 注册 方可回帖
返回