首页
社区
课程
招聘
[原创]happytown的CRACK入门系列第4题(破文)
发表于: 2008-3-8 22:13 6257

[原创]happytown的CRACK入门系列第4题(破文)

2008-3-8 22:13
6257

【文章标题】: happytown的CRACK入门系列第4题
【文章作者】: 铁面王子
【作者QQ号】: 173991904
【软件名称】: KeyGenMe_04.exe
【下载地址】: http://bbs.pediy.com/showthread.php?t=33853
【加壳方式】: 无
【编写语言】: delphi
【使用工具】: OD+计算器
【操作平台】: sp sq2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  无壳,输入假码无任何反应,直接用OD打开程序.
  先来找找看是否有,有用的字符串,,居然找到 good job,man!
  高兴之余,直接双击来这里
  0045015F  |.  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
  00450161  |.  68 98014500   push    00450198                         ; |congratulations
  00450166  |.  68 A8014500   push    004501A8                         ; |good job,man!
  0045016B  |.  6A 00         push    0                                ; |hOwner = NULL
  0045016D  |.  E8 2E63FBFF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
  
  
  
  向上翻翻,   好我们就在00450034处下断试试吧
  
  输入注册名:123456
      注册码:456789
  00450034  /.  55            push    ebp                                          :断在这里按F8单步执行
  00450035  |.  8BEC          mov     ebp, esp
  00450037  |.  83C4 F8       add     esp, -8
  0045003A  |.  8955 F8       mov     dword ptr [ebp-8], edx
  0045003D  |.  8945 FC       mov     dword ptr [ebp-4], eax
  00450040  |.  E8 DB3CFBFF   call    00403D20
  00450045  |.  59            pop     ecx
  00450046  |.  59            pop     ecx
  00450047  |.  5D            pop     ebp
  00450048  \.  C3            retn
  00450049      8D40 00       lea     eax, dword ptr [eax]
  0045004C  /.  55            push    ebp
  0045004D  |.  8BEC          mov     ebp, esp
  0045004F  |.  83C4 DC       add     esp, -24
  00450052  |.  33C9          xor     ecx, ecx
  00450054  |.  894D F8       mov     dword ptr [ebp-8], ecx
  00450057  |.  894D F4       mov     dword ptr [ebp-C], ecx
  0045005A  |.  8955 E0       mov     dword ptr [ebp-20], edx
  0045005D  |.  8945 FC       mov     dword ptr [ebp-4], eax
  00450060  |.  33C0          xor     eax, eax
  00450062  |.  55            push    ebp
  00450063  |.  68 8D014500   push    0045018D
  00450068  |.  64:FF30       push    dword ptr fs:[eax]
  0045006B  |.  64:8920       mov     dword ptr fs:[eax], esp
  0045006E  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
  00450071  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  00450074  |.  8B80 00030000 mov     eax, dword ptr [eax+300]
  0045007A  |.  E8 D9F2FDFF   call    0042F358
  0045007F  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  注册名传入
  00450082  |.  E8 4940FBFF   call    004040D0                         ;  检测用户名长度
  00450087  |.  8945 F0       mov     dword ptr [ebp-10], eax          ;  注册名长度传入
  0045008A  |.  837D F0 02    cmp     dword ptr [ebp-10], 2            ;  注册名不能小于2
  0045008E  |.  0F8C DE000000 jl      00450172
  00450094  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
  00450097  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0045009A  |.  8B80 08030000 mov     eax, dword ptr [eax+308]
  004500A0  |.  E8 B3F2FDFF   call    0042F358
  004500A5  |.  8B45 F4       mov     eax, dword ptr [ebp-C]           ;  传入注册码
  004500A8  |.  E8 2340FBFF   call    004040D0                         ;  测度注册码长度
  004500AD  |.  8945 EC       mov     dword ptr [ebp-14], eax          ;  注册码位数传入
  004500B0  |.  837D EC 0A    cmp     dword ptr [ebp-14], 0A           ;  注册码一定等于10位,出错(这里看出我们输入的注册码少于10位重新来过)
  004500B4  |.  0F85 B8000000 jnz     00450172
  004500BA  |.  8B45 EC       mov     eax, dword ptr [ebp-14]
  004500BD  |.  85C0          test    eax, eax
  004500BF  |.  7E 34         jle     short 004500F5
  004500C1  |.  8945 E4       mov     dword ptr [ebp-1C], eax
  004500C4  |.  C745 E8 01000>mov     dword ptr [ebp-18], 1            ;  初始化循环变量
  004500CB  |>  8B45 F4       /mov     eax, dword ptr [ebp-C]          ;  这里到....
  004500CE  |.  8B55 E8       |mov     edx, dword ptr [ebp-18]
  004500D1  |.  807C10 FF 30  |cmp     byte ptr [eax+edx-1], 30
  004500D6  |.  0F82 96000000 |jb      00450172
  004500DC  |.  8B45 F4       |mov     eax, dword ptr [ebp-C]
  004500DF  |.  8B55 E8       |mov     edx, dword ptr [ebp-18]
  004500E2  |.  807C10 FF 39  |cmp     byte ptr [eax+edx-1], 39
  004500E7  |.  0F87 85000000 |ja      00450172
  004500ED  |.  FF45 E8       |inc     dword ptr [ebp-18]
  004500F0  |.  FF4D E4       |dec     dword ptr [ebp-1C]
  004500F3  |.^ 75 D6         \jnz     short 004500CB                  ;  这部分检测注册码中有没有字母
  004500F5  |>  8B45 F4       mov     eax, dword ptr [ebp-C]           ;  假注册码传入
  004500F8  |.  0FB600        movzx   eax, byte ptr [eax]              ;  取注册码的第1位
  004500FB  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
  004500FE  |.  0FB652 05     movzx   edx, byte ptr [edx+5]            ;  取注册码的第5位
  00450102  |.  03C2          add     eax, edx                         ;  注册码第一位和第六位相加必须等于6D
  00450104  |.  83F8 6D       cmp     eax, 6D                          ;  比较是不是等于6D
  00450107  |.  75 69         jnz     short 00450172                   ;  不相等就跳出
  00450109  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  0045010C  |.  0FB640 01     movzx   eax, byte ptr [eax+1]            ;  取注册码的第2位
  00450110  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
  00450113  |.  0FB652 06     movzx   edx, byte ptr [edx+6]            ;  取注册码的第6位
  00450117  |.  03C2          add     eax, edx                         ;  第1位和第6位相加,结果一定要等于67
  00450119  |.  83F8 67       cmp     eax, 67                          ;  比较结果
  0045011C  |.  75 54         jnz     short 00450172
  0045011E  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  00450121  |.  0FB640 02     movzx   eax, byte ptr [eax+2]
  00450125  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
  00450128  |.  0FB652 07     movzx   edx, byte ptr [edx+7]
  0045012C  |.  03C2          add     eax, edx                         ;  第2位和第7位相加,结果一定要等于69
  0045012E  |.  83F8 69       cmp     eax, 69
  00450131  |.  75 3F         jnz     short 00450172
  00450133  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  00450136  |.  0FB640 03     movzx   eax, byte ptr [eax+3]
  0045013A  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
  0045013D  |.  0FB652 08     movzx   edx, byte ptr [edx+8]
  00450141  |.  03C2          add     eax, edx                         ;  第3位和第8位相加,结果一定要等于70
  00450143  |.  83F8 70       cmp     eax, 70
  00450146  |.  75 2A         jnz     short 00450172
  00450148  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  0045014B  |.  0FB640 04     movzx   eax, byte ptr [eax+4]
  0045014F  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
  00450152  |.  0FB652 09     movzx   edx, byte ptr [edx+9]
  00450156  |.  F7EA          imul    edx                              ;  第4位和第9位相*,结果一定要等于A8C
  00450158  |.  3D 8C0A0000   cmp     eax, 0A8C
  0045015D  |.  75 13         jnz     short 00450172
  0045015F  |.  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
  00450161  |.  68 98014500   push    00450198                         ; |congratulations
  00450166  |.  68 A8014500   push    004501A8                         ; |good job,man!
  0045016B  |.  6A 00         push    0                                ; |hOwner = NULL
  0045016D  |.  E8 2E63FBFF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
  
  
  
  注册名要大于1,用户必须等10
  算法很简单,注册码和用户名没有关系
  0位+5位=6D
  1位+6位=67
  2位+7位=69
  3位+8位=70
  4位*9位=A8C
  
  可用注册码;8448253586
  
--------------------------------------------------------------------------------
【经验总结】
  算法比较简单,有相关字符串参考
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年03月08日 22:22:02


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
支持一下。。。
2008-3-8 23:18
0
雪    币: 218
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
00450117  |.  03C2          add     eax, edx                         ;  第1位和第6位相加,结果一定要等于67

此处注解是第0位,和第6位相加,在此修正一下
2008-3-9 12:24
0
雪    币: 609
活跃值: (237)
能力值: ( LV12,RANK:441 )
在线值:
发帖
回帖
粉丝
4
很好很强大……上次这个CrackMe连追码我都懒得去找……
2008-3-9 13:56
0
雪    币: 218
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
明天试试第五题,看明天能不能把破文发上来
2008-3-9 17:04
0
雪    币: 431
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
为什么我用OD加载这些文件都不行呢,OD的状态栏显示
"访问违规:正在写入到[00000010] 使用Shift + F7/F8/F9来忽略程序异常"
再看入口点:7C918FEA    FF40 10         INC DWORD PTR DS:[EAX+10]

看样子,OD把程序的入口点都弄错了哦
请问是怎么弄的呢,谢谢
2008-3-10 16:57
0
雪    币: 218
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
我的不会,试换一下OD的版本
2008-3-10 21:24
0
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
不错~~分析得很清晰~
2008-3-12 20:41
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
为什么新建SQL注册没有服务器
2008-3-13 08:37
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
受益了。。
2010-2-3 19:49
0
游客
登录 | 注册 方可回帖
返回
//