首页
社区
课程
招聘
[原创]DCSE's crackme 1.01算法分析
发表于: 2006-7-26 15:14 6053

[原创]DCSE's crackme 1.01算法分析

2006-7-26 15:14
6053

【文章标题】: DCSE's crackme 1.01算法分析
【文章作者】: 网游难民
【软件名称】: DCSE's crackme 1.01
【软件大小】: 412 KB
【下载地址】: 本地下载
【加壳方式】: 无
【保护方式】: 注册码
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OD,PEID
【操作平台】: winxp
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
   一,用PEID查壳为Borland C++ [Overlay]无壳。
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    二,运行软件,注册窗口进行注册,输入错误的注册信息进行检测!软件有尾巴!
     提示说:“注册失败。。。”
    用OD载入,右键超级字串查找,找到"注册失败。。。",双击进入程序代码段,往上查找,在一个合适的地方下断。
    然后运行程序,输入注册名和注册码,程序成功被断了下来,断在这里:
  004538B4  |.  51            PUSH ECX                                 ;  程序被段在这里
  004538B5  |.  53            PUSH EBX
  004538B6  |.  56            PUSH ESI
  004538B7  |.  57            PUSH EDI
  004538B8  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
  004538BB  |.  33C0          XOR EAX,EAX
  004538BD  |.  55            PUSH EBP
  004538BE  |.  68 CC394500   PUSH CRACKME1.004539CC
  004538C3  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
  004538C6  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004538C9  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
  004538CC  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004538CF  |.  8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
  004538D5  |.  E8 72F1FDFF   CALL CRACKME1.00432A4C
  004538DA  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  注册名输入EAX
  004538DD  |.  E8 2A08FBFF   CALL CRACKME1.0040410C                   ;  取得注册名位数
  004538E2  |.  8945 F8       MOV DWORD PTR SS:[EBP-8],EAX             ;  注册名位数放入SS:[EBP-8]
  004538E5  |.  837D F8 01    CMP DWORD PTR SS:[EBP-8],1               ;  注册名位数和1比较
  004538E9  |.  7D 0F         JGE SHORT CRACKME1.004538FA              ;  大于一则跳
  004538EB  |.  B8 E4394500   MOV EAX,CRACKME1.004539E4                ;  请输入用户名...
  004538F0  |.  E8 773AFDFF   CALL CRACKME1.0042736C
  004538F5  |.  E9 A2000000   JMP CRACKME1.0045399C
  004538FA  |>  33DB          XOR EBX,EBX                              ;  EBX清0
  004538FC  |.  8B7D F8       MOV EDI,DWORD PTR SS:[EBP-8]             ;  用户名位数放入EDI
  004538FF  |.  85FF          TEST EDI,EDI
  00453901  |.  7E 2A         JLE SHORT CRACKME1.0045392D
  00453903  |.  BE 01000000   MOV ESI,1                                ;  ESI置一,为下面循环做准备
  00453908  |>  8D55 F0       /LEA EDX,DWORD PTR SS:[EBP-10]
  0045390B  |.  8B45 FC       |MOV EAX,DWORD PTR SS:[EBP-4]
  0045390E  |.  8B80 04030000 |MOV EAX,DWORD PTR DS:[EAX+304]
  00453914  |.  E8 33F1FDFF   |CALL CRACKME1.00432A4C
  00453919  |.  8B45 F0       |MOV EAX,DWORD PTR SS:[EBP-10]
  0045391C  |.  8A4430 FF     |MOV AL,BYTE PTR DS:[EAX+ESI-1]
  00453920  |.  25 FF000000   |AND EAX,0FF
  00453925  |.  03D8          |ADD EBX,EAX
  00453927  |.  03DE          |ADD EBX,ESI
  00453929  |.  46            |INC ESI
  0045392A  |.  4F            |DEC EDI
  0045392B  |.^ 75 DB         \JNZ SHORT CRACKME1.00453908             ;  这里是一个循环,求的用户名第一位ASCII码加1,第二位用户名ASCII码加2~~~~~~~一直到最后一位的和放入EBX,记为A,
  0045392D  |>  8BC3          MOV EAX,EBX                              ;  把A送入EAX
  0045392F  |.  F7EB          IMUL EBX                                 ;  EAX乘EBX,即A*A,记为B
  00453931  |.  83C0 05       ADD EAX,5                                ;  EAX加5,即B加5,记为C
  00453934  |.  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX            ;  把C放入SS:[EBP-14]
  00453937  |.  DB45 EC       FILD DWORD PTR SS:[EBP-14]               ;  C的十进制扩展为实数,记为D
  0045393A  |.  DB45 F8       FILD DWORD PTR SS:[EBP-8]                ;  用户名十进制扩展为实数,记为E
  0045393D  |.  DEF9          FDIVP ST(1),ST                           ;  D除以E,值记为F
  0045393F  |.  D825 F4394500 FSUB DWORD PTR DS:[4539F4]               ;  F的值减去2记为G
  00453945  |.  E8 D2EFFAFF   CALL CRACKME1.0040291C                   ;  G的16进制放入EAX,记为H
  0045394A  |.  8BD8          MOV EBX,EAX                              ;  EAX的值放入EBX,即H放入EBX
  0045394C  |.  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
  0045394F  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  00453952  |.  8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
  00453958  |.  E8 EFF0FDFF   CALL CRACKME1.00432A4C
  0045395D  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]            ;  试练码放入EAX
  00453960  |.  50            PUSH EAX
  00453961  |.  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
  00453964  |.  8BC3          MOV EAX,EBX                              ;  EBX的值放入EAX,即H放入EAX
  00453966  |.  E8 7543FBFF   CALL CRACKME1.00407CE0
  0045396B  |.  8B4D E0       MOV ECX,DWORD PTR SS:[EBP-20]            ;  G放入ECX中
  0045396E  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
  00453971  |.  BA 003A4500   MOV EDX,CRACKME1.00453A00                ;  把I Love Vegetable放如EDX
  00453976  |.  E8 DD07FBFF   CALL CRACKME1.00404158                   ;  把I Love Vegetable和G连接起来,值记为I
  0045397B  |.  8B55 E4       MOV EDX,DWORD PTR SS:[EBP-1C]            ;  把I放入EDX
  0045397E  |.  58            POP EAX
  0045397F  |.  E8 D408FBFF   CALL CRACKME1.00404258                   ;  把我们的试练码和I相比较,即I为注册码
  00453984  |.  75 0C         JNZ SHORT CRACKME1.00453992              ;  不相等就跳向失败,GameOver!!
  00453986  |.  B8 1C3A4500   MOV EAX,CRACKME1.00453A1C                ;  注册成功...
  0045398B  |.  E8 DC39FDFF   CALL CRACKME1.0042736C
  00453990  |.  EB 0A         JMP SHORT CRACKME1.0045399C
  00453992  |>  B8 303A4500   MOV EAX,CRACKME1.00453A30                ;  注册失败...
  00453997  |.  E8 D039FDFF   CALL CRACKME1.0042736C
  0045399C  |>  33C0          XOR EAX,EAX
  0045399E  |.  5A            POP EDX
  0045399F  |.  59            POP ECX
  
  
--------------------------------------------------------------------------------
【经验总结】
  它的算法是:
  用户名第一位ASCII码加1,第二位用户名ASCII码加2~~~~~~~一直到最后一位的和,记为A。
  A的平方的值加上5,记为C。
  C的十进制实数除以用户名位数的十进制实数的值减2记为G。
  把I Love Vegetable和G的整数部分连接起来,值记为I。I即为正确的注册码。
  此crackme比较简单,适合新手学习~~~
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年07月26日 15:06:15


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
2


学习了,支持!
2006-7-26 15:30
0
雪    币: 309
活跃值: (15)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
偶还是看了冷血兄的破文受点启发才弄出来的~~~
以后还要靠冷血兄多加指点`
2006-7-26 15:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习中,谢谢提供。努力……,支持我~
2006-7-28 21:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
附件解压出错,楼主请修复
2006-7-29 14:22
0
游客
登录 | 注册 方可回帖
返回
//