首页
社区
课程
招聘
求助_WDK char[128*1024] 蓝屏
发表于: 2019-8-16 16:34 5202

求助_WDK char[128*1024] 蓝屏

2019-8-16 16:34
5202





下面是代码  Copy即可   求各位老大帮助  因为代码中有递归 所以消耗伐 


#include<ntddk.h>  

   NTSTATUS DriverUnload(PDRIVER_OBJECT pDriverObj)
   {
      //on_callback(2,NULL,NULL);
   }


   NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,IN PUNICODE_STRING RegistryPath)
   {
         int a[10]={0};
         
         char tbyte[100*1024]={0};
         memset()

          
         //on_callback(1,NULL,NULL);

         pDriverObject->DriverUnload=DriverUnload; 
         return STATUS_SUCCESS;
   } 




[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
堆栈溢出了
2019-8-16 17:03
0
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
 char tbyte[100*1024]={0};  设置成全局变量 或者申请内存就行了
2019-8-16 17:03
0
雪    币: 15
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
代码是  win32/64  最近几天改ddk   

代码多了   不好改   上面只是问题例子  并不是闲得无聊   麻烦各位老大增加伐的方法  或者其他方法  谢谢
2019-8-16 21:37
0
雪    币: 15
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不吃麻婆豆腐 堆栈溢出了
求不溢出方法  怎么改  谢谢
2019-8-16 21:38
0
雪    币: 15
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
其实说直白点  我的库   至少需要80kb左右   不够  这问题我纠结2天了  测了好几种方法  没效果  哭
2019-8-16 21:44
0
雪    币: 34
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
这是因为内核栈空间只有12k,所以你直接用栈上的空间100 x 1028 / 8 = 12.5K,已经超过限制了. 要用这么大的空间,你的向系统申请,用 ExAllocatePool 以及其他相关的函数在堆上申请空间.用完了释放。和用户层new用法差不多。
最后于 2019-8-16 23:34 被haovcf编辑 ,原因: 没说清楚,会有疑问
2019-8-16 23:09
0
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
char tbyte[100*1024]={0};  设置成全局变量 或者申请内存就行了
2019-8-17 01:17
0
雪    币: 2055
活跃值: (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
mjxke 求不溢出方法 怎么改 谢谢
char tbyte[100*1024]={0};  设置成全局变量 或者申请内存就行了
2019-8-17 01:17
0
雪    币: 9626
活跃值: (1838)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
10
1、使用api动态申请堆内存。
2、不使用递归,除非在迫不得已的情况下。
最后于 2019-8-17 04:15 被Sprite雪碧编辑 ,原因:
2019-8-17 04:13
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
11
递归可以用循环模拟,std::vector或者std::stack都行
2019-8-17 08:56
0
雪    币: 1420
活跃值: (2181)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
等下我生成个dump文件帮你看下
2019-8-17 09:32
0
雪    币: 15
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
青丝梦 等下我生成个dump文件帮你看下
谢谢
上午我测了
                main
                   PsCreateSystemThread
               th1
                  char[128*1024]    //  还是奔溃了   上面说的模拟伐  可是要改很多  很累的   大佬  求救
2019-8-17 19:41
0
雪    币: 15
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
青丝梦 等下我生成个dump文件帮你看下
没别的要求   怎么弄出>=128kb伐  即可   这点要求WDK都不给我
2019-8-17 19:43
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
15
PMMSESSION_WIN10 Session = (PMMSESSION_WIN10)dynData.MmSession;
if (Session->ViewRoot)
{
	PMMVIEW_WIN10 root = (PMMVIEW_WIN10)Session->ViewRoot;
	std::stack<PMMVIEW_WIN10> stack;
	while (root || stack.size())
	{
		while (root)
		{
			stack.push(root);
			root = (PMMVIEW_WIN10)root->SectionNode.Left;
		}
		PMMVIEW_WIN10 temp = stack.top();
		stack.pop();

		PVOID BaseAddress = (PVOID)((ULONG_PTR)temp->SessionViewVa & (~3));


		root = (PMMVIEW_WIN10)temp->SectionNode.Right;
	}
}

循环版本和递归版本

PMMSESSION_WIN10 Session = (PMMSESSION_WIN10)dynData.MmSession;
if (Session->ViewRoot)
{
	PMMVIEW_WIN10 root = (PMMVIEW_WIN10)Session->ViewRoot;
        fuckView(root)
}

void fuckView(PMMVIEW_WIN10 node)
{
		auto left = (PMMVIEW_WIN10)root->SectionNode.Left;
                if(left)
		        fuckView(left);
		PMMVIEW_WIN10 temp = stack.top();
		stack.pop();

		PVOID BaseAddress = (PVOID)((ULONG_PTR)node->SessionViewVa & (~3));
                

		auto right = (PMMVIEW_WIN10)temp->SectionNode.Right;
                if(right)
		        fuckView(right);
	}
}

最后于 2019-8-18 15:51 被hzqst编辑 ,原因:
2019-8-18 15:48
0
雪    币: 15
活跃值: (299)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
hzqst PMMSESSION_WIN10&nbsp;Session&nbsp;=&nbsp;(PMMSESSION_WIN10)dynData.MmSession; if&n ...
谢了
2019-8-19 12:54
0
雪    币: 8764
活跃值: (5240)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
mjxke 没别的要求 怎么弄出>=128kb伐 即可 这点要求WDK都不给我
为什么你非要把这么大东西放在栈空间里呢?
2019-11-5 13:49
0
雪    币: 209
活跃值: (818)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
用户线程有两个栈:用户栈和内核栈
内核线程一定使用其内核栈
用户栈可以指定其大小,默认为1MB
内核栈大小固定,x86系统上为12KB,x64系统上为24KB, GUI线程可以使用大内核栈
2019-11-5 16:23
0
游客
登录 | 注册 方可回帖
返回
//