飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5081|回复: 8

[原创] 第一篇爆破手记,与大家分享下子

[复制链接]

该用户从未签到

发表于 2007-12-23 13:19:54 | 显示全部楼层 |阅读模式
【破文标题】第一篇爆破手记,与大家分享下子
【破文作者】gtboy
【作者邮箱】[email protected]
【作者主页】无,我很懒也很菜
破解工具】peid0.94,flyOD
【破解平台】WinXp
【软件名称】DaNiEl-RJ.1
【软件大小】216 KB
【原版下载】看雪的crackme2007合集 序列号里面
【保护方式】无壳,序列号
【软件简介】一个很简单的crackme
【破解声明】
------------------------------------------------------------------------
【破解过程】第一篇爆破手记,与大家分享下子
没有什么技术含量的,看了n多视频教学后信心倍增,就从看雪的crackme2007里面拉出一只来
人品不错,很简单的一个哦,声明下子,我没有提前看分析,就保存在本地了
peid查壳,没有加,那就直接od呗
跑了下,点下菜单的about才能看到破解的,也没有心情去修改了,直接输入
用户名:gtboy
注册码:1234567890
提示“no no,try again",用插件查找字符串,不知为什么,开始查的时候插件报错,od也就关了,不知是不是因为加了空格的缘故,再开下od,找到后就定位到地方
把关键的东西贴出来
0042D4CD  |.  E8 8EC9FEFF   CALL DaNiEl-R.00419E60                   ;  取用户名
0042D4D2  |.  837D F8 00    CMP DWORD PTR SS:[EBP-8],0               ;  与0比较,确认是否输入
0042D4D6  |.  74 14         JE SHORT DaNiEl-R.0042D4EC
0042D4D8  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
0042D4DB  |.  8B86 E0010000 MOV EAX,DWORD PTR DS:[ESI+1E0]
0042D4E1  |.  E8 7AC9FEFF   CALL DaNiEl-R.00419E60                   ;  取假码
0042D4E6  |.  837D F4 00    CMP DWORD PTR SS:[EBP-C],0               ;  确认输入了注册码
0042D4EA  |.  75 0F         JNZ SHORT DaNiEl-R.0042D4FB              ;  啥都不输就弹出下面的东东,想爆破的彻底就把这里也改了吧
0042D4EC  |>  B8 C8D54200   MOV EAX,DaNiEl-R.0042D5C8                ;  ASCII "One of the fields is empty!"
0042D4F1  |.  E8 02FCFFFF   CALL DaNiEl-R.0042D0F8
0042D4F6  |.  E9 8C000000   JMP DaNiEl-R.0042D587
0042D4FB  |>  BB 01000000   MOV EBX,1
0042D500  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
0042D503  |.  8B86 DC010000 MOV EAX,DWORD PTR DS:[ESI+1DC]
0042D509  |.  E8 52C9FEFF   CALL DaNiEl-R.00419E60
0042D50E  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  eax为用户名
0042D511  |.  E8 AA62FDFF   CALL DaNiEl-R.004037C0                   ;  取用户名长度
0042D516  |.  8BF8          MOV EDI,EAX
0042D518  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]             ;  用户名长度
0042D51B  |.  E8 2460FDFF   CALL DaNiEl-R.00403544
0042D520  |.  3BFB          CMP EDI,EBX                              ;  用户名必须大于一
0042D522  |.  7C 32         JL SHORT DaNiEl-R.0042D556
0042D524  |>  8D55 F8       /LEA EDX,DWORD PTR SS:[EBP-8]            ;  该程序段把用户名依次取出之后运算,我很菜,也没有怎么跟算法
0042D527  |.  8B86 DC010000 |MOV EAX,DWORD PTR DS:[ESI+1DC]
0042D52D  |.  E8 2EC9FEFF   |CALL DaNiEl-R.00419E60
0042D532  |.  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]            ;  eax为用户名
0042D535  |.  33D2          |XOR EDX,EDX
0042D537  |.  8A5418 FF     |MOV DL,BYTE PTR DS:[EAX+EBX-1]
0042D53B  |.  83C2 05       |ADD EDX,5                               ;  把ascii值加五
0042D53E  |.  8D45 F0       |LEA EAX,DWORD PTR SS:[EBP-10]
0042D541  |.  E8 A261FDFF   |CALL DaNiEl-R.004036E8
0042D546  |.  8B55 F0       |MOV EDX,DWORD PTR SS:[EBP-10]
0042D549  |.  8D45 FC       |LEA EAX,DWORD PTR SS:[EBP-4]
0042D54C  |.  E8 7762FDFF   |CALL DaNiEl-R.004037C8
0042D551  |.  43            |INC EBX
0042D552  |.  3BFB          |CMP EDI,EBX                             ;  是否算完
0042D554  |.^ 7D CE         \JGE SHORT DaNiEl-R.0042D524             ;  没有就继续下一位
0042D556  |>  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
0042D559  |.  8B86 E0010000 MOV EAX,DWORD PTR DS:[ESI+1E0]
0042D55F  |.  E8 FCC8FEFF   CALL DaNiEl-R.00419E60
0042D564  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  把假码放入eax
0042D567  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]             ;  edx中就是真码,呵呵,明码比较啊
0042D56A      E8 6163FDFF   CALL DaNiEl-R.004038D0
0042D56F      75 0C         JNZ SHORT DaNiEl-R.0042D57D              ;  爆破的话就直接nop掉吧,呵呵
0042D571      B8 ECD54200   MOV EAX,DaNiEl-R.0042D5EC                ;  Congratz cracker! hehehe
0042D576      E8 7DFBFFFF   CALL DaNiEl-R.0042D0F8
0042D57B      EB 0A         JMP SHORT DaNiEl-R.0042D587
0042D57D  |>  B8 10D64200   MOV EAX,DaNiEl-R.0042D610                ;  ASCII "No no no! :( Try again!"
0042D582  |.  E8 71FBFFFF   CALL DaNiEl-R.0042D0F8

查看edx中的值为lygt~,就是我的注册码啦。前面还爆破了下一只老虎的一个crackme,汇编不怎么样,开始还奇怪,nop了2个改了一个跳转才注册成功,后来一看别人的分析,原来是用户名和注册码都要比11多,比24少。

目前自己还只会爆破,像我一样的菜鸟也练习下子吧,看雪的里面的分析比我写的要好,不过这是自己第一次比较完整的分析,就斗胆贴出来了,还望大家不要仍西红柿啊,(*^__^*) 嘻嘻……

版主大哥对不起啊,刚按错键了,不小心按成回车了,等下我下个编辑工具,弄好了会再编辑下的,还望版主见谅
------------------------------------------------------------------------
【破解总结】很简单的一个crackme,适合增加我们的信心,呵呵
要进一步的学习好汇编,多练习
------------------------------------------------------------------------
【版权声明】支持pyg,呵呵,再次向版主道歉,局域网不知谁中了arp病毒,网都快瘫了,刚弄好

[ 本帖最后由 gtboy 于 2007-12-23 14:46 编辑 ]

DaNiEl-RJ.1.rar

96.12 KB, 下载次数: 4, 下载积分: 飘云币 -2 枚

原crackme和自己爆破的

评分

参与人数 1飘云币 +20 收起 理由
tianxj + 20 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-12-23 13:26:58 | 显示全部楼层
    按照破文的形式发布可以吗??
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-23 17:13:08 | 显示全部楼层
    支持
    我找了这个很久啦
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-24 11:02:27 | 显示全部楼层
    支持多多分享..
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-12-24 11:33:20 | 显示全部楼层
    【破文标题】DaNiEl-RJ.1破文
    【破文作者】tianxj
    【作者主页】无
    【破解工具】PEiD,OD
    【破解平台】Windows XP
    【软件名称】DaNiEl-RJ.1
    【原版下载】见第1楼
    【保护方式】注册码
    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    ------------------------------------------------------------------------
    【破解内容】
    ------------------------------------------------------------------------
    **********************************************************************
    一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
    **********************************************************************
    二、用PEiD对这个软件查壳,为 Borland Delphi 3.0
    **********************************************************************
    三、运行OD,打开DaNiEl-RJ.1,右键—超级字串参考—查找ASCII.
    找到“ZZZZZZ”了,双击,来到
    0042D4A8  /.  55            PUSH EBP
    0042D4A9  |.  8BEC          MOV EBP,ESP
    0042D4AB  |.  33C9          XOR ECX,ECX
    0042D4AD  |.  51            PUSH ECX
    0042D4AE  |.  51            PUSH ECX
    0042D4AF  |.  51            PUSH ECX
    0042D4B0  |.  51            PUSH ECX
    0042D4B1  |.  53            PUSH EBX
    0042D4B2  |.  56            PUSH ESI
    0042D4B3  |.  57            PUSH EDI
    0042D4B4  |.  8BF0          MOV ESI,EAX
    0042D4B6  |.  33C0          XOR EAX,EAX
    0042D4B8  |.  55            PUSH EBP
    0042D4B9  |.  68 B2D54200   PUSH DaNiEl-R.0042D5B2
    0042D4BE  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
    0042D4C1  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
    0042D4C4  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
    0042D4C7  |.  8B86 DC010000 MOV EAX,DWORD PTR DS:[ESI+1DC]
    0042D4CD  |.  E8 8EC9FEFF   CALL DaNiEl-R.00419E60                   ;  //将用户名长度送入EAX
    0042D4D2  |.  837D F8 00    CMP DWORD PTR SS:[EBP-8],0               ;  //将用户名与0比较
    0042D4D6  |.  74 14         JE SHORT DaNiEl-R.0042D4EC               ;  //若相等则跳
    0042D4D8  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
    0042D4DB  |.  8B86 E0010000 MOV EAX,DWORD PTR DS:[ESI+1E0]
    0042D4E1  |.  E8 7AC9FEFF   CALL DaNiEl-R.00419E60                   ;  //将注册码长度送入EAX
    0042D4E6  |.  837D F4 00    CMP DWORD PTR SS:[EBP-C],0               ;  //将注册码与0比较
    0042D4EA  |.  75 0F         JNZ SHORT DaNiEl-R.0042D4FB              ;  //若不相等则跳
    0042D4EC  |>  B8 C8D54200   MOV EAX,DaNiEl-R.0042D5C8                ;  one of the fields is empty!
    0042D4F1  |.  E8 02FCFFFF   CALL DaNiEl-R.0042D0F8
    0042D4F6  |.  E9 8C000000   JMP DaNiEl-R.0042D587
    0042D4FB  |>  BB 01000000   MOV EBX,1                                ;  //将1送入EBX
    0042D500  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
    0042D503  |.  8B86 DC010000 MOV EAX,DWORD PTR DS:[ESI+1DC]
    0042D509  |.  E8 52C9FEFF   CALL DaNiEl-R.00419E60                   ;  //将用户名长度送入EAX
    0042D50E  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //将用户名送入EAX
    0042D511  |.  E8 AA62FDFF   CALL DaNiEl-R.004037C0                   ;  //将用户名长度送入EAX
    0042D516  |.  8BF8          MOV EDI,EAX                              ;  //将EAX送入EDI
    0042D518  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    0042D51B  |.  E8 2460FDFF   CALL DaNiEl-R.00403544                   ;  //将EDX清零
    0042D520  |.  3BFB          CMP EDI,EBX                              ;  //将EDI与EBX比较
    0042D522  |.  7C 32         JL SHORT DaNiEl-R.0042D556               ;  //若小于则跳
    0042D524  |>  8D55 F8       /LEA EDX,DWORD PTR SS:[EBP-8]
    0042D527  |.  8B86 DC010000 |MOV EAX,DWORD PTR DS:[ESI+1DC]
    0042D52D  |.  E8 2EC9FEFF   |CALL DaNiEl-R.00419E60                  ;  //将用户名长度送入EAX
    0042D532  |.  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]            ;  //将用户名送入EAX
    0042D535  |.  33D2          |XOR EDX,EDX                             ;  //将EDX清零
    0042D537  |.  8A5418 FF     |MOV DL,BYTE PTR DS:[EAX+EBX-1]          ;  //依次将用户名ASCII码16进制送入DL
    0042D53B  |.  83C2 05       |ADD EDX,5                               ;  //EDX=EDX+5
    0042D53E  |.  8D45 F0       |LEA EAX,DWORD PTR SS:[EBP-10]
    0042D541  |.  E8 A261FDFF   |CALL DaNiEl-R.004036E8
    0042D546  |.  8B55 F0       |MOV EDX,DWORD PTR SS:[EBP-10]
    0042D549  |.  8D45 FC       |LEA EAX,DWORD PTR SS:[EBP-4]
    0042D54C  |.  E8 7762FDFF   |CALL DaNiEl-R.004037C8
    0042D551  |.  43            |INC EBX                                 ;  //EBX=EBX+1
    0042D552  |.  3BFB          |CMP EDI,EBX                             ;  //将EDI与EBX比较
    0042D554  |.^ 7D CE         \JGE SHORT DaNiEl-R.0042D524             ;  //若大于等于则跳
    0042D556  |>  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
    0042D559  |.  8B86 E0010000 MOV EAX,DWORD PTR DS:[ESI+1E0]
    0042D55F  |.  E8 FCC8FEFF   CALL DaNiEl-R.00419E60                   ;  //将注册码长度送入EAX
    0042D564  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //将注册码送入EAX
    0042D567  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]             ;  //将真码送入EDX
    0042D56A  |.  E8 6163FDFF   CALL DaNiEl-R.004038D0                   ;  //比较CALL,EAX为假码,EDX为真码
    0042D56F  |.  75 0C         JNZ SHORT DaNiEl-R.0042D57D              ;  //关键跳转
    0042D571  |.  B8 ECD54200   MOV EAX,DaNiEl-R.0042D5EC                ;  congratz cracker! hehehe
    0042D576  |.  E8 7DFBFFFF   CALL DaNiEl-R.0042D0F8
    0042D57B  |.  EB 0A         JMP SHORT DaNiEl-R.0042D587
    0042D57D  |>  B8 10D64200   MOV EAX,DaNiEl-R.0042D610                ;  no no no! :( try again!
    0042D582  |.  E8 71FBFFFF   CALL DaNiEl-R.0042D0F8
    0042D587  |>  33C0          XOR EAX,EAX
    0042D589  |.  5A            POP EDX
    0042D58A  |.  59            POP ECX
    0042D58B  |.  59            POP ECX
    0042D58C  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
    0042D58F  |.  68 B9D54200   PUSH DaNiEl-R.0042D5B9
    0042D594  |>  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
    0042D597  |.  E8 A85FFDFF   CALL DaNiEl-R.00403544
    0042D59C  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
    0042D59F  |.  BA 02000000   MOV EDX,2
    0042D5A4  |.  E8 BF5FFDFF   CALL DaNiEl-R.00403568
    0042D5A9  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    0042D5AC  |.  E8 935FFDFF   CALL DaNiEl-R.00403544
    0042D5B1  \.  C3            RETN
    0042D5B2   .^ E9 315AFDFF   JMP DaNiEl-R.00402FE8
    0042D5B7   .^ EB DB         JMP SHORT DaNiEl-R.0042D594
    0042D5B9   .  5F            POP EDI
    0042D5BA   .  5E            POP ESI
    0042D5BB   .  5B            POP EBX
    0042D5BC   .  8BE5          MOV ESP,EBP
    0042D5BE   .  5D            POP EBP
    0042D5BF   .  C3            RETN
    **********************************************************************  
    【破解总结】
    ----------------------------------------------------------------------
    【算法总结】
    依次将用户名转ASCII码16进制后加5再转成字符
    ----------------------------------------------------------------------
    【算法注册机】
    VB代码
    Private Sub Command1_Click()
    If Text1.Text = "" Then
       Text2.Text = "输入有误,请重新输入!"
    Else
          For i = 1 To Len(Text1.Text)
           a = a & Chr(Asc(Mid(Text1.Text, i, 1)) + 5)
        Next i
       Text2.Text = a
    End If
    End Sub
    ----------------------------------------------------------------------
    【内存注册机】
    中断地址 42D56A
    中断次数 1
    第一字节 E8
    指令长度 5
    内存方式-寄存器-EDX
    ----------------------------------------------------------------------
    【爆破地址】
    0042D56F  |.  75 0C         JNZ SHORT DaNiEl-R.0042D57D
    将JNZ改为JE
    ----------------------------------------------------------------------
    【注册信息】
    用户名:abcdef
    注册码:fghijk
    -----------------------------------------------------------------------
    希望以后可以在猫老大和PYG 5.4Cracker学习小组的帮助下进一步提高自己。
    感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
    -----------------------------------------------------------------------
    【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-12-24 11:34:32 | 显示全部楼层
    呵呵,比较简单
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2007-12-24 16:20:58 | 显示全部楼层
    还是版主的功力深厚啊~~~~~~~~~~~~佩服!!!!
    内存注册机和注册机源码都给了出来了,才发现自己很猪猪的,这个算法竟然没有看懂啊~~~~~
    当时激动的只记得爆破了
    继续学习中,感谢版主的帮助,学习了~~~~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2007-12-24 16:23:48 | 显示全部楼层
    原帖由 gtboy 于 2007-12-24 16:20 发表
    还是版主的功力深厚啊~~~~~~~~~~~~佩服!!!!
    内存注册机和注册机源码都给了出来了,才发现自己很猪猪的,这个算法竟然没有看懂啊~~~~~
    当时激动的只记得爆破了
    继续学习中,感谢版主的帮助,学习了~~~~~


    都是一点一点学起来的,支持破解学习:loveliness:
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-11-17 00:35
  • 签到天数: 418 天

    [LV.9]以坛为家II

    发表于 2007-12-24 16:35:36 | 显示全部楼层
    谢谢分享啰!!!有些心得!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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