zyyujq 发表于 2025-3-10 15:31

Instant VB V25.3.907最新版逆向

本帖最后由 zyyujq 于 2025-3-10 16:42 编辑

运行环境:如 WIN11
涉及工具:如 exeinfope,dnSpy 64
教程类型:如 逆向限制,算法分析等
是否讲解思路和原理:是

以下为图文内容:Tangible Software Solutions 的程序代码转换工具集中 Instant VB 用于将 VB.NET 转换为 C#.NET 代码。
在官方网站下载最新版本:https://www.tangiblesoftwaresolutions.com/





Instant VB 程序的主文件有:
Instant VB.exe
Instant VB.dll
Instant VB Logic.dll

通过 exeinfope 检测文件,Instant VB.exe 为 C++ 程序,Instant VB.dll 和 Instant VB Logic.dll 为 .NET X64程序,文件未加密未混淆。





用 dnSpy 64 打开 Instant VB.dll 进行调试。可以逆向为高级版本(Premium Edition)。

1、按数字/字符串,搜索 Free 字符,选择点击 winMain 之 SetMainCaption(),查到如下代码
private void SetMainCaption()
      {
            if (_g254._g257)
            {
                base.Title = AppCore.CurrentProductName + " (Free Edition)";
                return;
            }
            base.Title = AppCore.CurrentProductName;
      }
代码可以看到 _g254._g257 的逻辑关系为 True 时是免费版。

2、在程序中解锁高级版界面中有 Unlock the Premium Edition,在 dnSpy 64 中搜索Unlock ,发现 winRegDetails 注册窗体:



解锁高级版代码如下:

      private async void cmdUnlock_Click(object _p0, RoutedEventArgs Copyright_Tangible_Software_Solutions_p1)
      {
            string text = this.mskOrderNumber.Text.Trim('_').Trim();
            if (text.Length == 0)
            {
                await _g5.Copyright_Tangible_Software_Solutions_g11(this, "Enter your order number.", TextAlignment.Center);
                this.mskOrderNumber.Focus(NavigationMethod.Unspecified, KeyModifiers.None);
            }
            else
            {
                int num;
                int.TryParse(text, out num);
                if (num == 0)
                {
                  await _g5.Copyright_Tangible_Software_Solutions_g11(this, "The order number should be 5 digits.", TextAlignment.Center);
                  this.mskOrderNumber.Focus(NavigationMethod.Unspecified, KeyModifiers.None);
                }
                else if (num < 10000 || num > 80000)
                {
                  await _g5.Copyright_Tangible_Software_Solutions_g11(this, "Please check the order number you received after purchasing.", TextAlignment.Center);
                  this.mskOrderNumber.Focus(NavigationMethod.Unspecified, KeyModifiers.None);
                }
                else
                {
                  string text2 = this.txtRegCode.Text._g1813().TrimEnd('.');
                  if (text2.Length == 0)
                  {
                        await _g5.Copyright_Tangible_Software_Solutions_g11(this, "Enter your registration code.", TextAlignment.Center);
                        this.txtRegCode.Focus(NavigationMethod.Unspecified, KeyModifiers.None);
                  }
                  else if (text2 == AppCore._g290)
                  {
                        await _g5.Copyright_Tangible_Software_Solutions_g11(this, "Enter the new registration code you received after purchasing.", TextAlignment.Center);
                        this.txtRegCode.Focus(NavigationMethod.Unspecified, KeyModifiers.None);
                  }
                  else if (AppCore.Copyright_Tangible_Software_Solutions_g306(text2, text))
                  {
                        this._proceed = true;
                        AppCore._g297(text2, text);
                        this._g0 = _g0.OK;
                        base.Close();
                  }
                  else
                  {
                        await _g5._g12(this, string.Concat(new string[]
                        {
                            _g1459._g1460(),
                            " (",
                            text2,
                            "). ",
                            _g1459.Copyright_Tangible_Software_Solutions_g1471(),
                            "."
                        }));
                  }
                }
            }
      }


代码可以分析在 AppCore.Copyright_Tangible_Software_Solutions_g306(text2, text) 的逻辑关系为 True 时是高级版。

点击 AppCore.Copyright_Tangible_Software_Solutions_g306,dnSpy 64 进入此代码,在 Instant VB Logic.dll 的 AppCore 类中:

    public static bool Copyright_Tangible_Software_Solutions_g306(string _p0, string Copyright_Tangible_Software_Solutions_p1)
    {
      return AppCore._g299(_p0, Copyright_Tangible_Software_Solutions_p1) && AppCore._g298(_p0, Copyright_Tangible_Software_Solutions_p1) && !AppCore._g293;
    }


从代码中可以看出 Copyright_Tangible_Software_Solutions_g306 、AppCore._g299(_p0, Copyright_Tangible_Software_Solutions_p1)、AppCore._g298(_p0, Copyright_Tangible_Software_Solutions_p1)
都需要返回逻辑关系为 True

在 dnSpy 64 中编辑 IL 指令,使 g306、g298、g299 直接返回True ,代码如下:


    private static bool _g298(string _p0, string Copyright_Tangible_Software_Solutions_p1)
    {
      return true;
    }


    private static bool _g299(string _p0, string Copyright_Tangible_Software_Solutions_p1)
    {
      return true;
    }


    public static bool Copyright_Tangible_Software_Solutions_g306(string _p0, string Copyright_Tangible_Software_Solutions_p1)
    {
      return true;
    }


在 dnSpy 64 中保存模块,运行程序,程序可以注册成功,但存在时间效验,在 AppCore 类中查找和分析,发现 g305 是时间效验代码。

    public static bool _g305
    {
      get
      {
            if (AppCore._g289)
            {
                if (_g2498._g2514)
                {
                  return false;
                }
                long num = DateTime.Now.AddMonths(1).Ticks - DateTime.Now.Ticks;
                bool flag;
                bool flag2;
                long num2 = _g2498._g2524(AppCore.Copyright_Tangible_Software_Solutions_g266, out flag, out flag2);
                if (num2 > 0L)
                {
                  if (AppCore._g267 == "13620" && AppCore.Copyright_Tangible_Software_Solutions_g266._g1817("84153KS"))
                  {
                        return DateTime.Now.Ticks > new DateTime(2025, 11, 4).Ticks;
                  }
                  long num3 = DateTime.Now.AddDays(1.0).Ticks - DateTime.Now.Ticks;
                  if (AppCore._g268 > 0L && AppCore._g268 < num2 + num)
                  {
                        if (DateTime.Now.Ticks > AppCore._g268 + AppCore._g304 + num3)
                        {
                            return true;
                        }
                  }
                  else if (DateTime.Now.Ticks > num2 + AppCore._g304 + num + num3)
                  {
                        return true;
                  }
                }
                else
                {
                  if (flag)
                  {
                        return true;
                  }
                  if (AppCore._g268 > 0L)
                  {
                        if (_g2498._g2522 != DateTime.MinValue && _g2498._g2522.Ticks > AppCore._g268 + AppCore._g304 + num)
                        {
                            return true;
                        }
                        if (AppCore._g264 > AppCore._g268 + AppCore._g304 + num)
                        {
                            return true;
                        }
                  }
                }
            }
            return false;
      }
    }


将时间代码 g305 编辑 IL 指令,使其直接返回False ,代码如下:


    public static bool _g305
    {
      get
      {
            return false;
      }
    }


所有的 IL 指令编辑如下:


逻辑关系为 False 时
0      0000      ldc.i4.0
1      0001      ret


逻辑关系为 True 时
0      0000      ldc.i4.1
1      0001      ret



再次在 dnSpy 64 中保存模块,运行程序。

在注册解锁中随意输入订购单号 24128 和注册码 ChinaRedke-Crack-2025,程序注册成功,没有时间效验。程序逆向成功。
在解锁高级版界面 Unlock the Premium Edition 中置入默认注册信息:

            maskedTextBox3.Name = "mskOrderNumber";
            obj = maskedTextBox3;
            context.AvaloniaNameScope.Register("mskOrderNumber", obj);
            maskedTextBox3.TabIndex = 1;
            maskedTextBox3.Mask = "25311";//将 00000 修改为自定义订购码


            textBox3.Name = "txtRegCode";
            obj = textBox3;
            context.AvaloniaNameScope.Register("txtRegCode", obj);
            textBox3.Text = "ChinaRedke-Crack-2025";//将空格填入注册码

解锁高级版界面就不要人工输入了。


关于汉化,可以使用 IL 指令编辑汉化界面显示。


Tangible Software Solutions 的其它代码转换程序逆向与此雷同,不再阐述。

C# to C++ Converter V25.3.713
C++ to C# Converter V25.3.713
C++ to Java Converter V25.3.713
C++ to Python Converter V25.3.713
CSharp to Java Converter V25.3.713
CSharp to Python Converter V25.3.713
Instant CSharpV25.2.2311
Instant VB   V25.3.907
Java to C# Converter V25.3.716
Java to C++ Converter V25.3.713
Java to Python ConverterV25.3.713





补充内容 (2025-3-19 08:35):
本站删下载,提供CSDN下载:
https://download.csdn.net/download/zyyujq/90472082

CSDN博客:
https://blog.csdn.net/zyyujq/article/details/143491223


补充内容 (2025-3-19 08:36):
https://blog.csdn.net/zyyujq/article/details/143314744

https://blog.csdn.net/zyyujq/article/details/122934216
页: [1]
查看完整版本: Instant VB V25.3.907最新版逆向