阳光好青年 发表于 2020-11-30 16:23

一款虚拟串口工具的破解过程

本帖最后由 阳光好青年 于 2020-11-30 16:32 编辑

最近做单片机用到串口收发数据,单片机发送的数据到MOXA的串口模块,再到达应用层是TCP协议的,小公司的应用层根本不给你开发什么接口,只能用一些网上的串口工具,那又太死板不灵活,所以我就借助开源的串口工具源码、配合TCP转串口的软件写了个调测工具,但结果发现“TCP转串口的软件”只有3天的试用时间啊,刚好前天下午上班划了划水整出来无期限试用版本,今天就划水给大家分享下。
emmm、整个过程是这样子的:
1、首先这款工具是网上搜到的,一看也是小公司想的就应该不会太难,实际也是花了下午时间从学习破解软件使用到搞完破解:

2、首先查壳,果不其然...和我预料的一样.....就单纯是.net平台编写的软件
3、就搜了下.NET的破解 用到的工具是Reflector、和插件Reflexil.Reflector.AIO,论坛里都有的,这里大家看一下我学习的教程 https://www.52pojie.cn/thread-271347-1-1.html,不得不说很详细啊 我只用到了一个功能。
4、然后用Reflector打开看了下源码都有,想到的第一个关键词就是 Register,运气很好,直接看到有个类,里面还有个方法 isOverdue,明显就是试用期判断的方法,直接重写强制返回false,就无期限试用了:

5、这里放下软件下载地址,大家自己可以搞搞,成功了也能提高自己的兴趣,http://www.meixuannet.cn/
6、提前给大家拜个早年!isAuth 函数应该就是直接正式版的接口了

vipcrack 发表于 2020-11-30 20:24

本帖最后由 vipcrack 于 2020-11-30 20:28 编辑

可以KEYGEN






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;

namespace MX_keygen
{
    public partial class Form1 : Form
    {
      public Form1()
      {
            InitializeComponent();
      }
      private static double log10(ulong x)
      {
            return Math.Log(x) / Math.Log(10.0);
      }


      public static string Encoder(ulong str)
      {
            string text = "";
            for (int i = (int)Math.Floor(log10(str) / log10(62UL)); i >= 0; i--)
            {
                int num = (int)Math.Floor(str / Math.Pow(62.0, (double)i));
                text +=keyaaa.ToString();
                str -= (ulong)((double)num * Math.Pow(62.0, (double)i));
            }
            return text;
      }


      public static ulong Decoder(string str)
      {
            ulong num = 0UL;
            int num2 = str.Length - 1;
            for (int i = 0; i <= num2; i++)
            {
                num += (ulong)((long)keyaaa.IndexOf(str.Substring(i, 1).ToCharArray()) * (long)((ulong)Math.Pow(62.0, (double)(num2 - i))));
            }
            return num;
      }


      private static List<char> keyaaa = new List<char>
      {
            'v',
            'P',
            'h',
            '7',
            'z',
            'Z',
            'w',
            'A',
            '2',
            'L',
            'y',
            'U',
            '4',
            'b',
            'G',
            'q',
            '5',
            't',
            'c',
            'V',
            'f',
            'I',
            'M',
            'x',
            'J',
            'i',
            '6',
            'X',
            'a',
            'S',
            'o',
            'K',
            '9',
            'C',
            'N',
            'p',
            '0',
            'O',
            'W',
            'l',
            'j',
            'Y',
            'T',
            'H',
            'Q',
            '8',
            'R',
            'E',
            'n',
            'm',
            'u',
            '3',
            '1',
            'B',
            'r',
            'd',
            'g',
            'e',
            'D',
            'k',
            'F',
            's'
      };
      public static string MD5Encrypt32(string password)
      {
            string text = "";
            byte[] array = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(password));
            for (int i = 0; i < array.Length; i++)
            {
                text += array.ToString("X2");
            }
            return text;
      }
      protected ulong[] Crc32Table;

      public void GetCRC32Table()
      {
            Crc32Table = new ulong;
            for (int i = 0; i < 256; i++)
            {
                ulong num = (ulong)i;
                for (int num2 = 8; num2 > 0; num2--)
                {
                  num = (((num & 1) != 1) ? (num >> 1) : ((num >> 1) ^ 0xEDB88320u));
                }
                Crc32Table = num;
            }
      }

      public ulong GetCRC32Str(string sInputString)
      {
            GetCRC32Table();
            byte[] bytes = Encoding.ASCII.GetBytes(sInputString);
            ulong num = 4294967295uL;
            int num2 = bytes.Length;
            for (int i = 0; i < num2; i++)
            {
                num = (num >> 8) ^ Crc32Table[(num & 0xFF) ^ bytes];
            }
            return num ^ 0xFFFFFFFFu;
      }
      private void button1_Click(object sender, EventArgs e)
      {
            string sInputString = MD5Encrypt32(textBox1.Text.Substring(6,32));
            ulong num = GetCRC32Str(sInputString);
            if (num < 268435456)
            {
                num += 268435456;
            }
            string value = Encoder(num);
            textBox2.Text = value;

      }
    }
}

vipcrack 发表于 2020-12-1 16:52

ZCShou 发表于 2020-12-1 15:44
Keygen 代码是 vipcrack 的!不过貌似是有点问题的。好像是时间不对!


试试这个

Wapj_Wolf 发表于 2020-11-30 16:35

楼主弄得我这个伸手党都不好意思伸手了,难道真的要自己来……

小灰灰520 发表于 2020-11-30 16:34

这款软件感觉挺不错

梦古无疆 发表于 2020-11-30 16:38

楼主不应该发一个破解版的软件吗{:1_937:}

旋转的大地 发表于 2020-11-30 16:38

最近给串口玩死了,谢谢楼主分享

djzhaooo 发表于 2020-11-30 16:44

啊这。。。就拜年了??

国际豆哥 发表于 2020-11-30 16:53

感谢楼主分享!

cj4862 发表于 2020-11-30 16:54

学习了,感谢分享

gy123621 发表于 2020-11-30 17:07

楼主弄得我这个伸手党都不好意思伸手了,难道真的要自己来……,
感谢楼主,拜托楼主,直接发一个成品,好吗

qet006 发表于 2020-11-30 17:10

是的,直接发个成品呗
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 一款虚拟串口工具的破解过程