飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8431|回复: 19

完全面向初学者的 破文 ,简单

[复制链接]

该用户从未签到

发表于 2006-8-11 21:39:50 | 显示全部楼层 |阅读模式
【破文标题】破解一个老外的 Crackme
【破文作者】lgjxj
【作者邮箱】tom7411@163.com
【作者主页】
【破解工具】OllyDbg 1.1
【破解平台】Windows xp SP2
【软件名称】crackme_5.exe
【软件大小】
【原版下载】
【保护方式】UPX 0.89.6 - 1.02 / 1.05
【软件简介】这个 Crackme 是由一个老外网页合集中下的,强度 弱   壳也很弱

------------------------------------------------------------------------
这个壳手脱比用脱壳机还快,但想到新手开始不要分心的话,可以用脱壳机,脱壳后 OD 载入,大家如果学过一些
简单的破解(初学),应该知道要搜索字符串的,不过这个 Crackme,你会失望,没有有用的,不过这里我可以教大家
一个简单的方法。载入后,F9 运行,输入用户名和注册码后在插件里找到 ApiBreak 这个插件,点击-算中 万能断点
把里面的勾上后,从新在任务栏提出 Crackme ,点 check 中断。Alt+F9 返回 ,一般的软件和 Crackme 只要按 F8
几下就能找到关键的地方了,可是这个 XXX 妈的,按了我一分钟才到算法点,晕。(上面的方法对付一般的 Crackme都有效)来到下面


00450482  |.  C645 FF 01    MOV BYTE PTR SS:[EBP-1],1               ; 这里下断

00450486  |>  33C0          /XOR EAX,EAX                             ;  每轮首先清空 EAX
00450488  |.  8A45 FF       |MOV AL,BYTE PTR SS:[EBP-1]
0045048B  |.  8B55 F8       |MOV EDX,DWORD PTR SS:[EBP-8]
0045048E  |.  0FB64402 FF   |MOVZX EAX,BYTE PTR DS:[EDX+EAX-1]       ;  每个字符入EAX
00450493  |.  03D8          |ADD EBX,EAX                             ;  bx+ax bx 初始值为 0
00450495  |.  8BC3          |MOV EAX,EBX
00450497  |.  25 01000080   |AND EAX,80000001                        ;  与固定数值 2147483649 作与运算
0045049C  |.  79 05         |JNS SHORT 1.004504A3
0045049E  |.  48            |DEC EAX
0045049F  |.  83C8 FE       |OR EAX,FFFFFFFE
004504A2  |.  40            |INC EAX
004504A3  |>  F7EB          |IMUL EBX                                ;  把 ax 的结果和 bx 相乘
004504A5  |.  03D8          |ADD EBX,EAX                             ;  把结果和 bx 相加
004504A7  |.  8BC3          |MOV EAX,EBX                             ;  又回传给 ax
004504A9  |.  B9 05000000   |MOV ECX,5                               ;  固定数值 5 传 cx
004504AE  |.  99            |CDQ
004504AF  |.  F7F9          |IDIV ECX                                ;  用 AX 除以 5,DX 存高位数,ax 存底位数值
004504B1  |.  03DA          |ADD EBX,EDX                             ;  bx + dx
004504B3  |.  8BC3          |MOV EAX,EBX
004504B5  |.  25 07000080   |AND EAX,80000007                        ;  ax 命苦啊,又和固定数值 2147483655 作与运算
004504BA  |.  79 05         |JNS SHORT 1.004504C1
004504BC  |.  48            |DEC EAX
004504BD  |.  83C8 F8       |OR EAX,FFFFFFF8
004504C0  |.  40            |INC EAX
004504C1  |>  03D8          |ADD EBX,EAX                             ;  bx+ax (bx 命好,得收成果)
004504C3  |.  03DE          |ADD EBX,ESI                             ;  si 初始值为一
004504C5  |.  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]            ;  用户名入 AX
004504C8  |.  E8 1340FBFF   |CALL 1.004044E0                         ;  这个 CALL 的用处是得到用户名的长度
004504CD  |.  8B55 F8       |MOV EDX,DWORD PTR SS:[EBP-8]            ;  用户名入 EDX
004504D0  |.  0FB64402 FF   |MOVZX EAX,BYTE PTR DS:[EDX+EAX-1]       ;  最后一个字符入 EAX
004504D5  |.  8BD3          |MOV EDX,EBX                             ;  把上面一轮结果入 EDX
004504D7  |.  C1E2 02       |SHL EDX,2                               ;  DX * 4
004504DA  |.  03C2          |ADD EAX,EDX                             ;  AX + DX
004504DC  |.  8BD8          |MOV EBX,EAX                             ;  都说 BX 命好,又收结果
004504DE  |.  C1EB 02       |SHR EBX,2                               ;  bx / 4
004504E1  |.  C1EB 02       |SHR EBX,2                               ;  bx / 4
004504E4  |.  33DE          |XOR EBX,ESI
004504E6  |.  33DE          |XOR EBX,ESI
004504E8  |.  0FAFDE        |IMUL EBX,ESI
004504EB  |.  8BF3          |MOV ESI,EBX                             ;  原来最好命的是 ESI
004504ED  |.  FE45 FF       |INC BYTE PTR SS:[EBP-1]
004504F0  |.  FE4D F3       |DEC BYTE PTR SS:[EBP-D]
004504F3  |.^ 75 91         \JNZ SHORT 1.00450486

上面这里是一个循环,你输入的用户名有多小个字符就循环几次,下面的 CALL 的分析就不写了,累

004504F5  |>  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
004504F8  |.  8B87 04030000 MOV EAX,DWORD PTR DS:[EDI+304]
004504FE  |.  E8 8DEEFDFF   CALL 1.0042F390
00450503  |.  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]
00450506  |.  50            PUSH EAX
00450507  |.  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
0045050A  |.  50            PUSH EAX
0045050B  |.  8D55 D8       LEA EDX,DWORD PTR SS:[EBP-28]
0045050E  |.  8BC6          MOV EAX,ESI
00450510  |.  E8 B37DFBFF   CALL 1.004082C8
00450515  |.  8B45 D8       MOV EAX,DWORD PTR SS:[EBP-28]            ;  输入用户名 lgjxj 经上面计算后结果 -640106896
00450518  |.  E8 C33FFBFF   CALL 1.004044E0
0045051D  |.  83E8 02       SUB EAX,2
00450520  |.  50            PUSH EAX
00450521  |.  8D55 D4       LEA EDX,DWORD PTR SS:[EBP-2C]
00450524  |.  8BC6          MOV EAX,ESI
00450526  |.  E8 9D7DFBFF   CALL 1.004082C8                          ;  
0045052B  |.  8B45 D4       MOV EAX,DWORD PTR SS:[EBP-2C]
0045052E  |.  BA 03000000   MOV EDX,3
00450533  |.  59            POP ECX                                  ;  CX=8
00450534  |.  E8 FF41FBFF   CALL 1.00404738                        ;这个 CALL 是用来出去上面结果的前两位数
00450539  |.  8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]            ;  结果



------------------------------------------------------------------------
这个 crackme 就是把用户名经计算后的结果,去除前两位,如 我的用户名 lgjxj 得到 -640106896
那么就去除了 -6 ,注册码就是 40106896,很简单的

很多新手都说看不懂算法,其实你要多留意寄存器的变化,基本的汇编语言很容易学的,我中学毕业就没读书了
现在一间五星酒店任西饼房主管,30多岁的人了,几个月前那起本汇编语言(王爽的那本),三个月就读完了,当然还不能完全理解,但我告诉大家,破解不需要全部的汇编语言,全会当然好
以前也自学过 C 语言,相信没有什么东西是学不会的,只是没那些大虾厉害,写教程比破解这个 Crackme还累
------------------------------------------------------------------------
【版权声明】随意转载,收藏 ,请注明出处

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-8-12 00:25:55 | 显示全部楼层
斑竹不要笑我了
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-2-2 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-8-12 16:27:37 | 显示全部楼层
    偶是新手,谢谢楼主的文章!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-12 17:52:33 | 显示全部楼层
    为何不结合静态分析,我是在00450374下的断。。。。

    不过你的文章让我学习了万能断点,不错~~:victory:

    用户名:vxin

    堆栈 ss:[0012F3C0]=00D859E0, (ASCII "881490687")
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2006-8-12 18:10:24 | 显示全部楼层

    静态分析

    我习惯了,动态追,很小只用静态分析,所以连 IDA 都不会用:$:$
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-25 23:49:59 | 显示全部楼层
    文章没有平时看破文时闷哦,写得挺生动的
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2016-6-4 16:11
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2006-8-26 00:56:30 | 显示全部楼层
    值得认真学习~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-8-26 10:20:20 | 显示全部楼层
    学无止境,佩服楼主的学习精神!

    加精以示鼓励!咱们菜鸟向您学习啦!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-26 10:26:25 | 显示全部楼层
    自此知道了万能断点!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-8-26 12:52:15 | 显示全部楼层
    先标记下。。。。。。。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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