通过windows xp调试发现,这个端口是netbt启用关于SMB服务的时候开启的。
\\Device\\NetbiosSmb
这个设备对象就是NetBT驱动创建的(注意不是netbios驱动)
端口的获取是通过注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Smb下的SessionPort键项获取的,如果没有的话,默认就是445。所以想改端口号的话,可以改这个,但是这样的话,远程客户端可能就访问不了。另外,除了SessionPort还有 DatagramPort,
下面是获取到端口后,绑定地址过程的堆栈
ChildEBP RetAddr
f8ac0fc0 b2d969ad tcpip!TdiOpenAddress
f8ac1014 b2d69aaa tcpip!TCPCreate+0x20a
f8ac1050 804eedf9 tcpip!TCPDispatch+0x10b
f8ac1060 805783bc nt!IopfCallDriver+0x31
f8ac1140 805b465e nt!IopParseDevice+0xa58
f8ac11c8 805b0b3f nt!ObpLookupObjectName+0x56a
f8ac121c 8056b133 nt!ObOpenObjectByName+0xeb
f8ac1298 8056baaa nt!IopCreateFile+0x407
f8ac12f4 8056e17c nt!IoCreateFile+0x8e
f8ac1334 8053d808 nt!NtCreateFile+0x30
f8ac1334 804fe569 nt!KiFastCallEntry+0xf8
f8ac13d8 b2d41bbc nt!ZwCreateFile+0x11
f8ac1484 b2d44785 netbt!NbtTdiOpenAddress+0x227
f8ac14b4 b2d45547 netbt!NbtCreateAddressObjects+0xc3
f8ac14f0 b2d49173 netbt!NbtCreateSmbDevice+0xc8
f8ac1570 80576550 netbt!DriverEntry+0x215
f8ac1640 80689770 nt!IopLoadDriver+0x66c
f8ac169c 80686ad9 nt!IopInitializeSystemDrivers+0x16c
f8ac183c 80684edd nt!IoInitSystem+0x7a3
f8ac1dac 805c5a28 nt!Phase1Initialization+0x9b5
f8ac1ddc 80541fa2 nt!PspSystemThreadStartup+0x34
00000000 00000000 nt!KiThreadStartup+0x16
kd> ?dwo(dwo(esp+8)+8)
Evaluate expression: 48385 = 0000bd01
kd> ?0n445
Evaluate expression: 445 = 000001bd
这是由驱动在内核线程中直接创建的,所以445端口对应的进程我们经常可以看到的是System,关于如何通过445端口进行rpc over NampPipe/smb,smb over netbios/tcpip,
另开文章再作分析
来源:https://www.cnblogs.com/kkindof/archive/2012/06/08/2541836.html