首页
社区
课程
招聘
[求助]用mingw编译驱动,为什么启动不了
发表于: 2011-11-14 04:07 7834

[求助]用mingw编译驱动,为什么启动不了

2011-11-14 04:07
7834
#include <ddk/ntddk.h>

static VOID STDCALL
my_unload( IN PDRIVER_OBJECT DriverObject ) {
}


NTSTATUS STDCALL
DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) {
   DbgPrint("DriverEntry called\r\n"); 

	DriverObject->DriverUnload = my_unload;

	return STATUS_SUCCESS;
}


这是代码,编译:
gcc -o drvtest.obj -O3 -c drvtest.c

ld drvtest.obj --subsystem=native --image-base=0x10000 --file-alignment=0x1000 --section-alignment=0x1000 --entry=_DriverEntry@8 -nostartfiles -nostdlib -L g:\MinGW\lib -l ntoskrnl -o drvtest.sys


结果能安装/卸载,但是启动不了,如图:

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 1
支持
分享
最新回复 (9)
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
2
mingw 只能编译 r3 程序。
2011-11-14 10:08
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
原来mingw只能编译ring3,又懂得一点了
2011-11-14 15:35
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
4
百度了下,原来是可以编译驱动的,秘密在连接选项上:

http://bbs.pfan.cn/post-320249.html


编译:
gcc -o "OBJ文件名" -O3 -c "源文件名"


连接:
ld Drv.obj --subsystem=native --image-base=0x10000 --file-alignment=0x20 --section-alignment=0x20 --entry=_DriverEntry -nostartfiles --nostdlib -L(库具体路径) -shared -l ntoskrnl -o Drv.sys


把-SHARED移到-l前,把两个对齐变成0X20

未亲自验证过。
2011-11-14 16:07
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
这个试了不管用,还是只能加载不能启动,另外节对齐只是影响文件大小吧

mingw下提供了一套 驱动开发的header,而且有对应的静态库,  应该可以开发驱动的吧
大家都是用wdk自带编译器或者vc搞驱动的?
2011-11-14 17:15
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
6
用 wdk 吧,开发 windows 的驱动,当然是用微软自家的东西了。
mingw 编译器有什么特点吗?
2011-11-14 17:20
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
晕了 ,用
http://bbs.pfan.cn/post-320249.html
这上面的代码编译 就能成功加载&&运行,看来是helloworld本身代码问题,不知问题在哪


mingw没有什么特点,只是我习惯用mingw写c++了,很多东西包括ui都是mingw下写的,看到它提供了wdk的头文件和lib 就想用这个来搞了:)
2011-11-14 17:30
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
玩玩可以 写大东西还是WDK什么的比较好
2011-11-14 17:41
0
雪    币: 170
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我也曾经有一段时间尝试用mingw编译驱动,用得很顺手,就是gcc不能生成pdb文件,不能用windbg来进行调试,最后还是用vc来编译
2011-11-15 17:58
0
雪    币: 30
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
my_unload中没有return。应该是启动成功过一次吧,但没有成功DriverUnload,再启动就不会成功了。
2011-11-15 21:43
0
游客
登录 | 注册 方可回帖
返回
//