首页
社区
课程
招聘
[原创].Net控件的破解
发表于: 2006-7-4 11:56 7131

[原创].Net控件的破解

2006-7-4 11:56
7131
作者:Red_angelX
前段时间寻找制作漂亮.net界面的方法,无意中发现一个皮肤dll:DotNetSkin.DLL,在一个网站上有它的破解文件,但是需要付费成为会员才能下载,象我这种穷人当然不肯花这钱,还不如自己破解.

      第一次破.net程序,先准备好Reflector,ildasm,ilasm等工具,pediy里面介绍了几款不错的工具可惜都要工作在.net Frame2.0下面,而我一直都在用1.1写东西没装.net 2.0所以只能先用上述工具先凑合

     分析这个dll,把时间调了好像没时间限制,控件里面有个Caption属性,当设置为true时,它就用自带的图片当作程序title,如果设置为flase,启动的时候就有个MessageBox的nag来提示你.先用Reflector来查看,发现代码已经混淆过了,不过仔细找,会发现有Caption属性

public void set_Caption(bool value)
{
      this.x3909a0d091787c80 = value;
      if (!this.x3909a0d091787c80 && !base.DesignMode)
      {
            MessageBox.Show("This is DotNetSkin Demo!", "DontNetSkin", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
      }
}

但是这代码对应的hex在哪找呢,把代码切换成IL模式

.method public hidebysig specialname instance void set_Caption(bool value) cil managed
{
      .maxstack 8
      L_0000: ldarg.0
      L_0001: ldarg.1
      L_0002: stfld bool DotNetSkin.SkinUI::x3909a0d091787c80
      L_0007: ldarg.0
      L_0008: ldfld bool DotNetSkin.SkinUI::x3909a0d091787c80
      L_000d: brtrue.s L_002a
      L_000f: ldarg.0
      L_0010: call instance bool [System]System.ComponentModel.Component::get_DesignMode()
      L_0015: brtrue.s L_002a
      L_0017: ldstr "This is DotNetSkin Demo!"
      L_001c: ldstr "DontNetSkin"
      L_0021: ldc.i4.0
      L_0022: ldc.i4.s 48
      L_0024: call [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string, string, [System.Windows.Forms]System.Windows.Forms.MessageBoxButtons, [System.Windows.Forms]System.Windows.Forms.MessageBoxIcon)
      L_0029: pop
      L_002a: ret
}

鼠标移上去可以看到对应指令的机器码,但是指令并不是全连续的,中间又不知道用什么填充....,最后用UE智能加手工搜索了半天终于确定了代码位置在b660h处,本想简单的去掉,可是又不知道IL对应的NOP的机器码是多少........改了半天都未能成立,看来修改二进制代码的路走不通啊...

无意间又用ildasm反编译了一次,这次发现里面有个功能转储,试一下,导出了一个il文件一个res文件和若干图片文件,在il文件里面找到set_caption属性代码,修改为

  .method public hidebysig specialname             instance void  set_Caption(bool 'value') cil managed    {      // 代码大小       43 (0x2b)      .maxstack  8      IL_0000:  ldarg.0      IL_0001:  ldarg.1      IL_0002:  stfld      bool DotNetSkin.SkinUI::x3909a0d091787c80         IL_002a:  ret    } // end of method SkinUI::set_Caption

  然后再用.net自带的ilasm编译一下成功:),替换原来dll一测试,已经没有MessageBox的nag了呵呵

看来.net的破解麻烦再于找到了代码位置却不知道如何修改,容易再于可以把他先变成中间语言修改后在重新编译.

[CODE]

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 208
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
第一次发帖没人顶
2006-7-4 12:47
0
雪    币: 211
活跃值: (1630)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
帮顶一个,学习了。
2006-7-4 12:59
0
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
4
完全不懂,只能学习
2006-7-4 13:45
0
雪    币: 50161
活跃值: (20610)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
这篇文章比较简短就不设精华了,期待你的更精彩文章。
2006-7-4 13:53
0
雪    币: 203
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
“鼠标移上去可以看到对应指令的机器码,但是指令并不是全连续的,中间又不知道用什么填充....,最后用UE智能加手工搜索了半天终于确定了代码位置在b660h处,本想简单的去掉,可是又不知道IL对应的NOP的机器码是多少........改了半天都未能成立,看来修改二进制代码的路走不通啊...”
用ilasm选择“显示字节”就可以看到连续的机器码了。
2006-7-4 22:28
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
已经有了一个好的开始
2006-7-4 22:44
0
雪    币: 208
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 badboys 发布
“鼠标移上去可以看到对应指令的机器码,但是指令并不是全连续的,中间又不知道用什么填充....,最后用UE智能加手工搜索了半天终于确定了代码位置在b660h处,本想简单的去掉,可是又不知道IL对应的NOP的机器码是多少........改了半天都未能成立,看来修改二进制代码的路走不通啊...”
用ilasm选择“显示字节”就可以看到连续的机器码了。


谢谢,才发现,有时间再慢慢研究...
2006-7-5 09:10
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
可以试试PEBrowseDebugger这个工具,你需要的功能都有了。
2006-7-6 10:10
0
游客
登录 | 注册 方可回帖
返回
//