精易论坛

标题: (奇技淫巧)多进程全频无窗口通讯支持同步异步回复 [打印本页]

作者: 雨过天晴    时间: 2023-8-29 07:48
标题: (奇技淫巧)多进程全频无窗口通讯支持同步异步回复
本帖最后由 雨过天晴 于 2023-8-29 19:24 编辑

之前写的一份代码没有完善今天把他完善了.
因为结构体的问题e开发进程通讯有些不方便.
特别是在多进程的情况下.
目前悉知的进程通讯方式 tcp  map  管道
这些用在进程通讯都有很多缺点
1.设计复杂
2.句柄不能重复使用,如管道 连接一次该句柄即刻作废.
3.需要一个识别的参数,如窗口句柄, tcp ip

4.接收函数与发送函数需要区别编写,增加了代码量

5.占用限制,如内存文件与管道,在句柄被使用之后不能再有第二个连接方除非你创建无数个对象

我在研究内核向r3 主动通讯的时候一直没有发现什么好方法 可以代码简洁思路清晰的 主动通讯 r3中所有属于自己的应用程序.
因为不管哪一种方法 都需要向通讯者提供一个接收句柄来作为通讯的钥匙,这不符合编程思想,一切应该一以简单直接了当作为原则,如果我写一个通讯都要考虑我有多少个进程 多少个窗口 ,那么我必然还需要写向通讯进程提供这些窗口句柄或者通讯句柄的代码,这显然太麻烦,所以我研究出了一种线程挂起的方式,自动的枚举出系统中符合我识别标识的进程线程,并且向他们广播我的通讯内容.
此框架支持同步异步,同步通讯可以接收到回复内容,尤其是在DLL中与外部主进程通讯得到一定的开发客观性.
出来接收线程的代码不用动,在接收回调中可进行加密处理.
此框架运行的条件是通讯者之间都可以持有对方进程的open权限.如果没有保护驱动拦截的情况下都是拥有该权限的.
多进程通讯.e (857.34 KB, 下载次数: 237)    
关于优化思路:首次广播应当保存在线客户的句柄,通讯失败自然GetThreadContext会失败代表进程退出则删除该句柄的保存.
另外新进程创建可以向全进程广播自己,那么不就是有通讯者ID吗加入你的保存列队就行了
由于这是框架优化我也懒得写全了,那么简单的问题就不用问了7系统的GetThreadContext参数可能不同,另外影响寄存器的情况下可以使用线程入口的汇编字节作为通讯的标识稳定性更强,懒得更新了就行这样吧



作者: oldghost    时间: 2023-8-29 08:01
先生,大才!
作者: 光影魔术    时间: 2023-8-29 08:34
不明觉厉
作者: pjm123    时间: 2023-8-29 08:35
谢谢分享  
作者: 小情缘    时间: 2023-8-29 08:39
支持 谢谢分享  
作者: muye84    时间: 2023-8-29 08:46
支持 谢谢分享
作者: wlaita2286    时间: 2023-8-29 08:53
牛6666666666666666666
作者: zzh233    时间: 2023-8-29 08:55
,一切应该一以简单直接了当作为原则 这句话好评
作者: 不苦小和尚    时间: 2023-8-29 08:58
试试看看,谢谢分享
作者: zzh233    时间: 2023-8-29 08:58
哇塞这是什么神奇的事情 我编译后 保存到桌面居然 看不到这个exe
作者: aosheng    时间: 2023-8-29 09:04
6666666666666666666666666
作者: zzh233    时间: 2023-8-29 09:06
大神这个我研究半天 不会用啊 我把进程id做了个编辑框 然后输入 另外打开的这个的进程id 点击发送消息 对方没有反应 是接受的地方还需要怎么修改吗
作者: yangjie008    时间: 2023-8-29 09:16
不知稳定性如何?尤其是线程的处理方面
作者: 雨过天晴    时间: 2023-8-29 10:27
本帖最后由 雨过天晴 于 2023-8-29 10:39 编辑
yangjie008 发表于 2023-8-29 09:16
不知稳定性如何?尤其是线程的处理方面

原理方面没问题 我内核与r3用这个通讯很长时间了 没出现过问题  如果是高频调用就用同步 因为异步没有缓存不确定对方接收过程是否完成 高频会漏包
作者: 雨过天晴    时间: 2023-8-29 10:37
本帖最后由 雨过天晴 于 2023-8-29 10:48 编辑
zzh233 发表于 2023-8-29 09:06
大神这个我研究半天 不会用啊 我把进程id做了个编辑框 然后输入 另外打开的这个的进程id 点击发送消息 对方 ...

查看代码  如果真 (上下文.Ebx = 564654165)  是否通过执行 另外不要修改
接收线程 函数中的代码如果是你用的什么特殊编译器引起的 寄存器变化 那么就需要修改下代码

作者: inat    时间: 2023-8-29 11:26
每通讯一次就要枚举一次所有进程再打开,进程多了广播频率高会不会效率比较低和占用比较大
作者: 雨过天晴    时间: 2023-8-29 12:04
本帖最后由 雨过天晴 于 2023-8-29 12:11 编辑
inat 发表于 2023-8-29 11:26
每通讯一次就要枚举一次所有进程再打开,进程多了广播频率高会不会效率比较低和占用比较大 ...

你不会保存句柄不关闭吗,  或者程序启动就像所有进程广播自己的句柄这样谁都拥有谁的线程id 就不用每次都枚举了
作者: quary    时间: 2023-8-29 12:29
谢谢楼主分享!!! 好人一生平安!!!
作者: 宁静清澈    时间: 2023-8-29 12:37
6666666666666666666666666
作者: 一指温柔    时间: 2023-8-29 13:15
谢谢分享  
作者: 外星人群控    时间: 2023-8-29 13:22
感谢分享, 习惯用tcp了, 目前测试100个窗口是可以的
作者: pt1314    时间: 2023-8-29 13:52
不知稳定性如何?尤其是线程的处理方面

作者: 784326742    时间: 2023-8-29 13:57
本帖最后由 784326742 于 2023-8-29 14:01 编辑

win7无效,没仔细看代码

作者: 常先生    时间: 2023-8-29 14:05

谢谢楼主分享!!! 好人一生平安!!!
作者: xmcx888    时间: 2023-8-29 14:25
开源精神必须支持~
作者: c勇往直前    时间: 2023-8-29 15:25
支持支持支持
作者: 本森Bin    时间: 2023-8-29 18:24
感谢分享
作者: tw1    时间: 2023-8-29 19:09
感谢分享
作者: ZHuanR    时间: 2023-8-29 21:46
开源精神必须支持~
作者: 菠菜521    时间: 2023-8-29 21:59
#在这里快速回复#首次广播应当保存在
作者: 菠菜521    时间: 2023-8-29 21:59
首次广播应当保存在
作者: fyh505099    时间: 2023-8-29 23:03
感谢分享 支持开源 跟着大佬学习一下
作者: lian1223    时间: 2023-8-30 00:46
感谢分享 支持开源 跟着大佬学习一下
作者: bianyuan456    时间: 2023-8-30 01:57
已经顶贴,感谢您对论坛的支持!
作者: 蒙顺童    时间: 2023-8-30 02:14
已经顶贴,感谢您对论坛的支持!
作者: 一指温柔    时间: 2023-8-30 08:37
支持开源~!感谢分享
作者: kantal    时间: 2023-8-30 10:03
开源精神必须支持~~
作者: duanyijun    时间: 2023-8-30 10:31
下载必回复
作者: 君九    时间: 2023-8-30 10:33

学习一下
作者: xue1995    时间: 2023-8-30 14:32
开源精神必须支持~
作者: A9952    时间: 2023-8-30 15:48
感谢分享很需要
作者: yangdoudou    时间: 2023-8-30 16:07
学习学习
作者: yu520    时间: 2023-8-30 22:33
学习学习
作者: 396384183    时间: 2023-8-31 13:42
感谢分享
感谢分享
作者: crossdiy    时间: 2023-9-1 16:27
感谢分享
作者: jia201314973    时间: 2023-9-1 18:28
开源精神必须支持~
作者: 已注销571294    时间: 2023-9-2 08:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: freeocean    时间: 2023-9-3 00:47
赠人玫瑰手有余香
作者: ppppzj    时间: 2023-9-3 07:13
感谢分享~
作者: ΒΜΧ    时间: 2023-9-3 12:05

作者: tco99    时间: 2023-9-3 13:21
感谢分享666
作者: sjsjsjsj    时间: 2023-9-3 13:33
开源精神必须支持~
作者: w521521    时间: 2023-9-4 18:42
感谢分享,很给力!~
作者: 33323459    时间: 2023-9-4 21:18
什么啊,没看明白
作者: pipicool    时间: 2023-9-6 16:46
学习一下
作者: y1030155959    时间: 2023-9-7 16:51

感谢分享
作者: 0898002    时间: 2023-9-7 20:59
感谢分享~
作者: DKSO    时间: 2023-9-8 10:51
支持开源~!感谢分享!~
作者: czg108    时间: 2023-9-8 23:45
感谢分享
作者: 小白来学习学习    时间: 2023-9-12 12:00
大佬牛逼++++++6666666666666
作者: fengyewl    时间: 2023-9-14 09:30
        开源精神必须支持~
作者: 落得清闲    时间: 2023-9-14 16:24
接收线程里面是死循环
作者: qq15632474898    时间: 2023-9-15 12:37
666666666666666666666666666
作者: 17097575755    时间: 2023-9-18 14:50
print(time.time()-s)
作者: qc999    时间: 2023-9-18 19:52
下载看看
作者: sophitia212    时间: 2023-10-9 01:49
同步调用需要一个超时,不然对方程序挂了,自己就永远等待着。
作者: sophitia212    时间: 2023-10-9 01:51
sophitia212 发表于 2023-10-9 01:49
同步调用需要一个超时,不然对方程序挂了,自己就永远等待着。

我的意思是消息发给对方,对方收到消息的时候自己程序关闭了。我就会一直处于等待状态。
作者: Akari    时间: 2023-10-12 21:52
感谢您对论坛的支持!
作者: qe147258    时间: 2023-11-2 19:05
我是来学习的
作者: 6848161    时间: 2023-12-7 06:54
学习!!!!!!!!!!!!!!!!!!!!!
作者: 温暖的舌骨    时间: 2024-1-16 16:39

作者: 1828009986    时间: 2024-1-23 15:44
赠人玫瑰手有余香
作者: wdjyltzh01    时间: 2024-4-12 21:36
好东西必须支持下
作者: wolfpack    时间: 2024-4-28 13:01

作者: dikexu    时间: 2024-12-10 14:13
好东西必须支持下
作者: jylt531971998    时间: 2025-1-20 22:16
好东西必须支持下




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4