欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

CrackMe分析2.11.12.28【第一关】

程序员文章站 2022-09-02 21:42:51
【文章标题】: CrackMe分析2.11.12.28【第一关】 【文章作者】: HcyRcer 【作者邮箱】: 421458119@qq.com...

【文章标题】: CrackMe分析2.11.12.28【第一关】
【文章作者】: HcyRcer
【作者邮箱】: 421458119@qq.com
【作者主页】: http://hi.baidu.com/kao4ni/home
【作者QQ号】: 421458119
【编写语言】: Borland Delphi 4.0 - 5.0
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  此 CrackMe 共有4 关!!!暂时只解决第一关,也就是最简单的!!
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


CrackMe分析2.11.12.28【第一关】
 


  PEID查壳:Borland Delphi 4.0 - 5.0
  既然是 Delphil写的,那我们就按常理来, 用DEDE查 按钮过程!!
  DEDE打开后,来到【过程】 看到 很多很多过程!!到底是哪个才是我们要找的 按钮过程呢?
  看到了有个 SpeedButton1Click 0044C3A4 事件 !!里面有个 Button1字串 ,并且 我们看到 CrackMe  的第一个按钮!
  估计就是他了 !把这个地址复制下来!!!
  CrackMe分析2.11.12.28【第一关】
  打开OD,运行程序后,CTRL + G 来到 0044C3A4 !!然后 F2 ! 对该地址下断!!
  输入 12345 点击 Check后!! OD成功断在 0044C3A4 地址!!说明我们的 按钮过程找对了!!
  CrackMe分析2.11.12.28【第一关】
  单步然后 F8开始分析 按钮过程!跟踪了 十几次,
  来到了 第二个跳转
  0044C3D5    call CrackMe_.00403A74
  0044C3DA    cmp  eax,0C
  0044C3DD    jnz  CrackMe_.0044C536
  


CrackMe分析2.11.12.28【第一关】

 

  
  发现跳转已经实现,我们当跳了之后!!发现程序就是提示错误 !!我们可以知道 此跳转 是判断 正确的!!
  我们 就进入上面 那个判断正确的 CALL里看看 (0044C3D5    call CrackMe_.00403A74)!刚进入CALL时,
  发现 右侧的 EAX寄存器显示的 正是我们输入的 12345 
  发现这个CALL 只有 短短4行! 
  ~~~~~~~~~~~~~~~~~~~~~~~~~~0044C3D5    call CrackMe_.00403A74~~~~~~~~~~~~~~~~~~~~
  00403A74    test eax,eax                   //EAX此时显示 12345
  00403A76    je   short CrackMe_.00403A7B    判断是否输入
  00403A78    mov  eax,dword ptr ds:[eax-4]  //EAX被 赋值为 输入的个数(5个)
  00403A7B    retn
  CrackMe分析2.11.12.28【第一关】


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  
  再返回到上面看,可以推断 
  然后看到下面 一大片 一模一样的东西 ,我们开始 F8 单步跟 
  0044C3D5   |.  E>call CrackMe_.00403A74   //EAX被 赋值为 输入的个数(5个)
  0044C3DA   |.  8>cmp eax,0C               //判断个数是否为12位
  0044C3DD   |.  0>jnz CrackMe_.0044C536   
  0044C3E3   |.  8>lea edx,dword ptr ss:[ebp-4]  //开始1
  0044C3E6   |.  8>mov eax,dword ptr ds:[ebx+2E8]
  0044C3EC   |.  E>call CrackMe_.00425824
  0044C3F1   |.  8>mov eax,dword ptr ss:[ebp-4]
  0044C3F4   |.  8>cmp byte ptr ds:[eax],43
  0044C3F7   |.  0>jnz CrackMe_.0044C524          //结束1
  0044C3FD   |.  8>lea edx,dword ptr ss:[ebp-8]  //开始2
  0044C400   |.  8>mov eax,dword ptr ds:[ebx+2E8]
  0044C406   |.  E>call CrackMe_.00425824
  0044C40B   |.  8>mov eax,dword ptr ss:[ebp-8]
  0044C40E   |.  8>cmp byte ptr ds:[eax+3],6F
  0044C412   |.  0>jnz CrackMe_.0044C524        //结束2
  0044C418   |.  8>lea edx,dword ptr ss:[ebp-C]   //开始3
  0044C41B   |.  8>mov eax,dword ptr ds:[ebx+2E8]
  0044C421   |.  E>call CrackMe_.00425824
  0044C426   |.  8>mov eax,dword ptr ss:[ebp-C]
  0044C429   |.  8>cmp byte ptr ds:[eax+8],6F
  0044C42D   |.  0>jnz CrackMe_.0044C524           //结束3
  ............................等 很多 
  
  发现没到 类似 cmp byte ptr ds:[eax],43 !在OD右侧的寄存器中就会显示 EAX为我们输入的 12345! 而且
  每当 CMP之后 !会跟着一个 jnz CrackMe_.0044C524 都跳向了同一个地址  0044C524 
  观察发现  0044C524 显示 WRONG PASSWORD!!!

 

CrackMe分析2.11.12.28【第一关】

 


 我们可以知道 原来 由很多的 CMP .. 和 jnz CrackMe_.0044C524
  组成了 判断码的部分!!! 这个cmp byte ptr ds:[eax+常数],常数  
  的意思是 判断指定位 是否为指定值!!!如下
  0044C3D5   |.  E>call CrackMe_.00403A74   //EAX被 赋值为 输入的个数(5个)
  0044C3DA   |.  8>cmp eax,0C               //判断个数是否为12位
  0044C3DD   |.  0>jnz CrackMe_.0044C536   
  0044C3E3   |.  8>lea edx,dword ptr ss:[ebp-4]   
  0044C3E6   |.  8>mov eax,dword ptr ds:[ebx+2E8] 
  0044C3EC   |.  E>call CrackMe_.00425824
  0044C3F1   |.  8>mov eax,dword ptr ss:[ebp-4]
  0044C3F4   |.  8>cmp byte ptr ds:[eax],43    第一位是否为43 
  0044C3F7   |.  0>jnz CrackMe_.0044C524           
  0044C3FD   |.  8>lea edx,dword ptr ss:[ebp-8]   
  0044C400   |.  8>mov eax,dword ptr ds:[ebx+2E8]
  0044C406   |.  E>call CrackMe_.00425824
  0044C40B   |.  8>mov eax,dword ptr ss:[ebp-8]
  0044C40E   |.  8>cmp byte ptr ds:[eax+3],6F  第4位是否为6F 
  0044C412   |.  0>jnz CrackMe_.0044C524         
  0044C418   |.  8>lea edx,dword ptr ss:[ebp-C]   
  0044C41B   |.  8>mov eax,dword ptr ds:[ebx+2E8]
  0044C421   |.  E>call CrackMe_.00425824
  0044C426   |.  8>mov eax,dword ptr ss:[ebp-C]
  0044C429   |.  8>cmp byte ptr ds:[eax+8],6F  第9位是否为6F
  0044C42D   |.  0>jnz CrackMe_.0044C524           
  ....
  

CrackMe分析2.11.12.28【第一关】

 


  
  一直F8 跟,遇到跳就 不让它跳,直至成功!!
  
  
  
  
  
  
  发现没什么算法!!!就是把输入的 每位与 常量比对!!
  如下: 必须输入12位
  12位                    必须为
  1                        43  //第一位必须为43
  2                        6c  //第二位必须为6C
  3                        6E //第三位必须....
  4                        6F
  5                        20
  6                        69
  7                        67
  8                        75
  9                        6F
  10                        6E
  11                        52
  12                        6E
  ~~~~~~~~~~
  12位连起来 436C6E6F206967756F6E526E
  我们把他到我 我做的 字符串转换软件如下:
  
  CrackMe分析2.11.12.28【第一关】
  
  发现ASCII码为:Clno iguonRn
  我们打开软件 输入 Clno iguonRn !!点击注册,提示成功!!!
  到此为止 !破解成功!!

  
  
--------------------------------------------------------------------------------
【经验总结】
  没有算法!!
  注册死码为 12位,必须是:Clno iguonRn
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2011年12月28日 9:22:01

 

相关附件下载:http://up.2cto.com/2011/1229/20111229114910699.rar