|
[求助]Windows内核映射内存到任意内核地址是否可行?
hhkqqs 用官方api有点看运气,成功率最高的方案我想到的有两种,一如楼上所说直接动页表,二是直接动protopte是的,这种成不成功主要看脸,动页表肯定是最稳定的方案了,先用MmAllocateMappingAddress占坑,然后改页表就行了。 |
|
[讨论]关于 TCP打洞的碎事,我提观点,你们喷。
mb_foyotena 你说自定义的不就简单明了了我都说了首先设计一套 listen accept connect 信令,下面还给了详细步骤,自己语文能力不行,脑瓜子理解不了,就别赖别人好吧。 |
|
[讨论]关于 TCP打洞的碎事,我提观点,你们喷。
mb_foyotena 服务端listen,客户端syn,还能主动发listen[em_13]? mdzz
最后于 2020-11-3 20:06
被MengXP编辑
,原因:
|
|
|
|
[讨论]关于 TCP打洞的碎事,我提观点,你们喷。
通信报文信令。。 |
|
[求助]高并发tcp长连接用select模型适合吗
能支持多少并发连接主要看你流量有多大。如果没什么流量,比如就是IOT流量。那随随便便什么模型都可以。你可以拿nginx测试,nginx在windows上就是select。send recv肯定是没问题,只是客户端多了connect/accept会失败,可能需要重试几次就连上了。
最后于 2020-11-3 10:39
被MengXP编辑
,原因:
|
|
[讨论]关于 TCP打洞的碎事,我提观点,你们喷。
NAT什么的就不要讨论了,没有意义,NAT不就分4个类型,123能打洞,4不能打洞,除非你有神一样的随机预测能力。 tcp打洞不难啊,比udp好用多了,udp会被ISP各种qos。 首先设计一套 Listen Accept Connect 信令。 服务端A发Listen给服务器,服务器拿到A的外网地址。注意服务端是保持连接的,不需要关闭,当然你想关闭也行,我这边是多点对单点的结构,服务端永远在线,不关闭与服务器的连接。 客户端B发Connect给服务器,服务器拿到B的外网地址。服务器发送Accept携带B的外网地址给A。服务器发送Connec回应携带A的外网地址给B。B随后关闭与服务器的连接。 A端口复用创建socket,然后connect B的地址 B端口复用创建socket,然后connect A的地址 怎样,简单吧,就是AB两端拿到地址后connect互怼。大部分tcp打洞都是这样玩的,比如teamviewer,anydesk之类的。。 上述流程我做了一个基于p2p的vpn,没有公开发布,一直在自己使用,没有任何问题。跨平台支持windows/linux/solaris/hpux/aix.... 打洞的成功率?只要是NAT123,1次成功,没有失败的可能性。 |
|
[求助]Windows内核映射内存到任意内核地址是否可行?
我可能想多了。UserMode就UserMode吧,在DriverEntry里好像也能用。。。 PMDL MmMapLockedPagesTwiceContiguously(PMDL BufMdl) { ULONG BufSize = MmGetMdlByteCount(BufMdl); PCHAR map1 = NULL, map2 = NULL; ULONG MaxTry = 64; BOOLEAN found = FALSE; PMDL NewBufMdl = NULL; while(MaxTry--) { map1 = MmMapLockedPagesSpecifyCache(BufMdl, UserMode, MmCached, NULL, FALSE, NormalPagePriority); map2 = MmMapLockedPagesSpecifyCache(BufMdl, UserMode, MmCached, NULL, FALSE, NormalPagePriority); if(map1 && map2 && map1 + BufSize == map2) { found = TRUE; break; } if(map1) MmUnmapLockedPages(map1, BufMdl); if(map2) MmUnmapLockedPages(map2, BufMdl); } if(!found) return NULL; NewBufMdl = IoAllocateMdl(map1, BufSize * 2, FALSE, FALSE, NULL); if(NewBufMdl) { MmProbeAndLockPages(NewBufMdl, UserMode, IoReadAccess); } if(map1) MmUnmapLockedPages(map1, BufMdl); if(map2) MmUnmapLockedPages(map2, BufMdl); return NewBufMdl; }
最后于 2020-11-2 21:01
被MengXP编辑
,原因:
|
|
[原创]如何使用LLVM编译Windows驱动(混淆&Asm)
前几天还研究来着,vc2008可用,但是在wdk7上替换然后编译了一大堆头文件错误出来就放弃咯。。收藏先 |
|
[分享]很有时间系列:不用inf安装ndis filter驱动
代码不翼而飞了。。 已自撸 https://bbs.pediy.com/thread-261416.htm
最后于 2020-8-12 16:57
被MengXP编辑
,原因:
|
|
[原创]360,这两年的过夜费是不是该付一下了?
对方账户存在风险暂时无法收款。是被360举报了吗。。 |
|
[求助]WIN10 1803无法安装驱动
https://social.msdn.microsoft.com/Forums/en-US/540684d5-6848-4520-88fd-59d312765613/kernel-driver-working-for-years-in-field-cannot-install-on-win-10-after-signing-using-signtool?forum=windowsgeneraldevelopmentissues 这里有人提交了同样的问题 |
|
[求助]WIN10 1803无法安装驱动
遇到同样的奇葩问题,签名了一个ndis6驱动,在两个64位win10测试得到不同的结果,1803无法加载,net start 报错1275说被阻止了,1809版的win10就正常。用signtool verify /v /kp验证,在1803上无法显示出交叉证书链,在1809上能正常显示交叉证书链。 还有人遇到这种奇葩的问题吗? |
|
[求助]Flash修改后无法引导,求助……
大概知道原因了。S25FL256S有个寄存器CR1(Configure Register 1)里面有个2bit参数LC,用于控制读时序中dummy byte数量。TI DRA744在上电引导的时候默认dummy byte = 1,而CR1寄存器的LC是非易失的参数,可能被编程器修改了,导致在DRA744上电时序不匹配。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值