首页
社区
课程
招聘
[原创]我的第四个Cracker me 破文 入门练习 高手飘过
发表于: 2008-4-4 17:35 5694

[原创]我的第四个Cracker me 破文 入门练习 高手飘过

2008-4-4 17:35
5694
【文章标题】: 我的第四个Cracker me 破文
【文章作者】: kanghtta
【作者邮箱】: kanghtta@hotmail.com
【作者主页】: 1b7K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3E0S2L8X3N6Z5N6s2c8S2i4K6u0W2j5%4g2T1L8r3!0Y4i4K6u0W2j5$3^5`.
【作者QQ号】: 18381291
【软件名称】: echap516
【软件大小】: 169
【下载地址】: 自己搜索下载
【加壳方式】: 无
【编写语言】: Borland Delphi 2.0
【使用工具】: peid OllyICE
【操作平台】: windows XP
【软件介绍】: code 中
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
     大家好, 今天不知道清明节,清明时节雨纷纷。。。。。不过我这今天阳光不错。前两天看了点密码编码学的书,
  觉得很不错,过几天把我的读书心得写给大家分享,不过可能要一段时间后吧,凡事,遇速则不达,学问之事,
  在于细心,谨慎。
  大家都放假了吧,祝大家节日愉快,你怎么又来论坛泡了!我由于离家远,不能回家,只好玩玩破解来抵挡抵挡那股思乡之情了。
  嘿嘿。。今天练手的是看雪加密与解密的习题补充练习第6题,废话不说了,总是改不了这个习惯!jmp 正文
  
   正文:
   还是老套路,运行程序,界面出来了,嘿嘿,随便输入几个字符看看,这里有两个编辑框。我输入的是:
  Enter the first serial here : Cracker  Enter the second serial here: kanghtta
  然后点击:text 按钮,没反应,字串查找看来是不可能的拉。也对嘛,要是随便一个程序你都用字串下断,
  那对另外的下断方法就不能很好的掌握了! 程序上面有串文本,英文的,
  作者的目的主要想让我们用Win32DASM静态分析的,大意是不让使用调试器,哪怕是win32Dasm的也不行,
  不过我的重点在代码的算法分析,而不是调试,好了,接下来用Peid 收集信息。 收集好信息后OD载入。
  
  在反汇编窗口中:Ctrl+ N  打开名称察看窗口,也可以用   查找->当前模块中的名称 (标签)来打开这一窗口;
  名称很多哦;不过不用怕,我们的目标并不多,往下拉拉看,看有没有Get XXXXX的函数,你输入的文本,
  程序要获取的话肯定要用获取文本的函数。
  嘿嘿,,,,   找到一个。  GetDlgItemText 在拉拉看 又有一个,GetWindowTextA  先不管它,
  右键-〉在每个参考上设置断点  后, F9 运行程序 , 工具栏: 查看-〉断点 两个断点,分别是:
  GetDlgItemText 和 GetWindowTextA  ,接下来我们在文本框中输入:
  Enter the first serial here : Cracker  Enter the second serial here: kanghtta
   点击:TEXT 按钮。 我们什么都没断下来。(是我把它想得太难,还是它本来就简单)
  在那个断点处双击 来到反汇编处,我们看到两个程序位于操作系统的领空。 到此为止,我还是什么信息都没。
  
    那还是回头看看字串参考吧 ! 因为我又看了一遍程序文本框的内容/
  Greetings
  问候
  
  this is the second CrackMe I wrote for you to crack in W32Dasm (or any other
  disassembler). This means you aren't allowed to use a debugger (not even the
  W32Dasm debugger). This CrackMe is coded in a way that it can be cracked
  by looking at the dead listing.
  译文:这是我为你写的在W32Dasm中破解的第二个CrackeME(或者是其它的反汇编程序)。这意味着你并不允许使用调试器,
  (甚至不能用用win32Dasm的调试器)这个CrackeME只需要看看死的代码清单就能被破解 。
  
   看到这我就明白我犯的是什么错误了,下面这段CCDebuger写的:
*******************************************

  先说一下一般软件破解的流程:拿到一个软件先别接着马上用 OllyDBG 调试,先运行一下,有帮助文档的最好先看一下帮助,
  熟悉一下软件的使用方法,再看看注册的方式。如果是序列号方式可以先输个假的来试一下,看看有什么反应,也给我们破解留下一些有用的线索。
  如果没有输入注册码的地方,要考虑一下是不是读取注册表或 Key 文件(一般称 keyfile,就是程序读取一个文件中的内容来判断是否注册),这些可以用其它工具来辅助分析。
  如果这些都不是,原程序只是一个功能不全的试用版,那要注册为正式版本就要自己来写代码完善了。
******************************************
看看我犯的错误,就是在破解前对信息收集不充分,全面.
  犯了一个很低级的错误,信息收集不充分,只知道Peid ,英文就随便瞟一眼,就过了,结果我做了半天无用功。
  
  好了,重新来过,我们并不需要像作者写的那样用Win32Dasm,因为,OllyICE同样具备静态分析的功能;
  
  开始吧!我已经走了很长的一段弯路了。汉,(清明是不是不适合写破文阿,,哎。。 )
  
  Ctrl+ F2  重新载入  在分汇编窗口中 右键: 查找 -〉 所有参考文本字串 
  你一开始看到的就是这几个:
  
  ASCII  "Delphi"
  ASCII "Well done"
  ASCII  " Now Write a Tut "  
  
   我们再向上拉拉看,基本是应用程序用的 EDIT Button之类; 我们在NowWrite a Tut 处右键,反汇编窗口中跟随
   代码如下:
  00421D98  /.  55            push    ebp
  00421D99  |.  8BEC          mov     ebp, esp   堆栈初始化 
  00421D9B  |.  6A 00         push    0
  00421D9D  |.  53            push    ebx
  00421D9E  |.  56            push    esi
  00421D9F  |.  57            push    edi       堆栈保存
  00421DA0  |.  8BD8          mov     ebx, eax
  00421DA2  |.  33C0          xor     eax, eax     清0
  00421DA4  |.  55            push    ebp
  00421DA5  |.  68 091F4200   push    00421F09
  00421DAA  |.  64:FF30       push    dword ptr fs:[eax]  
  00421DAD  |.  64:8920       mov     dword ptr fs:[eax], esp
  00421DB0  |.  8D55 FC       lea     edx, dword ptr [ebp-4]         
  00421DB3  |.  8B83 B0010000 mov     eax, dword ptr [ebx+1B0]
  00421DB9  |.  E8 9AFAFEFF   call    00411858
  00421DBE  |.  8B45 FC       mov     eax, dword ptr [ebp-4]       
  00421DC1  |.  BA 201F4200   mov     edx, 00421F20                    ;  ASCII "Delphi"
  00421DC6  |.  E8 A916FEFF   call    00403474
  00421DCB  |.  0F85 22010000 jnz     00421EF3            在OD中鼠标点一下,留意地址00421EF3
  00421DD1  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421DD4  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421DDA  |.  E8 79FAFEFF   call    00411858
  00421DDF  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421DE2  |.  E8 4117FEFF   call    00403528
  00421DE7  |.  E8 9437FEFF   call    00405580             
  00421DEC  |.  83F8 09       cmp     eax, 9              上一次调用的函数和9比较 ,不等就跳(跳楼哦︿ _ ︿ )
  00421DEF  |.  0F85 FE000000 jnz     00421EF3              在OD中鼠标点一下,留意地址00421EF3
  00421DF5  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421DF8  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421DFE  |.  E8 55FAFEFF   call    00411858
  00421E03  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421E06  |.  8038 48       cmp     byte ptr [eax], 48            
  00421E09  |.  0F85 E4000000 jnz     00421EF3                                不等则跳,地址:00421EF3
  00421E0F  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421E12  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421E18  |.  E8 3BFAFEFF   call    00411858
  00421E1D  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421E20  |.  8078 01 65    cmp     byte ptr [eax+1], 65
  00421E24  |.  0F85 C9000000 jnz     00421EF3                   不等则跳,地址:00421EF3
  00421E2A  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421E2D  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421E33  |.  E8 20FAFEFF   call    00411858
  00421E38  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421E3B  |.  8078 02 6C    cmp     byte ptr [eax+2], 6C
  00421E3F  |.  0F85 AE000000 jnz     00421EF3               不等则跳,地址:00421EF3
  00421E45  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421E48  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421E4E  |.  E8 05FAFEFF   call    00411858
  00421E53  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421E56  |.  8078 03 6C    cmp     byte ptr [eax+3], 6C
  00421E5A  |.  0F85 93000000 jnz     00421EF3               不等则跳,地址:00421EF3
  00421E60  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421E63  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421E69  |.  E8 EAF9FEFF   call    00411858
  00421E6E  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421E71  |.  8078 04 66    cmp     byte ptr [eax+4], 66
  00421E75  |.  75 7C         jnz     short 00421EF3           不等则跳,地址:00421EF3
  00421E77  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421E7A  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421E80  |.  E8 D3F9FEFF   call    00411858
  00421E85  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421E88  |.  8078 05 6F    cmp     byte ptr [eax+5], 6F
  00421E8C  |.  75 65         jnz     short 00421EF3              不等则跳,地址:00421EF3
  00421E8E  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421E91  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421E97  |.  E8 BCF9FEFF   call    00411858
  00421E9C  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421E9F  |.  8078 06 72    cmp     byte ptr [eax+6], 72
  00421EA3  |.  75 4E         jnz     short 00421EF3            不等则跳,地址:00421EF3
  00421EA5  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421EA8  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421EAE  |.  E8 A5F9FEFF   call    00411858
  00421EB3  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00421EB6  |.  8078 07 67    cmp     byte ptr [eax+7], 67          不等则跳,地址:00421EF3
  00421EBA  |.  75 37         jnz     short 00421EF3
  00421EBC  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
  00421EBF  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421EC5  |.  E8 8EF9FEFF   call    00411858
  00421ECA  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  
  00421ECD  |.  8078 08 65    cmp     byte ptr [eax+8], 65
  00421ED1  |.  75 20         jnz     short 00421EF3           不等则跳,地址:00421EF3
  00421ED3  |.  BA 301F4200   mov     edx, 00421F30                    ;  ASCII "Well done"
  00421ED8  |.  8B83 B0010000 mov     eax, dword ptr [ebx+1B0]
  00421EDE  |.  E8 A5F9FEFF   call    00411888
  00421EE3  |.  BA 441F4200   mov     edx, 00421F44                    ;  ASCII "Now write a tut"
  00421EE8  |.  8B83 B4010000 mov     eax, dword ptr [ebx+1B4]
  00421EEE  |.  E8 95F9FEFF   call    00411888
  00421EF3  |>  33C0          xor     eax, eax
  00421EF5  |.  5A            pop     edx
  00421EF6  |.  59            pop     ecx
  00421EF7  |.  59            pop     ecx
  00421EF8  |.  64:8910       mov     dword ptr fs:[eax], edx
  00421EFB  |.  68 101F4200   push    00421F10
  00421F00  |>  8D45 FC       lea     eax, dword ptr [ebp-4]
  00421F03  |.  E8 E812FEFF   call    004031F0
  00421F08  \.  C3            retn
  
  
  由于有两个输入框:
  
  00421DC1  |.  BA 201F4200   mov     edx, 00421F20                    ;  ASCII "Delphi"
  00421DC6  |.  E8 A916FEFF   call    00403474
  00421DCB  |.  0F85 22010000 jnz     00421EF3         这个跳转地址和后面比较不等后跳转的地址一样;
  初步估计:第一个输入应该是: Delphi
  统计一下jnz比较不等跳的字符,为:48 65 6C 6C 66 6F 72 67 65 
        总 字符数 9 ;
  而上面代码有这几句 
  00421DEC  |.  83F8 09       cmp     eax, 9
  00421DEF  |.  0F85 FE000000 jnz     00421EF3
   
   所以初步判定第二个输入为: 48 65 6C 6C 66 6F 72 67 65
                  对应的字符: H  e  l  l  f  o   r  g   e   
                   字符串: Hellforge
  
  现在来看看我们的猜测对不对: 分别输入上面字符串
  
   最后在编辑框中看到了吧:  第一个: well done 第二个: Now write a tut
  
   怪不得没对话框出来哦!  
  
   好了,到此也就弄玩了吧!注册码到是找出来,明码比较,难度不大! 
  
  
  最后 祝看雪的朋友们,节日愉快, 也希望我稳步前进,  forge  ; 
  
   
  
  
  
  
--------------------------------------------------------------------------------
【经验总结】
      我应该在把 CCDebuger写的这段话好好的再多看几遍:
  先说一下一般软件破解的流程:拿到一个软件先别接着马上用 OllyDBG 调试,先运行一下,有帮助文档的最好先看一下帮
  助,
  熟悉一下软件的使用方法,再看看注册的方式。如果是序列号方式可以先输个假的来试一下,看看有什么反应,也给我们破
  解留下一些有用的线索。
  如果没有输入注册码的地方,要考虑一下是不是读取注册表或 Key 文件(一般称 keyfile,就是程序读取一个文件中的内
  容来判断是否注册),这些可以用其它工具来辅助分析。
  如果这些都不是,原程序只是一个功能不全的试用版,那要注册为正式版本就要自己来写代码完善了。
  
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年04月04日 下午 05:33:32

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错。。赞一个
2008-4-4 18:14
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
3
很勤奋,很认真,支持
2008-4-4 21:27
0
雪    币: 321
活跃值: (275)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
4
学习作者的心得体会.
2008-4-4 22:40
0
雪    币: 2256
活跃值: (941)
能力值: (RANK:2210 )
在线值:
发帖
回帖
粉丝
5
呵呵
再接再厉
争取加精
2008-4-4 23:26
0
雪    币: 420
活跃值: (77)
能力值: ( LV13,RANK:500 )
在线值:
发帖
回帖
粉丝
6
感动啊!  
有你们的鼓励,我一定努力! 嘿嘿..祝大家节日愉快!

吼吼...偶要

再接再厉
争取加精
2008-4-5 12:57
0
游客
登录 | 注册 方可回帖
返回