vb.net 破解

【文章标题】: 初学者破解VB.NET简单加密教学
【文章作者】: 爱琴海
【软件名称】: 某数据处理程序
【下载地址】: 自己搜索下载
【编写语言】: VB.NET
【使用工具】: Reflector
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】

  PEID: Microsoft Visual C# / Basic .NET

  第一次接触VB.NET程序,产生分析的冲动。

http://bbs.pediy.com/attachment.php?attachmentid=25563&stc=1&d=1241576404
  
  软件未注册,运行后,弹出输入框要求输入对应机器码的注册码。三次输入错误提示注册失败。程序菜单全部锁定变灰色。
  
  遂用OD狂分析,一头雾水。
  
  偶见Reflector,柳暗花明,不敢独享,与君共勉。
  
  用Reflector载入主程序,看得如下:
  
   http://bbs.pediy.com/attachment.php?attachmentid=25564&stc=1&d=1241576404

  逐级展开,到“工程1”--“Form1”--“Form1_Load(Object,EventArgs):Void”
  
http://bbs.pediy.com/attachment.php?attachmentid=25565&stc=1&d=1241576567
  
  双击“Form1_Load(Object,EventArgs):Void”
  
  看到:
  
http://bbs.pediy.com/attachment.php?attachmentid=25566&stc=1&d=1241576404
  
  截取算法部分如下:
  
   bool flag = false;
      if (((Strings.Len(FileSystem.Dir("c:/program files/common files/autodesk shared/acdbspspd.lxy", 

FileAttribute.Normal)) >= 5) && (Strings.Len(FileSystem.Dir("c:/windows/winnta.dlt", FileAttribute.Normal)) >= 5)) 

&& ((Strings.Len(FileSystem.Dir("c:/windows/system/sounda.bpc", FileAttribute.Normal)) >= 5) && (Strings.Len

(FileSystem.Dir("c:/windows/system32/c_808.efp", FileAttribute.Normal)) >= 5)))
      {
          flag = true;
      }
      else
      {
          double num2 = Math.Abs(Conversion.Int((double) (Math.Tan(DateAndTime.Timer) * 100000000.0)));
          double d = num2 * 720915.0;
          double num4 = Math.Abs(Conversion.Int((double) (Math.Tan(Math.Log(d)) * 100000000.0)));
          int num5 = 1;
          do
          {
              if (Interaction.InputBox("用户码:" + Conversions.ToString(num2), "用户注册", "", -1, -1) == 

Conversions.ToString(num4))
              {
                  int fileNumber = FileSystem.FreeFile();
                  FileSystem.FileOpen(fileNumber, "c:/program files/common files/autodesk shared/acdbspspd.lxy", 

OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1);
                  FileSystem.PrintLine(fileNumber, new object[] { "confg.sys" });
                  FileSystem.FileClose(new int[] { fileNumber });
                  fileNumber = FileSystem.FreeFile();
                  FileSystem.FileOpen(fileNumber, "c:/windows/winnta.dlt", OpenMode.Output, OpenAccess.Default, 

OpenShare.Default, -1);
                  FileSystem.PrintLine(fileNumber, new object[] { "pff.efg" });
                  FileSystem.FileClose(new int[] { fileNumber });
                  fileNumber = FileSystem.FreeFile();
                  FileSystem.FileOpen(fileNumber, "c:/windows/system/sounda.bpc", OpenMode.Output, 

OpenAccess.Default, OpenShare.Default, -1);
                  FileSystem.PrintLine(fileNumber, new object[] { "aword.app" });
                  FileSystem.FileClose(new int[] { fileNumber });
                  fileNumber = FileSystem.FreeFile();
                  FileSystem.FileOpen(fileNumber, "c:/windows/system32/c_808.efp", OpenMode.Output, 

OpenAccess.Default, OpenShare.Default, -1);
                  FileSystem.PrintLine(fileNumber, new object[] { "excel.app" });
                  FileSystem.FileClose(new int[] { fileNumber });
                  goto Label_033B;
              }
              num5++;
          }
          while (num5 < 4);
          Interaction.MsgBox("注册失败!", MsgBoxStyle.OkOnly, "警告");
          this.Txt1.LoadFile(@"D:\LnlPro\cass数据处理\1.txt", RichTextBoxStreamType.PlainText);
          this.MenuStrip.Enabled = false;
          this.Toolbar.Enabled = false;
      }
  
  逐条语句分析来看:
  
  先定义一个FALSE变量
  
  检测:
  c:/program files/common files/autodesk shared/acdbspspd.lxy
  c:/windows/winnta.dlt
  c:/windows/system/sounda.bpc
  c:/windows/system32/c_808.efp
  这些文件是否存在,且大小必须大于等于5个字节,如果符合,就返回TRUE,不然就是FALSE,需要注册。
  
  可见手动建立以上这4个文件,且填入5个以上字符,即可告破。
  
  我们接着分析算法流程:
  
  do
      {
       num5++;
      }
  while (num5 < 4);
  
  表示如果注册码错误,可以允许3次输入机会。
  
  
  double num2 = Math.Abs(Conversion.Int((double) (Math.Tan(DateAndTime.Timer) * 100000000.0)));
  double d = num2 * 720915.0;
  double num4 = Math.Abs(Conversion.Int((double) (Math.Tan(Math.Log(d)) * 100000000.0)));
  int num5 = 1;
  
  用TIMER函数产生一个关于当前时间的随机数,然后对其求正切,然后对值乘100000000,转换为整型。对这个值乘以720915,类型

为DOUBLE。
  这个值也就是显示出来的机器码了。
  
  从:
  
  if (Interaction.InputBox("用户码:" + Conversions.ToString(num2), "用户注册", "", -1, -1) == Conversions.ToString

(num4))
  
  可以看出num4就是用户要输入的字符。
  
  其计算公式为:
  
  double num4 = Math.Abs(Conversion.Int((double) (Math.Tan(Math.Log(d)) * 100000000.0)));
  
  也就是将机器码取对数,再正切,然后乘以100000000,再把结果取整,组后取绝对值。这个就是注册码了!
  
  算法注册机就没必要写了,这个算法太简单。
  
--------------------------------------------------------------------------------
【经验总结】

  学会使用Reflector,对代码未加密的.NET的程序来说,非常好用!你也试试?
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年05月06日 10:18:38 
上传的缩略图
3.JPG 
上传的图像
0.JPG    1.JPG   2.JPG  

转载于:https://www.cnblogs.com/zt11402/p/3947132.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
<p style="color:#666666;"> <span style="font-size:14px;">本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">平时不明白的知识点,放在项目里去理解就恍然大悟了。</span> </p> <p style="color:#666666;"> <span></span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>一、融汇贯通</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>二、贴近实战</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>三、课程亮点</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>适合人群:</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">2、有Django基础,但是想学习企业级项目实战的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">3、有MySQL数据库基础的朋友</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><img alt="" src="https://img-bss.csdnimg.cn/202009070752197496.png" /><br /> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><br /> </span> </p>
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值