使用游戏引擎photon打造一款特殊的远程控制软件

前言

本文主要是介绍photon引擎的一些基本用法,以及使用游戏引擎开发远控的优势

0x1

有一段时候对做游戏的unity开发有些兴趣,在找游戏服务端引擎的时候,突然发现了这款歪果人开发的游戏引擎photon,这款引擎的资料很少,费了很大劲才了解到一些基本知识。

对于C#码农来说,这款引擎真的非常强大,非常省力,而且和C#搭配非常棒。缺点就是这是一款商业引擎,不过屌丝是可以免费申请100连接数的Key。并且配备了托盘控制台和日志查看等功能。

0x2

好了,废话不多说,开始我们的正题。photon引擎是以加载模块的方式加载您开发的DLL。比如将游戏的逻辑编译成DLL,phototn负责网络连接等一些复杂的操作。

并且帮您完成IOCP和远程函数调用。这才是重点啊。那些复杂的多线程网络操作,都将由photon完成。

我们传统的木马主要有2种。

第一种是最原始的,木马本身监听一个端口,等待连接和指令

第二种是类似灰鸽子的反弹连接,木马通过域名、IP主动去连接肉鸡主人。

那么,问题来了,这两种方式都非常容易被平平安安爆菊,因为通过IP就能直接确认源头,找到控制端。

所以我就想着是不是可以通过游戏引擎开发一款远控,让控制者和被控者都相当于游戏参与者,被控者就是普通玩家,控制者相当于游戏GM,服务器将指令将通过广播传达给肉鸡,这样就无法从网络协议上确认控制者是谁。

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

0x3

因为photon是加载C#的DLL模块运行的,所以我们只需要开发一个为我们所用的DLL就行了,而不用大动干戈的去修改引擎本身。

首先创建一个类,继承ApplicationBase,在CreatePeer函数返回一个PeerBase的子类,当然这个子类是自己开发的。我命名为fuckPeer。其余的代码为日志设置,这样就能在photon控制看到自己的日志了,方便调试

具体Peer的开发 官网的demo非常详细,请直接下载吧。将DLL编译好以后还需要修改一番photon服务器的配置文件 PhotonServer.config

请注意 NBDoor 就是我写的DLL,我把官网那些demo都删掉了,不然启动速度很慢。

  1 <?xml version="1.0" encoding="Windows-1252"?>
  2 <!--
  3     (c) 2010 by Exit Games GmbH, http://www.exitgames.com
  4     Photon server configuration file.
  5     For details see the photon-config.pdf.
  6
  7     This file contains two configurations:
  8
  9         "Default"
 10                 Default. Various applications and demos.
 11                 Starts the apps: Lite, LiteLobby, MmoDemo, CounterPublisher and Policy
 12                 Listens: udp-port 5055, tcp-port: 4530, 843 and 943
 13         "LoadBalancing"
 14                 Loadbalanced setup for local development: A Master-server and two game-servers.
 15                 Starts the apps: Game1, Game2, Master, CounterPublisher and Policy
 16                 Listens: udp-port 5055, tcp-port: 4530, 843 and 943
 17 -->
 18
 19 <Configuration>
 20     <!-- Multiple instances are supported. Each instance has its own node in the config file. -->
 21     <!-- PhotonControl will currently only start "Default" but the .cmd files could be modified to start other instances. -->
 22
 23     <!-- Instance settings -->
 24     <Default
 25         MaxMessageSize="512000"
 26         MaxQueuedDataPerPeer="512000"
 27         PerPeerMaxReliableDataInTransit="51200"
 28         PerPeerTransmitRateLimitKBSec="256"
 29         PerPeerTransmitRatePeriodMilliseconds="200"
 30         MinimumTimeout="1000"
 31         MaximumTimeout="2000">
 32
 33         <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
 34         <!-- Port 5055 is Photon‘s default for UDP connections. -->
 35         <UDPListeners>
 36             <UDPListener
 37                 IPAddress="0.0.0.0"
 38                 Port="5055">
 39             </UDPListener>
 40         </UDPListeners>
 41
 42         <!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
 43         <!-- Port 4530 is Photon‘s default for TCP connecttions. -->
 44         <!-- A Policy application is defined in case that policy requests are sent to this listener (known bug of some some flash clients) -->
 45         <TCPListeners>
 46             <TCPListener
 47                 IPAddress="0.0.0.0"
 48                 Port="4530"
 49                 PolicyFile="Policy\assets\socket-policy.xml"
 50                 InactivityTimeout="10000"
 51                 >
 52             </TCPListener>
 53         </TCPListeners>
 54
 55
 56
 57
 58
 59         <!-- Defines the Photon Runtime Assembly to use. -->
 60         <Runtime
 61             Assembly="PhotonHostRuntime, Culture=neutral"
 62             Type="PhotonHostRuntime.PhotonDomainManager"
 63             UnhandledExceptionPolicy="Ignore">
 64         </Runtime>
 65
 66
 67         <!-- Defines which applications are loaded on start and which of them is used by default. Make sure the default application is defined. -->
 68         <!-- Application-folders must be located in the same folder as the bin_win32 folders. The BaseDirectory must include a "bin" folder. -->
 69         <Applications Default="NBDoor">
 70
 71
 72
 73
 74         <Application
 75         Name="NBDoor"
 76         BaseDirectory="NBDoor"
 77         Assembly="NBDoor"
 78         Type="NBDoor.NBServerApplication"
 79         EnableAutoRestart="true"
 80         WatchFiles="dll;config"
 81         ExcludeFiles="log4net.config">
 82         </Application>
 83
 84
 85
 86
 87         </Applications>
 88
 89
 90     </Default>
 91
 92     <LoadBalancing
 93         MaxMessageSize="512000"
 94         MaxQueuedDataPerPeer="512000"
 95         PerPeerMaxReliableDataInTransit="51200"
 96         PerPeerTransmitRateLimitKBSec="256"
 97         PerPeerTransmitRatePeriodMilliseconds="200"
 98         MinimumTimeout="5000"
 99         MaximumTimeout="30000"
100         DisplayName="LoadBalancing (MyCloud)">
101
102
103
104
105
106
107         <!-- Defines the Photon Runtime Assembly to use. -->
108         <Runtime
109             Assembly="PhotonHostRuntime, Culture=neutral"
110             Type="PhotonHostRuntime.PhotonDomainManager"
111             UnhandledExceptionPolicy="Ignore">
112         </Runtime>
113
114
115     </LoadBalancing>
116 </Configuration>

0x4

控制端和木马程序。控制端其实应该和木马程序功能差不多。只是界面有所不同。

两者都是直接连接游戏引擎服务器,然后发送指令,等待远程函数回调等等。

通过peer.Connect可以直接对服务器进行连接,并且需要指明模块名称,和服务器上的模块名相同

   public void Conn()
        {

            if (peer.Connect("127.0.0.1:5055", "NBDoor"))
            {
                th.Start();
            }
        }

GM管理员和普通用户不同的就是,GM可以通过发送密码,让游戏服务器确定自己的管理员身份,这样服务器就会将当前连接进行标识,从而可以调用管理员的方法,服务器再通过PeerBase.SendEvent函数,对肉鸡发送事件,执行指令

测试效果

时间: 2024-10-08 14:02:29

使用游戏引擎photon打造一款特殊的远程控制软件的相关文章

打造一款个人的远程协助软件

回到深圳的这段时间一直宅在家里搞这个,学习了老狼的教程,照着做了一个,功能差不多都实现了,做这个仅仅是对编程,对安全领域感兴趣做做实验而已. 采用了gh0st开源远控内核,它是一款基于C/S架构的远程管理软件.服务端通过反向连接主控端,连接成功后主控端会提示服务端上线,然后主控端和服务端就能互相传输信息了.并可进行终端管理,进程处理,窗口管理,文件管理,远程桌面,获取视频语音等操作,服务端设置了心跳包机制防止意外掉线. gh0st开源远控内核原理分析: 主控端传输数据使用CIOCPServer类

吴涛作品介绍-易语言和VOLCANO 3D游戏引擎

易语言 易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言.易语言降低了广大电脑用户编程的门槛,可以通过使用本语言极其快速地进入Windows程序编写的大门. VOLCANO 3D 游戏引擎 VOLCANO是一款MMORPG(大型多人在线角色扮演)3D网络游戏的开发引擎,用作支持用户快速并简单地开发具有真实游戏环境和丰富游戏玩点的游戏. 易语言 易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言.易语言降低了广大电脑用户编程的门槛,尤其是根本不

八款最佳的远程桌面工具

远程桌面是微软公司为了方便网络管理员管理维护服务器而推出的一项服务.从windows 2000 server版本开始引入,网络管理员使用远程桌面连接程序连接到网络任意一台开启了远程桌面控制功能的计算机上,就好比自己操作该计算机一样,运行程序,维护数据库等. 远程桌面采用的是一种类似TELNET的技术,它是从TELNET协议发展而来的,通俗的讲远程桌面就是图形化的TELNET. 下面向大家介绍八款最佳的远程桌面工具. 1. Teamviewer 地址: http://www.teamviewer.

Android 8款开源游戏引擎

1.Angle  (2D    Java) Angle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎,基于OpenGLES技术开发.该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现,缺陷在于文档不足,而且下载的代码中仅仅包含有少量的示例教程. 最低运行环境要求不详. 项目地址:http://code.google.com/p/angle/ 2.Rokon  (2D    Java) rokon是一款Android 2D游戏引擎,基于OpenGL ES技术开

20 款免费的 JavaScript 游戏引擎

使用 HTML5,CSS3 和 Javascript 可以帮助面向对象开发者开发拥有各种特性的游戏,比如:3D 动画效果,Canvas,数学,颜色,声音,WebGL 等等.最明显的优势在于使用 HTML5 开发的游戏能在任何现代化流行的设备上运行. 某些游戏引擎仅仅是一个抽象的层次,就简单处理一些或者更多的繁杂游戏开发任务:其他只是注重 asset 加载,输入,物理效果,音频,sprite 地图和动画,而且相当多样化.还有一些引擎架构极其简单,只包括一个 2D 水平的编辑器和调试工具. 大部分的

Android 八款开源 Android 游戏引擎

原文地址 本文内容 Angle Rokon LGame AndEngine libgdx jPCT Alien3d Catcake 最近无意间看到一篇关于 Android 搜索引擎的文章,于是搜索了,学不学是其次,主要是要有这方面的知识--技多不压身嘛~ 下面罗列出八款常见的 Android 游戏引擎,以供参考.收费.下载量过小.不公开源码,以及鄙人不知道(-_-)的引擎不在此列. Angle Angle 是一款专为 Android 平台设计的,适合快速开发的 2D 游戏引擎,基于 OpenGL

如何制作一款HTML5 RPG游戏引擎——第三篇,利用幕布切换场景

开言: 在RPG游戏中,如果有地图切换的地方,通常就会使用幕布效果.所谓的幕布其实就是将两个矩形合拢,直到把屏幕遮住,然后再展开直到两个矩形全部移出屏幕. 为了大家做游戏方便,于是我给这个引擎加了这么一个类. 本系列文章目录: 如何制作一款HTML5 RPG游戏引擎--第一篇,地图类的实现 http://blog.csdn.net/yorhomwang/article/details/8892305 如何制作一款HTML5 RPG游戏引擎--第二篇,烟雨+飞雪效果 http://blog.csd

如何制作一款HTML5 RPG游戏引擎——第四篇,情景对话

今天我们来实现情景对话.这是一个重要的功能,没有它,游戏将变得索然无味.所以我们不得不来完成它. 但是要知道,使用对话可不是一件简单的事,因为它内部的东西很多,比如说人物头像,人物名称,对话内容... 因此我们只能通过数组+JSON来将对话信息装起来,然后根据信息作出不同的显示.接下来我便要向大家展示实现方法. 先看本系列文章目录: 如何制作一款HTML5 RPG游戏引擎--第一篇,地图类的实现 http://blog.csdn.net/yorhomwang/article/details/88

18 款超酷的 HTML5 和 JavaScript 游戏引擎库

现在的游戏开发变得越来越复杂,需要制作各种炫丽的效果,还要制作各种基于 2D 或者 3D 的场景.为了节省游戏开发者的时间,让开发者集中精力在游戏的创新上,出现了许许多多的游戏引擎.而现在为了实现跨平台,HTML5 和 JavaScript 成功为了游戏开发者必备的利器,特别是移动端的开发者,必须要能很好的掌握 HTML5 和 JavaScript. 现在这么多的游戏引擎,各有各的优点和缺点,为了帮助开发者们找到属于自己的那款游戏开发引擎,我们综合了许多方面的考虑,选出来以下的 18 个超酷的