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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 44794|回复: 95
收起左侧

[.NET逆向] XX 考试模拟软件 二级c & 二级c vip 破解

  [复制链接]
zhw990217 发表于 2018-2-3 13:49
本帖最后由 姐又寡闻了 于 2019-6-6 18:50 编辑

【零】初衷
       (萌新发帖,有所不周之处,望海涵)
       因为有个朋友 要考 二级c  下载软件后发现要付费,于是我就想可不可以 运用 从各位大佬这里学到的知识来破解它。

      
【一】查壳,od载入。。。
       我一开始 ,就直接od载入,发现程序自动退出了,再附加一看,也不行,在网上找了许多资料后,下载了许多.net的专用工具(详见后文)
调整了思路后:
我 使用 DONETStringSearch 查找了.exe 结果什么 有用的字符串都没找到,那么,破解的关键 就在dll文件上了                                    
我看到了这个名字:
那么,查一下是否混淆,并使用 de4dot反混淆了一下                                                                                                                              
使用 Reflector.exe 打开了 SystemFream.dll              
哇,我看到了什么:

那么很显然我们已经到了 入口

【二】 分析
          经过分析后,我找到了关键函数 (这多亏了 Reflector 可以把 源文件 使用 c#源码的形式 展现出来)      
         
          如图:                            4.png                        
                                                                                                         
          遍历源代码 我们找到了 关键跳转:


源代码如下:
     if (!new CheckNetStatus().CallPing(".baidu.com"))   //   [1]     
   {            if ((this.tbSN.Text != "MSPK34SF1M27WQ") || (Parameters.CurrentCourse.Sign.ToLower() != "msofficenew"))        
       {                if ((this.tbSN.Text == "MSPK34SF1M27WQ") || (Parameters.CurrentCourse.Sign.ToLower() == "cpro"))           
            {                   sok = new TipsOK("激活提示", "请检测网络是否通畅!"){   //[2]
                                    SetIco = Resources.B_weiqu               
                        };                  
                     sok.ShowDialog();                  
                     return;           
              }               
         str= "Ok";   //[3]        
           }            
              else         
              {           str= "Ok";            }   
         }      
        else   
      {      
          try            {                [url=]str[/url] = new UserRegister().PostInfo(this.CreateJson());            }         
          catch        
         {                this.btnSub2_Click(null, null);         
         }      
    }     


   switch (str)      
  {            case "Ok":                                            
     {                base.Close();            
                      this.isOk = true;               
                      SqliteHelper.set_ConStr(AppDomain.CurrentDomain.BaseDirectory + @"data\" + Parameters.CurrentCourse.Sign + @"\data.dat");               
                      JFT_Class class2 = new JFT_Class();               
                      JFT_Class model = class2.GetModel();               
                      model.set_SN(this.tbSN.Text);              
                      model.set_ClassType(StringTest.DesEncrypt(Parameters.HMAC + this.tbSN.Text + Parameters.CurrentCourse.Sign));                       
                       class2.UpdateClass([url=]model);            
                       sok = new TipsOK("激活提示", "恭喜,软件成功激活!")
     ...........





那么问题已经很清晰了,我选择断网会 报错  "激活提示", "请检测网络是否通畅!"
我们只需要在该处 不跳转 就 破解 成立


下面我使用了 reflector 的一个插件  reflexil (该插件可以修改 IL反汇编 代码)

又因为   if ((this.tbSN.Text == "MSPK34SF1M27WQ") || (Parameters.CurrentCourse.Sign.ToLower() == "cpro"))

使用了 || 所以我们需要修改两处IL代码 (具体代码含义见后文)

我们在
(116) IL_074 处       //其中 116 是在 reflector 的插件  reflexil 中显示的偏移量    6.png
(143) IL_08F 处       //IL_08F 是在 IL
     全部改为 bs_true_s

如右图:


改完收工。




【三】新的开始
在破解vip题库的时候遇到了很多问题
     首先是32位的reflector 改数据时 溢出 ,改完后成立一个负数
   else if (num== 0x65E485CF) //[1]      
      {  if (s== "Ok")//[2]      
     {                 base.Close();            
                       this.isOk = true;               
                       SqliteHelper.set_ConStr(AppDomain.CurrentDomain.BaseDirectory + @"data\" + Parameters.CurrentCourse.Sign + @"\data.dat");               
                       JFT_Class class3 = new JFT_Class();               
                       JFT_Class model = [url=]class3[/url].GetModel();               
                       model.set_SN(this.tbSN.Text);              
                       model.set_ClassType(StringTest.DesEncrypt(Parameters.HMAC + this.tbSN.Text + Parameters.CurrentCourse.Sign));               
                       class3.UpdateClass(mode)l;               
                       FileManage.WriteFile(AppDomain.CurrentDomain.BaseDirectory + "User.dat", this.tbUser.Text + "|" + this.tbPass.Text, true);            
             new TipsOK("激活提示", "恭喜,软件成功激活!")
                        ...............
     


   else if ((num == 0xb8190cac) && (s == "SnNotExist"))  //[3]  
      {            new TipsOK("激活提示", "输入的激活码不存在,请输入正确的激活码!")
       {           SetIco = Resources.B_wuyu }.ShowDialog();            return;        }      
                   new TipsOK("激活提示", "未知异常,请稍后重试!")
                { SetIco = Resources.B_weiqu }.ShowDialog();
    }


既然我们胡乱输入      会跳转到else if ((num == 0xb8190cac) && (s== "SnNotExist"))  //[3]           {                                  new TipsOK("激活提示", "输入的激活码不存在,请输入正确的激活码!")
              { SetIco = Resources.B_wuyu }.ShowDialog();               return;          }            
             new TipsOK("激活提示", "未知异常,请稍后重试!")
              { SetIco = Resources.B_weiqu }.ShowDialog();

所以这个也要改两处  else if (num == 0x65E485CF) //[1]   改成num== 0xb8190cac
                if (s== "Ok")//[2]  改成  s != "Ok"        

    但是把       0x65E485CF 改成 0xb8190cac 在 32位环境下是 负数
                   else if ((num== -1206317908) && (s == "SnNotExist"))



本来以为 凉凉 但是 细细一看源码
IL_01ab:  pop
  IL_01ac:  ret
  IL_01ad:  ldloc.1
  IL_01ae:  ldc.i4     0xb8190cac
  IL_01b3:  bgt.un     IL_0340         
  IL_01b8:  ldloc.1
  IL_01b9:  ldc.i4     0x65E485CF
  IL_01be:  beq.s      IL_01fe     //跳转到 激活成功
  IL_01c0:  ldloc.1
  IL_01c1:  ldc.i4     0xb8190cac
  IL_01c6:  beq.s      IL_01cd     //跳转到 激活失败
  IL_01c8:  br         IL_038d
  IL_01cd:  ldloc.0
  IL_01ce:  ldstr      "SnNotExist"

我一看,顿时放心了,成功在失败之前 被测试
所以
IL_01b9:  ldc.i4     0x65E485CF
  IL_01be:  beq.s      IL_01fe     //跳转到 激活成功
改为
IL_01b9:  ldc.i4     0xb8190cac
IL_01be:  beq.s      IL_01fe     //跳转到 激活成功


PS: 改数据时如果使用 Reflector 不行,那就 用 winhex 搜   0x65E485CF,我的电脑上就出现了这个问题,

偏移量我忘了,大概是在 9E0A 处,但平台不同,版本不同,等等,不确定




然后在 (521)IL_0209 处 改为 brtrue


测试 通过
YL2(4PK1ARCEXFX4YX{694G.png








【软件&破解后的文件】

no.1
Reflector、reflexil、De4Dot、IL指令速查表
http://blog.csdn.net/u010349629/article/details/52058407

no.2 破解DLL(使用说明,在压缩包里)
[url=]二级C考试模拟   破解.zip[/url]
[url=]二级C语言VIP题库   破解.7z[/url]

NO3 工具 (附件大小限制,网盘)

[url=]de4dot 链接:https://pan.baidu.com/s/1qZATwwk 密码:gcjg[/url]

[url=]Reflector9.0.1.374(已包含插件)  链接:https://pan.baidu.com/s/1jJiFsqE 密码:5nr6[/url]





【n】最后,如果我在文中有疏漏之处,敬请指正,新人第一次发帖,请轻喷,谢谢

                                         
02.png
3.png

二级C考试模拟 破解.zip

867.17 KB, 下载次数: 993, 下载积分: 吾爱币 -1 CB

二级C语言VIP题库 破解.7z

891.89 KB, 下载次数: 571, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 24吾爱币 +27 热心值 +23 收起 理由
anla2030 + 1 + 1 为啥我替换上了之后一打开就关机啊
渎书人 + 1 + 1 谢谢@Thanks!
唯一神 + 1 + 1 谢谢@Thanks!
renzhuxu + 1 + 1 用心讨论,共获提升!
yushangwl + 1 + 1 用心讨论,共获提升!
neilvv + 1 + 1 谢谢@Thanks!
long9 + 1 + 1 谢谢@Thanks!
d丿鑫 + 1 + 1 谢谢@Thanks!
lindakid + 1 谢谢@Thanks!
TheSingularity + 1 + 1 我很赞同!
17826616063 + 1 + 1 我很赞同!
189284zy + 1 + 1 热心回复!
MVP┽─Ace + 1 + 1 不知道大神有没有2018.9月份的
Endream + 1 + 1 谢谢@Thanks!
rong11417 + 1 谢谢@Thanks!
Breeze_珉 + 1 + 1 用心讨论,共获提升!
龍少ゝ网络红人 + 1 + 1 谢谢啦
米花 + 1 用心讨论,共获提升!
jiecent2018 + 1 我很赞同!可以用
无时崩溃 + 1 + 1 谢谢@Thanks!
wapj3871 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
226tiger + 1 + 1 我很赞同!
Hmily + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
淡随丶 + 1 + 1 我很赞同!

查看全部评分

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

新时代小白 发表于 2018-2-6 17:57
激动得想哭,感谢楼主!3月份我也要考二级C语言,这个软件终于让我给找到了……
Breeze_珉 发表于 2018-3-18 14:26
朽. 发表于 2018-2-6 22:27
问下 第一个附件是普通的题库吗 第二个才是vip题库吗?     vip题库的原件哪里下载啊。。

都是一样的,一个zip,一个7z,VIP题库可以直接去未来教育那里下载
欧琪茵 发表于 2018-2-5 13:22
w1w2w1w2 发表于 2018-2-5 14:50
我试过了 这个东西很好 都能用  牛
青春丿易逝 发表于 2018-2-5 17:54
计算机类题库其实只用改一个字就OK了,楼主你去找找这段
course.Status = ((a == dataTable.Rows[0]["ClassType"].ToString()) ? "已激活" : "未激活");
朽. 发表于 2018-2-6 22:27
问下 第一个附件是普通的题库吗 第二个才是vip题库吗?     vip题库的原件哪里下载啊。。
朽. 发表于 2018-2-6 22:44
有2018的吗 这怎么是2017呢
青春丿易逝 发表于 2018-2-6 22:57
朽. 发表于 2018-2-6 22:44
有2018的吗 这怎么是2017呢

链接:https://pan.baidu.com/s/1hufCaZq 密码:2333
给你一个
 楼主| zhw990217 发表于 2018-2-7 13:18
朽. 发表于 2018-2-6 22:27
问下 第一个附件是普通的题库吗 第二个才是vip题库吗?     vip题库的原件哪里下载啊。。

http://www.eduexam.cn/wt/
sqzjok 发表于 2018-2-9 16:02
谢谢,收下了
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-4-26 22:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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