吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6245|回复: 14
收起左侧

[CrackMe] .net 初破 心得

[复制链接]
hqm1234 发表于 2011-8-15 15:31
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 hqm1234 于 2011-8-15 15:37 编辑

  今天早上闲来无事,看来下52的暑假cm(上),拿来其中一个cm,用.net写的,由于之前完全没有接触过.net的破解方面,今天早上花了一上午终于把这个暴力破解了。下面写下我的心得体会。
1.先看看需要用的工具Reflector.exe(用于查看反编译的c#代码,不过这个cm比较简单可以不用)
    ildasm 把.net程序翻译成il文件(具体什么是il文件,自己搜)
    ilasm   把.il文件编译成exe文件(另外上面反编译出来的几个文件必须需要才能编译成exe文件,不然编译不成功)
   另外需要了解il指令,http://www.cnblogs.com/flyingbirds123/archive/2011/01/29/msil_ref.html
2.现在先来看具体步骤
    先用Reflector.exe打开,基本上可以看出这个cm的思路,由于程序比较简单,可以很容易就逆出他的算法,由于要爆破,继续往下走。

   


下面我们来看下如何爆破
  先用ildasm反编译,,得到一系列文件
  用010edit打开il文件,这么多,挨个看太麻烦了。由上面可以看到cm成功或者失败 都是用messgebox显示的,所以直接搜messgebox果然有,重点就是下面这段代码了。
IL_0048:  brtrue.s   IL_0080

    IL_004a:  nop
    IL_004b:  ldarg.0
    IL_004c:  ldfld      class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication1.Form1::textBox1
    IL_0051:  ldc.i4.0
    IL_0052:  callvirt   instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Visible(bool)
    IL_0057:  nop
    IL_0058:  ldarg.0
    IL_0059:  ldfld      class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication1.Form1::textBox2
    IL_005e:  ldc.i4.0
    IL_005f:  callvirt   instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Visible(bool)
    IL_0064:  nop
    IL_0065:  ldarg.0
    IL_0066:  ldfld      class [System.Windows.Forms]System.Windows.Forms.Label WindowsFormsApplication1.Form1::label3
    IL_006b:  ldc.i4.1
    IL_006c:  callvirt   instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Visible(bool)
    IL_0071:  nop
    IL_0072:  ldstr      bytearray (4F 00 4B 00 02 30 53 00 75 00 63 00 63 00 65 00   // O.K..0S.u.c.c.e.
                                    73 00 73 00 )                                     // s.s.
    IL_0077:  call       valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string)
    IL_007c:  pop
    IL_007d:  nop
    IL_007e:  br.s       IL_008b

    IL_0080:  ldstr      bytearray (4E 00 6F 00 02 30 66 00 61 00 69 00 6C 00 65 00   // N.o..0f.a.i.l.e.
                                    64 00 )                                           // d.
    IL_0085:  call       valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string)
    IL_008a:  pop
    IL_008b:  ret


两个messagebox肯定就是我们需要爆破的地方了,通常就是改跳转,结合Reflector反编译的,我们可以得出IL_0085这个call就是显示成功crack的地方
在往上看到IL_0048:  brtrue.s   IL_0080,查询il指令,
brtrue.s 如果 value 为 true、非空或非零,则将控制转移到目标指令(短格式)
改成IL_0048:  brfalse.s   IL_0080,保存。



调用ilasm编译 命令为(ilasm 求爆破)默认编译成exe,
OK 爆破成功!
这个.net程序,没有用到其他的加密措施,如加壳,混淆代码等,故比较简单,希望以上的一点心得对大家有帮助,



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 1热心值 +1 收起 理由
Shiny + 1 感谢您的分析,[吾爱破解]有你更精彩!

查看全部评分

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

 楼主| hqm1234 发表于 2011-8-15 15:42
。。。貌似这个cm破解心得有人发了,之前没发现,囧~~~~~~~~



头像被屏蔽
Shiny 发表于 2011-8-15 15:57
 楼主| hqm1234 发表于 2011-8-15 16:03
woyaodaili 发表于 2011-8-15 16:27
hqm1234 发表于 2011-8-15 15:31
今天早上闲来无事,看来下52的暑假cm(上),拿来其中一个cm,用.net写的,由于之前完全没有接触过.net的 ...

不错,感谢提供的思路和资料~
a070458 发表于 2011-8-15 20:11
先顶 再看 谢LZ了
低调(d-iao) 发表于 2011-8-16 01:25
还是比较喜欢用SAE直接修改..方便多
转IL 只在非常时期 嘿嘿
 楼主| hqm1234 发表于 2011-8-16 09:20
LS 我也是第一次破.net
想请教下SAE是什么东东
xiaorong520 发表于 2011-8-16 12:41
Simple Assembly Explorer (SAE) 用来破解和汉化。net 常用 看个人喜好~
xiaorong520 发表于 2011-8-16 12:44
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 23:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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