用户操作
[即时聊天] [发私信] [加为好友]
Red_angelXID:Red_angelX
55949次访问,排名1998,好友2人,关注者18人。
Red_angelX的文章
原创 53 篇
翻译 0 篇
转载 3 篇
评论 26 篇
Red_angelX的公告
新Blog:http://www.cnblogs.com/Red_angelX/ CSDN BLOG停用
最近评论
pplive0018:
lrongk:怎么没有原码
lqqldj:第一次看此类破解文章,大开眼界,谢谢.
afterruins:能把代码发下麽!学习学习!谢谢啊!
li_zhao_long@126.com
zhangwujian85:怎么下不了啊
文章分类
收藏
    相册
    推荐网站
    CodeProject
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 .net控件的破解收藏

    新一篇: 不知道怎么上传附件............. | 旧一篇: 键盘鼠标锁定小程序

          前言:前段时间寻找制作漂亮.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编译一下成功:),替换原来logo一式,已经没有MessageBox的nag了呵呵

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

    发表于 @ 2006年07月04日 11:43:00|评论(loading...)|编辑

    新一篇: 不知道怎么上传附件............. | 旧一篇: 键盘鼠标锁定小程序

    评论

    #CoolSlob 发表于2007-02-10 14:19:16  IP: 218.18.69.*
    我按照你的方法,反编译最新版本,然后修改,编译生成新的dll,运行时出现错误。
    提示:找不到字段DotNetSkin.SkinUI::x3909a0d091787c80

    请指教!
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © Red_angelX