吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3639|回复: 13

[NET逆向图文] .NET v2.6逆向分析

  [复制链接]
Shark_鹏 发表于 2015-3-26 21:31 | 显示全部楼层 |阅读模式

【下载地址】: 自己搜索下载
【编写语言】: Microsoft Visual C# / Basic .NET
【使用工具】: Reflector,SNRemove,CFF,IDA,Simple Assembly Explorer,Hex Workshop
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
简单的一个.NET的程序。。。适合对.Net逆向不熟悉的菜菜。。。
PEID查壳显示:Microsoft Visual C# / Basic .NET
  Basic .NET的。。
  试着运行下标题上显示试用时间。。。功能上没有限制。。
  开始动手:
  Reflector 载入:
  看看有什么敏感信息:
  发现RegisterForm:
  很明显被混淆过了。。。
  
  在里面找到关键部分:

  1.   private void (object, EventArgs)
  2.   {
  3.       if (Environment.OSVersion.Version.Minor == 1)
  4.       {
  5.           Encryption.CryptoProvider defaultProvider = Encryption.CryptoProvider.RC2;
  6.           Encryption encryption = new Encryption("zse3432WERtgyh87opDDertyuMKioiirq24D5bnA", defaultProvider);
  7.           if (!this..ValidateKey(this..Text))
  8.           {
  9.               MessageBox.Show("The key you enter is INVALID!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
  10.           }
  11.           else
  12.           {
  13.               MessageBox.Show("Thank you for the registration!", "Registration complete", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  14.               try
  15.               {
  16.                   RegistryKey key2 = Registry.CurrentUser.OpenSubKey(@"Software\Dasain.com\CodeKeeper.NET", true);
  17.                   string str = encryption.Encrypt(this..Text, "zse3432WERtgyh87opDDertyuMKioiirq24D5bnA");
  18.                   key2.SetValue("Registration", str);
  19.                   key2.Close();
  20.               }
  21.               catch
  22.               {
  23.               }
  24.           }
  25.       }
  26.       else if (this..ValidateKey(this..Text))//ValidateKey通过方法判断用户输入的序列号是否有效!!!!
  27.       {
  28.           MessageBox.Show("Thank you for the registration!", "CodeKeeper .NET", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  29.           try
  30.           {
  31.               RegistryKey key4 = Registry.CurrentUser.OpenSubKey(@"Software\Dasain.com\CodeKeeper.NET", true);
  32.               string text = this..Text;
  33.               key4.SetValue("Registration", text);
  34.               key4.Close();
  35.           }
  36.           catch
  37.           {
  38.           }
  39.       }
  40.       else
  41.       {
  42.           MessageBox.Show("The key you enter is INVALID!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
  43.       }
  44.   }
  45.   
  46.   
  47.   
复制代码
双击下来到ValidateKey方法,发现在Dasain.Key.dll中。。。

  1.   public bool ValidateKey(string key)
  2.   {
  3.       char[] chArray = new char[0x18];
  4.       int num2 = 0;
  5.       for (int i = 0; (i < key.Length) && (num2 < 0x18); i++)
  6.       {
  7.           char ch = key[i];
  8.           if ((((ch >= '0') && (ch <= '9')) || ((ch >= 'a') && (ch <= 'z'))) || ((ch >= 'A') && (ch <= 'Z')))
  9.           {
  10.               chArray[num2++] = key[i];
  11.           }
  12.       }
  13.       for (int j = 0; j < chArray.Length; j++)
  14.       {
  15.           if ((chArray[j] >= 'a') && (chArray[j] <= 'z'))
  16.           {
  17.               chArray[j] = (char) ((chArray[j] + 'A') - 0x61);
  18.           }
  19.       }
  20.       for (int k = 0; k < chArray.Length; k++)
  21.       {
  22.           if (chArray[k] == 'I')
  23.           {
  24.               chArray[k] = '1';
  25.           }
  26.           if (chArray[k] == 'L')
  27.           {
  28.               chArray[k] = '1';
  29.           }
  30.           if (chArray[k] == 'O')
  31.           {
  32.               chArray[k] = '0';
  33.           }
  34.           if (chArray[k] == 'S')
  35.           {
  36.               chArray[k] = '5';
  37.           }
  38.       }
  39.       for (int m = 0; m < chArray.Length; m++)
  40.       {
  41.           char[] chArray2;
  42.           int num6;
  43.           if ((chArray[m] >= '0') && (chArray[m] <= '9'))
  44.           {
  45.               (chArray2 = chArray)[num6 = m] = (char) (chArray2[num6] - '0');
  46.           }
  47.           if ((chArray[m] >= 'A') && (chArray[m] <= 'H'))
  48.           {
  49.               (chArray2 = chArray)[num6 = m] = (char) (chArray2[num6] - '7');
  50.           }
  51.           if ((chArray[m] >= 'J') && (chArray[m] <= 'K'))
  52.           {
  53.               (chArray2 = chArray)[num6 = m] = (char) (chArray2[num6] - '8');
  54.           }
  55.           if ((chArray[m] >= 'M') && (chArray[m] <= 'N'))
  56.           {
  57.               (chArray2 = chArray)[num6 = m] = (char) (chArray2[num6] - '9');
  58.           }
  59.           if ((chArray[m] >= 'P') && (chArray[m] <= 'R'))
  60.           {
  61.               (chArray2 = chArray)[num6 = m] = (char) (chArray2[num6] - ':');
  62.           }
  63.           if ((chArray[m] >= 'T') && (chArray[m] <= 'Z'))
  64.           {
  65.               (chArray2 = chArray)[num6 = m] = (char) (chArray2[num6] - ';');
  66.           }
  67.       }
  68.       long num7 = 0L;
  69.       long num8 = 0L;
  70.       long num9 = 1L;
  71.       for (int n = 0; n < 12; n++)
  72.       {
  73.           num7 += chArray[n] * num9;
  74.           num9 *= 0x20L;
  75.       }
  76.       num9 = 1L;
  77.       for (int num11 = 12; num11 < 0x18; num11++)
  78.       {
  79.           num8 += chArray[num11] * num9;
  80.           num9 *= 0x20L;
  81.       }
  82.       num7 = (num7 ^ 0x89b01d3da4d55a9L) ^ this.;
  83.       num8 = (num8 ^ 0x8bc9f8bd58b03d5L) ^ this.;
  84.       long num12 = num7 & 0x3fffffffL;
  85.       long num13 = (num7 & 0xfffffffc0000000L) >> 30;
  86.       long num14 = num8 & 0x3fffffffL;
  87.       long num15 = (num8 & 0xfffffffc0000000L) >> 30;
  88.       return (((num12 == num13) && (num12 == num14)) && (num12 == num15));
  89.   }
  90.   有兴趣的朋友试试做个注册机吧~~!!
  91.   
复制代码
再看下程序哪里还用到了这个方法:
  有两处:

  
  现在开始来修改程序,只要ValidateKey方法返回的总是1就可以了:
  就用个工具去改吧。。。
  Simple Assembly Explorer打开程序
  双击dasain.key.dll

  1.   386             L_0288:        bne.un.s        389 -> ldc.i4.0
  2.   387             L_028a:        ldc.i4.1        
  3.   388             L_028b:        ret        
  4.   389             L_028c:        ldc.i4.0        //右击EDIT改为ldc.i4.1保存退出
  5.   390             L_028d:        ret                                
  6.   
复制代码
试运行下。。发现强名称检验失败:

   讲下强名称的去除方法:
  手动来:
  IDA载入dasain.key.dll到开始位置如下图:
  
  这里就是强名称了。。。
  用Hex Workshop打开搜索一下。。
  
  用工具Strong Name Remove就更简单了就不说了。。
  修改完后运行还是提示强名称检验失败。。。汗汗。。。dasain.key.dll强名称已经去除了。。。那肯定就是主程序的事咯。
  同样的方法去除CodeKeeper.NET.exe的强名称。。
  之后用CFF打开:
  
  这次就用工具试下吧:
  
  好了。。。再来运行下。。哈哈。。可以了。。。
  
  

评分

参与人数 23HB +22 THX +12 收起 理由
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
24567 + 2
花盗睡鼠 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
Jawon + 1
一路走来不容易 + 1
后学真 + 1
消逝的过去 + 1
飞刀梦想 + 1
冷亦飞 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
xgbnapsua + 1
4957465 + 1
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
ghostxu + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
ldljlzw + 1
zwj00544 + 1
hackysh + 1
lies + 1
呴呴喽 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
逍遥枷锁 + 4 + 1 好人有好报!你的热心我永远不忘!谢谢!
飞行太保 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
雪里红 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
Shark恒 + 3 + 1 评分=感恩!简单却充满爱!感谢您的作品!!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
月光下の魔术师 发表于 2015-3-26 23:10 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| Shark_鹏 发表于 2015-3-27 04:14 | 显示全部楼层

月光下の魔术师 发表于 2015-3-26 23:10
lz无数次屠版是想干啥?

我板块没人  必须屠版
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Scar-疤痕 发表于 2015-3-27 07:51 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
呴呴喽 发表于 2015-3-28 18:41 | 显示全部楼层

不会c 看不懂里面的东西啊

评分

参与人数 1HB +1 收起 理由
为了核平 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
bfbvip 发表于 2015-4-12 10:11 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hackysh 发表于 2022-2-7 12:46 | 显示全部楼层


[快捷回复]-感谢楼主热心分享!

评分

参与人数 1HB +1 收起 理由
为了核平 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-3-11 04:24 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zwj00544 发表于 2022-3-11 05:13 | 显示全部楼层


[快捷回复]-软件反汇编逆向分析,软件安全必不可少!

评分

参与人数 1HB +1 收起 理由
为了核平 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
ldljlzw 发表于 2022-3-11 10:05 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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