终于可以不用radmin了

进别人机器后,最害怕和机主同时在线,他会轻而易举的发现你,所以我都是用个监控机主屏幕的玩意,也能满足一下偷窥的猎奇心理。但是杯具的是,radmin太容易被杀了,不光radmin,任何一个大众化的监控程序都会轻而易举被杀,弄了好多壳都没用。

 

于是费了一番折腾把这个功能做到自己几年前做的那个远程监控中,终于,不会被杀了。

 

我那个远程监控是remoting的服务,之前日志写过。

好处是,功能可以后随时做随时改,功能和服务分离

即服务中只有保护账号保护账号权限保护终端服务监视防火墙规则保护自身免中止等这些不大会变化的固有功能

又加了一个自动检查更新。

然后就是一个空的代理类,里面只有一个返回远程对象和执行远程方法的代码。

 

大量的实际功能是本地的一个dll类库,随时改随时写都可,连接远程服务的时候,在远程服务调用这个本地dll,那么这个本地的dll就顺着remoting信道跑到远程的内存中了,然后本地反射里面的方法,那么就实现了远程执行本地用

 

每次连都要传输这个dll吗?是,.net的优势体现出来了,就是个头小,dll里一大堆一大堆乱七八糟的东西,编译出来仍然几十k。

 

其他的功能比如进程、文件、执行什么的,都可以在这个dll操作,只有远程监控不行,因为服务是localsystem账户运行,用截图或者发送键盘鼠标合着是发到system用户而不是administrator

 

所以,必须在administrator下运行一个进程才能监控administrator,那么怎么让administrator运行进程呢,又不知道他密码,好在有个createprocessasuser api,以用户的token运行而不是密码,又好在localsystem可以免费取到所有登录用户的token,那么O(∩_∩)O

 

就这样那个dll默默地释放了一个exe到某目录,这个exe在administrator不知不觉中以他的身份后台运行了,为我传来了他的屏幕,为我执行了mouse_event keybd_event等。createprocessasuser有个参数可以让程序后台运行不显示。

这个exe应该是console程序而不是winform,如果是winform的,那么alt+tab好像能看到。

但是无论是console还是winform,进程管理器都能看到,有个方法说是可以在任务管理器隐藏,是c#的,但是我想别这么麻烦了,我起了一个很像微软进程的名字,而且杀软又不报毒,运行又不显示,谁会一直盯着任务管理器看呢,要是真遇上警惕性这么高的人,那么想什么办法都会被他发现。

这里发现了一个问题,释放这个exe的时候,最好避开system32和windows目录,因为最起码360就报警了,也不要是放到temp下,因为有的杀软看到temp下运行程序也会报警,所以,可以释放到program files下其他安装程序的目录中,起个什么名字呢,最好不要叫svchost.exe,这属于“伪装windows进程”,一些杀软认为这是“病毒行为”所以会报警,其实windows进程有很多,比如有个tcpsrv,那么可以起个udpsrv之类的嘛,这又不会被报警又难以分辨。

 

这个exe一定要周身被try catch包裹起来,即使莫名其妙退出也不能让他弹出错误提示,这可是在administrator账号下运行的,出错就会在他桌面上显示出来。多加try catch,程序可不死。

 

 

缺点,用截屏的api效率不高,传送回来的时候,最好的当然是bmp,但是个头太巨大了,其次是png,也是很巨大,我试了一下我的桌面1680*1050的win7特效全开,主题是里约大冒险,api截了这一张图,用png保存,4兆多,所以还是用jpg保存吧,那个只有400多k,还可以接受,如果还嫌大,那么就得调jpg的质量了,或者直接gif,gif倒是小了,可是那效果也太惨不忍睹了。那么可不可以压缩一下或者有个什么方法只传送改变之类的呢,这个就太麻烦了,而且cpu直线上升就得不偿失了。

 

 

对了有人说截屏的api截不到视频和类似的浮动弹出窗口,但是我试着桌面的一切都可以截啊,就像print screen键一样,无论是media player里播放的视频还是浮动窗口还是透明窗口,还是输入法的那个菜单,还有鼠标,都能截下,只有dx游戏没试验过,但是media player是开着dx加速的啊,难道和游戏的还不一样?不知道怎么回事。

radmin截不到鼠标和输入法弹出菜单,这个太讨厌了,输入文字的时候看不到选择的列表,只能靠猜。但是截图api可以截到。

 

 

是不是在system下可以直接截取任意用户的屏幕而不需要在该用户身份下运行程序呢,这方面资料没找到,网上连个问的都没有,我试了一下,在administrator下把getdesktopwindow或者getwindowdc的handle传给system下的进程,截了是黑屏,非得在该用户下运行一程序才行。

 

remoting的效率太低了,本来我是想客户端只remoting到服务器和那个dll通信,那个dll和exe通信,dll充当中转站,但是这样效率低的吓人,并不是cpu和内存上升,而是remoting的网络传输部分一件事来来回回好多次,造成延迟的厉害,我试了一下通过这种方法,服务器只能一秒钟传个1、2张图的样子。

所以就得改进一下,那个exe,反向链接到我的机器的某端口,过防火墙了,过路由器了。速度上来了。

 

机器是内网,remoting服务端,要upnp一下,得到外网ip,写到machinename。

upnp网上有一个例子,其实很简单,就是发一个broadcast广播,udp的,这样同一内网段的路由器就会返回给你他的ip和upnp映射的端口,我的这个di-504m是1780端口,别的路由器不一定是这个端口,然后就tcp 192.168.0.1:1780发过去一个指令过去,这个指令最常用的就是添加映射删除映射更新映射,然后接受返回,看看成功没,就这么简单,通信都是固定的xml格式。

这样内网自动映射,内网变外网了。

 

可以加上录音,用directsound或winmm.dll截取声音传过来,可以截麦克风的和扬声器的都行,传回来。

 

截摄像头?我进入的机器,也不少了,到现在没发现一个有摄像头的,都是服务器。他们连声卡都没有,或者关闭。

 

 

现在做了文件系统操作部分,进程操作部分,远程cmd,和屏幕监控部分了,其他的像注册表还有什么的,以后慢慢做吧,服务器端不用动,本地改那个dll就行了,remoting这方面真是挺方便啊。

 

对了,并不限于console登录的administrator,终端服务登录的用户也一样可以监控,都是同样的方法,query出token来,然后让他运行。

 

radmin可以完全替代了。而且最重要的是免杀。

 

 

就是界面丑了一点。

 

 

其实他有防火墙的,只是他刚升级完,图标缓存有点问题,所以右下角没显示出来。

他们是东九区,比咱快1小时。

你可能感兴趣的:(C#)