中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 看雪学院专区 > CrackMe
适合新手学习的crackme
作者:佚名 时间:2006-12-15 10:45 出处:pediy.com 责编:月夜寒箫
              摘要:适合新手学习的crackme
【文章标题】: 适合新手学习的crackme
【文章作者】: coldpine
【软件名称】: crackme2.exe
【下载地址】: http://www.crackmes.de/users/mucki/crackme2/
【作者声明】: 失误之处敬请诸位大侠赐教!(最近学习seh感觉头有点大,找个简单的解解气:))
--------------------------------------------------------------------------------
【详细过程】
  直接运行,弹出对话框输入
  name:heminrui
  serial:123456789很容易找到下面这个地方
  004011BE  |.  57            PUSH    EDI
  004011BF  |.  56            PUSH    ESI
  004011C0  |.  53            PUSH    EBX
  004011C1  |>  6A 32         /PUSH    32                              ;
  004011C3  |.  68 84624000   |PUSH    crackme2.00406284               ; 
  004011C8  |.  6A 01         |PUSH    1                               ; 
  004011CA  |.  FF75 08       |PUSH    DWORD PTR SS:[EBP+8]            ; 
  004011CD  |.  E8 16020000   |CALL    <JMP.&user32.GetDlgItemTextA>   ; 取用户名函数   
  004011D2  |.  64:8B15 18000>|MOV     EDX, DWORD PTR FS:[18]
  004011D9  |.  8B52 30       |MOV     EDX, DWORD PTR DS:[EDX+30]
  004011DC  |.  0FB652 02     |MOVZX   EDX, BYTE PTR DS:[EDX+2]
  004011E0  |.  83F8 00       |CMP     EAX, 0
  004011E3  |.  7F 11         |JG      SHORT crackme2.004011F6
  004011E5  |.  68 D8604000   |PUSH    crackme2.004060D8               ; /Text = "nameless"
  004011EA  |.  6A 01         |PUSH    1                               ; |ControlID = 1
  004011EC  |.  FF75 08       |PUSH    DWORD PTR SS:[EBP+8]            ; |hWnd
  004011EF  |.  E8 0C020000   |CALL    <JMP.&user32.SetDlgItemTextA>   ; \SetDlgItemTextA
  004011F4  |.^ EB CB         \JMP     SHORT crackme2.004011C1
  004011F6  |>  8D35 84624000 LEA     ESI, DWORD PTR DS:[406284]       ;取name的地址到esi
  004011FC  |.  33C9          XOR     ECX, ECX             ;清空累加器
  004011FE  |>  0FBE06        /MOVSX   EAX, BYTE PTR DS:[ESI]          ;逐位取出name的字符ascii码值运算
  00401201  |.  8BD8          |MOV     EBX, EAX            ;放在ebx
  00401203  |.  2BF2          |SUB     ESI, EDX                        
  00401205  |.  C1E0 04       |SHL     EAX, 4             ;将每位ascii码值左移四位
  00401208  |.  C1EB 05       |SHR     EBX, 5                          ;将每位ascii码值右移五位
  0040120B  |.  33C3          |XOR     EAX, EBX            ;异或以上的两个结果
  0040120D  |.  83C0 26       |ADD     EAX, 26             ;以上的结果加26
  00401210  |.  33C1          |XOR     EAX, ECX                        ;先和累加器异或
  00401212  |.  03C8          |ADD     ECX, EAX            ;再累加到累加器上
  00401214  |.  46            |INC     ESI               ;将地址减一
  00401215  |.  803E 00       |CMP     BYTE PTR DS:[ESI], 0      ;取完了没有,没有的话,再继续取
  00401218  |.^ 75 E4         \JNZ     SHORT crackme2.004011FE     
  0040121A  |.  B8 EF0D0C00   MOV     EAX, 0C0DEF           
  0040121F  |.  2BC1          SUB     EAX, ECX                         ;用C0DEF减去累加器
  00401221  |.  0FAFC0        IMUL    EAX, EAX             ;将结果平方
  00401224  |.  50            PUSH    EAX                              ; /<%lX>
  00401225  |.  51            PUSH    ECX                              ; |<%lX>
  00401226  |.  68 E1604000   PUSH    crackme2.004060E1                ; |Format = "CM2-%lX-%lX"
  0040122B  |.  68 B6624000   PUSH    crackme2.004062B6                
  00401230  |.  E8 9B010000   CALL    <JMP.&user32.wsprintfA>          ;格式化函数
  00401235  |.  6A 4B         PUSH    4B                               ;
  00401237  |.  68 B1604000   PUSH    crackme2.004060B1                ; 
  0040123C  |.  6A 02         PUSH    2                                ; 
  0040123E  |.  FF75 08       PUSH    DWORD PTR SS:[EBP+8]             ; 
  00401241  |.  E8 A2010000   CALL    <JMP.&user32.GetDlgItemTextA>    ; 取序列号
  00401246  |.  68 B1604000   PUSH    crackme2.004060B1                ; 用户输入的序列号
  0040124B  |.  68 B6624000   PUSH    crackme2.004062B6                ; 用户名计算出来的序列号
  00401250  |.  E8 DB010000   CALL    <JMP.&kernel32.lstrcmpA>         ; 比较序列号,决定跳向
  00401255  |.  75 16         JNZ     SHORT crackme2.0040126D     ;
  00401257  |.  6A 00         PUSH    0                                ; /Style = MB_OK|MB_APPLMODAL
  00401259  |.  68 00604000   PUSH    crackme2.00406000                ; |Title = "crackme2"
  0040125E  |.  68 3D604000   PUSH    crackme2.0040603D                ; |Text = "Valid serial - now write a keygen!"
  00401263  |.  FF75 08       PUSH    DWORD PTR SS:[EBP+8]             ; |hOwner
  00401266  |.  E8 89010000   CALL    <JMP.&user32.MessageBoxA>        ; \MessageBoxA
  0040126B  |.  EB 14         JMP     SHORT crackme2.00401281
  0040126D  |>  6A 10         PUSH    10                               ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
  0040126F  |.  68 00604000   PUSH    crackme2.00406000                ; |Title = "crackme2"
  00401274  |.  68 60604000   PUSH    crackme2.00406060                ; |Text = "Wrong serial - try again!"
  00401279  |.  FF75 08       PUSH    DWORD PTR SS:[EBP+8]             ; |hOwner
  0040127C  |.  E8 73010000   CALL    <JMP.&user32.MessageBoxA>        ; \MessageBoxA
  00401281  |>  5B            POP     EBX
  00401282  |.  5E            POP     ESI
  00401283  |.  5F            POP     EDI
  00401284  |.  C9            LEAVE
  00401285  \.  C2 0400       RET     4
  
  
--------------------------------------------------------------------------------
【经验总结】
  算法总结:将用户名每位取出ascii码值计算,设每位为x,C为ecx的值
              
       A=shl(x)
            B=shr(x)
       A=A XOR B
            A=A+26
            A=A XOR C
            C=C+A
            然后在用户名长度之内进行循环计算
       A=0C0DEF
            A=A-C
            A=A*A
            最后将CM2,A,C连解成注册码,一组可行的注册码:
       name:heminrui
            serial:CM2-11739-33FA4964
           稍微将以上的过程改改就可以写成注册机了,因为时间关系,以后再补上 ,花了半个多小时,感觉比较简单.     
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年10月06日 9:47:01
所上传文件
crackme2.zip (上传时间2006-10-06,09:49,13.1 KB,107 次点击)
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有