吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9935|回复: 40
收起左侧

[.NET逆向] 某TS下载及解密合并程序的注册机编写

  [复制链接]
NuclearEngine 发表于 2020-7-9 11:18
高考假期,想下载点资源看看,不了到都是特么m3u8的视频,部分还加了密,手动解密恢复过于麻烦,百度下,找到了这个软件
(话说大家都在拿什么软件下载m3u8呢?)

image.png
功能挺丰富,可惜要注册码,不然只给下载30s种的视频,这谁受得了呢???

正文开始
DIE瞧瞧,是个.NET写的程序,挺好
image.png
拖进DN SPY宰割
很轻松就找到了注册按钮处理函数
image.png
放大了给大家瞧瞧


private void button3_Click(object sender, EventArgs e)
{
        Form1.UpdateAppConfig("sncode", this.textBox4.Text);
        this.textBox3.Text = MachineCode.GetMachineCodeString();//获取机器码
        bool flag = this.textBox4.Text.Equals(MachineCode.cksn(this.textBox3.Text));//计算注册码并与输入数据做对比
        if (flag)
        {
                this.snflg = true;
                MessageBox.Show("注册成功,不限制文件数。");
                this.groupBox3.Text = "已注册版本";
        }
        else
        {
                this.snflg = false;
                MessageBox.Show("注册失败,请联系作者。");
                this.groupBox3.Text = "未注册版本(仅可处理10个文件)";
        }
}


再来瞧瞧 MachineCode类里有什么好玩的东东
using System;
using System.Management;
using System.Security.Cryptography;
using System.Text;

namespace TSmaster
{
        // Token: 0x0200000E RID: 14
        public class MachineCode
        {
                // Token: 0x0600006C RID: 108 RVA: 0x0000B090 File Offset: 0x00009290
                public static string GetMachineCodeString()//获取一般机器码
                {
                        string empty = string.Empty;
                        bool flag = MachineCode.machineCode == null;
                        if (flag)
                        {
                                MachineCode.machineCode = new MachineCode();
                        }
                        return MachineCode.machineCode.GetCpuInfo() + MachineCode.machineCode.GetMoAddress().Replace(":", "");
                }

                // Token: 0x0600006D RID: 109 RVA: 0x0000B0EC File Offset: 0x000092EC
                public static string cksn(string machinecode)//适当修改下机器码
                {
                        MD5 md = new MD5CryptoServiceProvider();
                        byte[] bytes = Encoding.Default.GetBytes("#$" + machinecode + "&*");
                        byte[] inArray = md.ComputeHash(bytes);
                        byte[] bytes2 = Encoding.Default.GetBytes("+-" + machinecode + "*/");
                        byte[] inArray2 = md.ComputeHash(bytes2);
                        return (Convert.ToBase64String(inArray) + Convert.ToBase64String(inArray2)).Replace("=", "");
                }

                // Token: 0x0600006E RID: 110 RVA: 0x0000B170 File Offset: 0x00009370
                public string GetCpuInfo()//字面意思
                {
                        string text = "";
                        try
                        {
                                using (ManagementClass managementClass = new ManagementClass("Win32_Processor"))
                                {
                                        ManagementObjectCollection instances = managementClass.GetInstances();
                                        foreach (ManagementBaseObject managementBaseObject in instances)
                                        {
                                                ManagementObject managementObject = (ManagementObject)managementBaseObject;
                                                text = managementObject.Properties["ProcessorId"].Value.ToString();
                                                managementObject.Dispose();
                                        }
                                }
                        }
                        catch (Exception)
                        {
                                throw;
                        }
                        return text.ToString();
                }

                // Token: 0x0600006F RID: 111 RVA: 0x0000B234 File Offset: 0x00009434
                public string GetHDid()//这个么,不知道获取的啥
                {
                        string text = "";
                        try
                        {
                                using (ManagementClass managementClass = new ManagementClass("Win32_DiskDrive"))
                                {
                                        ManagementObjectCollection instances = managementClass.GetInstances();
                                        foreach (ManagementBaseObject managementBaseObject in instances)
                                        {
                                                ManagementObject managementObject = (ManagementObject)managementBaseObject;
                                                text = (string)managementObject.Properties["Model"].Value;
                                                managementObject.Dispose();
                                        }
                                }
                        }
                        catch (Exception)
                        {
                                throw;
                        }
                        return text.ToString();
                }

                // Token: 0x06000070 RID: 112 RVA: 0x0000B2F8 File Offset: 0x000094F8
                public string GetMoAddress()//网络地址
                {
                        string text = "";
                        try
                        {
                                using (ManagementClass managementClass = new ManagementClass("Win32_NetworkAdapterConfiguration"))
                                {
                                        ManagementObjectCollection instances = managementClass.GetInstances();
                                        foreach (ManagementBaseObject managementBaseObject in instances)
                                        {
                                                ManagementObject managementObject = (ManagementObject)managementBaseObject;
                                                bool flag = (bool)managementObject["IPEnabled"];
                                                if (flag)
                                                {
                                                        text = managementObject["MacAddress"].ToString();
                                                }
                                                managementObject.Dispose();
                                        }
                                }
                        }
                        catch (Exception)
                        {
                                throw;
                        }
                        return text.ToString();
                }

                // Token: 0x04000094 RID: 148
                private static MachineCode machineCode;
        }
}

这么多就是为了算出机器码,这效率。。。。。

废话不多说,反编译码复制进vs ide,建个C#项目(我用的是VS2010)
image.png
主程序如下


//这就是的来的反编译码喽(偷懒没去优化)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Management;
using System.Security.Cryptography;
using System.Text;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;

namespace TS_MASTER注册机
{

    public class MachineCode
    {
        // Token: 0x06000064 RID: 100 RVA: 0x0000B824 File Offset: 0x00009A24
        public static string GetMachineCodeString()
        {
            string empty = string.Empty;
            bool flag = MachineCode.machineCode == null;
            if (flag)
            {
                MachineCode.machineCode = new MachineCode();
            }
            return MachineCode.machineCode.GetCpuInfo() + MachineCode.machineCode.GetMoAddress().Replace(":", "");
        }

        // Token: 0x06000065 RID: 101 RVA: 0x0000B880 File Offset: 0x00009A80
        public static string cksn(string machinecode)//算注册码
        {
            MD5 md = new MD5CryptoServiceProvider();
            byte[] bytes = Encoding.Default.GetBytes("#$" + machinecode + "&*");
            byte[] inArray = md.ComputeHash(bytes);
            byte[] bytes2 = Encoding.Default.GetBytes("+-" + machinecode + "*/");
            byte[] inArray2 = md.ComputeHash(bytes2);
            return (Convert.ToBase64String(inArray) + Convert.ToBase64String(inArray2)).Replace("=", "");
        }

        // Token: 0x06000066 RID: 102 RVA: 0x0000B904 File Offset: 0x00009B04
        public string GetCpuInfo()
        {
            string text = "";
            try
            {
                using (ManagementClass managementClass = new ManagementClass("Win32_Processor"))
                {
                    ManagementObjectCollection instances = managementClass.GetInstances();
                    foreach (ManagementBaseObject managementBaseObject in instances)
                    {
                        ManagementObject managementObject = (ManagementObject)managementBaseObject;
                        text = managementObject.Properties["ProcessorId"].Value.ToString();
                        managementObject.Dispose();
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return text.ToString();
        }

        // Token: 0x06000067 RID: 103 RVA: 0x0000B9C8 File Offset: 0x00009BC8
        public string GetHDid()
        {
            string text = "";
            try
            {
                using (ManagementClass managementClass = new ManagementClass("Win32_DiskDrive"))
                {
                    ManagementObjectCollection instances = managementClass.GetInstances();
                    foreach (ManagementBaseObject managementBaseObject in instances)
                    {
                        ManagementObject managementObject = (ManagementObject)managementBaseObject;
                        text = (string)managementObject.Properties["Model"].Value;
                        managementObject.Dispose();
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return text.ToString();
        }

        // Token: 0x06000068 RID: 104 RVA: 0x0000BA8C File Offset: 0x00009C8C
        public string GetMoAddress()
        {
            string text = "";
            try
            {
                using (ManagementClass managementClass = new ManagementClass("Win32_NetworkAdapterConfiguration"))
                {
                    ManagementObjectCollection instances = managementClass.GetInstances();
                    foreach (ManagementBaseObject managementBaseObject in instances)
                    {
                        ManagementObject managementObject = (ManagementObject)managementBaseObject;
                        bool flag = (bool)managementObject["IPEnabled"];
                        if (flag)
                        {
                            text = managementObject["MacAddress"].ToString();
                        }
                        managementObject.Dispose();
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return text.ToString();
        }

        // Token: 0x04000085 RID: 133
        private static MachineCode machineCode;
    }

    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new form1());

        }
    }
}
//对话框处理函数
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TS_MASTER注册机
{
    public partial class form1 : Form
    {
        public form1()
        {

            InitializeComponent();
            textBox1.Text = MachineCode.cksn(MachineCode.GetMachineCodeString());
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

OK-编译-链接-运行-一次通过,看看效果怎么样
image.png
image.png
完美通过:本文终------------》下片去喽


附上练手资源 https://www.lanzoux.com/iDxeqeg23rc

免费评分

参与人数 19威望 +1 吾爱币 +37 热心值 +16 收起 理由
远方呢 + 1 能不能成品发出来呢
新手号 + 1 + 1 我很赞同!
Cm.Boost + 1 + 1 我很赞同!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Jack2002 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
52pojie666z + 1 + 1 用心讨论,共获提升!
simonsu + 1 + 1 我很赞同!
yilesoft + 1 + 1 高手呀
某些人 + 1 + 1 谢谢@Thanks!
小人物241 + 1 + 1 我很赞同!
azalide88 + 1 热心回复!
lizhehan + 1 + 1 谢谢@Thanks!
sunbirdtec + 1 + 1 我很赞同!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
aoenian + 1 + 1 用心讨论,共获提升!
huangyiyi + 1 + 1 向高手学习
waltzofjack + 1 谢谢@Thanks!
细水流长 + 1 + 1 热心回复!
a109416 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

逍遥一仙 发表于 2020-7-9 11:24
本帖最后由 逍遥一仙 于 2020-7-10 07:42 编辑

话说我这个不好用吗  https://www.52pojie.cn/thread-1216473-1-1.html

点评

钱途无量!  发表于 2020-7-9 17:48

免费评分

参与人数 6吾爱币 +6 热心值 +6 收起 理由
zhu0598 + 1 + 1 太好用了!
azalide88 + 1 热心回复!
netCheney + 1 + 1 好用再次好评!
第十三 + 1 + 1 这个好用!
catshit + 1 + 1 仙大亲自出马,钱途无量!
细水流长 + 2 + 1 好用

查看全部评分

漁滒 发表于 2020-7-9 11:31
逍遥一仙 发表于 2020-7-9 11:24
话说我这个不好用吗 https://www.52pojie.cn/thread-785996-1-1.html (下载链接无法打开的话,就把下载链 ...

太好用了

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
nightring + 2 + 1 支持大大

查看全部评分

46446949 发表于 2020-7-9 11:19
 楼主| NuclearEngine 发表于 2020-7-9 11:27
逍遥一仙 发表于 2020-7-9 11:24
话说我这个不好用吗 https://www.52pojie.cn/thread-785996-1-1.html

新版本增加了自动识别本地缓存路径 ...

呀,我忘记去论坛上找了。。。。。百度上软件少得可怜
迷茫小白 发表于 2020-7-9 11:36
逍遥一仙 发表于 2020-7-9 11:24
话说我这个不好用吗 https://www.52pojie.cn/thread-785996-1-1.html (下载链接无法打开的话,就把下载链 ...

很好用,很不错
头像被屏蔽
leewaro 发表于 2020-7-9 11:44
提示: 作者被禁止或删除 内容自动屏蔽
yuyue230 发表于 2020-7-9 11:57
早有这个软件不就好了!
妙哉春风 发表于 2020-7-9 12:27
好起来了
lwp72495lwp 发表于 2020-7-9 13:12
太好用了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-20 14:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表