想用C#完成灰鸽子的功能,遇到很多问题,其中比棘手的一个就是的,怎么让客户端生成服务端。如果你用过灰鸽子你应该知道,在灰鸽子的客户端配置一些信息,如IP,端口等。会自动生成一个服务端,然后服务端反向连接客户端。我的问题是,这个生成服务端的功能C#里是怎么实现的?在网上也查了些资料有篇《C# 实现从自身资源提取EXE文件》的文章,他讲的就是如何将EXE文件(服务端程序文件)以资源的形式保存在PE文件中,然后自我释放出来(模仿木马的自我释放功能),这篇文章当时是发表在07年的《黑客防线》上的,网上现在只有目录,没有详细内容了,很可惜。另一篇文章《木马服务端的生成技术》,在它的第二种方法中,讲的很详细,可惜是用C++讲,我看不懂。哪位大侠能用C#详细的讲一下这方面的技术,不胜感激!
你要先搞清楚啊,.net是编译的执行的,就算你客户端能生成.CS文件,你能编译么?
就算你能调用客户端的编译器,但你能确保你的客户端都装了.net环境?
要先搞清楚再问啊,不然闹笑话!
或许,客户端和服务端做在一起了,已经编译好了,如果我知道就不问了
此“生成”绝非ZHOUYANFSS讲的调用客户编译
我说过了,和灰鸽子生成服务端那样的效果
如果你用过你就知道了
你有绑定的端口号,那么其它机器就可以根据这个端口号和IP与你通讯,反之,你也可以与其它机器通讯
按照你的描述,不应该叫做生成,最多是叫伪生成,应为肯定不是通过CS代码编译而成的!
照这样的话,你可以把服务器端的程序编译好,无论是dll,exe都是二进制而已,流读取存在你的客户端程序里,客户端程序运行时把文件写到客户端机器上,再调用就可以了!
Stream res = ass.GetManifestResourceStream("WindowsFormsApplication1.Test.exe"); FileStream fs = new FileStream(@"d:\t.exe", FileMode.Create);
res.CopyTo(fs);
fs.Close();把test.exe添加到项目中,编译行为选择为嵌入的资源。运行时就可以用这段代码释放出来。至于配置,就是根据客户端配置,写一个包含这个exe所需要的信息的配置文件嘛,ini,config都可以。
有一点小问题
res.CopyTo(fs); 这行报错
stream类好像没有这个方法啊
那就先读出来再写吧。
byte[] buf= new byte[res.Length];
fs.Write(buf, 0, buf.Length);
fs.Close();
res.Read(buf, 0, (int)res.Length);
fs.Write(buf, 0, buf.Length);
fs.Close();
ini,xml这些文件想怎么配置就怎么配置!
或者动态生成系统服务自动安装,不过一般防火墙都会提示的
还是得用C做,更底层级别的
http://www.codeproject.com/KB/cs/CodeDomCompile.aspx