莱沙 发表于 2008-11-7 23:57

字符游戏

这个发了很久了!由于论坛没开发没在此发布,现在放这里有兴趣就看看吧!x80x88兄就可不用玩了!就想看看小生兄露两手来看看!

lovessyy 发表于 2008-11-8 00:29

Borland Delphi 6.0 - 7.0

我一点都不会这个。不熟。。

一般都是直接查到字符串。。查不到 不知道了。。

拦截提示框的也不行。。

等待怕怕破吧 顺便把方法告诉我哦~

:lol

小生我怕怕 发表于 2008-11-8 02:35



本不想玩的,但是楼主点名叫我玩下,那我也就来丢下人
大概的分析了一下,太久都不搞破解啦,有错误的地方请别见笑


00453D94    55            push ebp                                 ; 按钮事件
00453D95    8BEC            mov ebp,esp
00453D97    B9 05000000   mov ecx,5
00453D9C    6A 00         /push 0
00453D9E    6A 00         |push 0
00453DA0    49            |dec ecx
00453DA1^ 75 F9         \jnz short Crackme.00453D9C
00453DA3    51            push ecx
00453DA4    53            push ebx
00453DA5    8BD8            mov ebx,eax
00453DA7    33C0            xor eax,eax
00453DA9    55            push ebp
00453DAA    68 FE3E4500   push Crackme.00453EFE
00453DAF    64:FF30         push dword ptr fs:
00453DB2    64:8920         mov dword ptr fs:,esp
00453DB5    8D55 FC         lea edx,dword ptr ss:
00453DB8    8B83 04030000   mov eax,dword ptr ds:
00453DBE    E8 89ECFDFF   call Crackme.00432A4C                  ; 取假码
00453DC3    837D FC 00      cmp dword ptr ss:,0               ; 比较注册码是否为0
00453DC7    0F84 E4000000   je Crackme.00453EB1                      ; 为0则跳
00453DCD    8D55 F8         lea edx,dword ptr ss:
00453DD0    8B83 00030000   mov eax,dword ptr ds:
00453DD6    E8 71ECFDFF   call Crackme.00432A4C                  ; 取注册名
00453DDB    837D F8 00      cmp dword ptr ss:,0               ; 比较注册名是否为0
00453DDF    0F84 CC000000   je Crackme.00453EB1                      ; 为0则跳
00453DE5    8D55 F4         lea edx,dword ptr ss:
00453DE8    8B83 04030000   mov eax,dword ptr ds:
00453DEE    E8 59ECFDFF   call Crackme.00432A4C
00453DF3    8B45 F4         mov eax,dword ptr ss:             ; 计算注册码位数
00453DF6    E8 1103FBFF   call Crackme.0040410C
00453DFB    83F8 0B         cmp eax,0B                               ; 比较注册码是否为11位
00453DFE    0F85 A1000000   jnz Crackme.00453EA5                     ; 不等于11则跳或小于则跳
00453E04    8D55 F0         lea edx,dword ptr ss:
00453E07    8B83 04030000   mov eax,dword ptr ds:
00453E0D    E8 3AECFDFF   call Crackme.00432A4C
00453E12    8B45 F0         mov eax,dword ptr ss:            ; 计算注册码第6位
00453E15    8078 05 2D      cmp byte ptr ds:,2D               ; 比较注册码第6位是够为"-"
00453E19    0F85 86000000   jnz Crackme.00453EA5                     ; 不是则跳
00453E1F    8D55 E8         lea edx,dword ptr ss:
00453E22    8B83 04030000   mov eax,dword ptr ds:
00453E28    E8 1FECFDFF   call Crackme.00432A4C
00453E2D    8B45 E8         mov eax,dword ptr ss:
00453E30    8D55 EC         lea edx,dword ptr ss:
00453E33    E8 8CFCFFFF   call Crackme.00453AC4
00453E38    8D55 E0         lea edx,dword ptr ss:
00453E3B    8B83 04030000   mov eax,dword ptr ds:
00453E41    E8 06ECFDFF   call Crackme.00432A4C
00453E46    8B45 E0         mov eax,dword ptr ss:
00453E49    8D55 E4         lea edx,dword ptr ss:
00453E4C    E8 73FCFFFF   call Crackme.00453AC4                  ; 关键第一算法CALL]
00453E51|.8B45 E4       mov eax,
00453E54|.50            push eax
00453E55|.8D55 DC       lea edx,
00453E58|.8B83 00030000 mov eax,dword ptr ds:
00453E5E|.E8 E9EBFDFF   call Crackme.00432A4C
00453E63|.8B45 DC       mov eax,
00453E66|.5A            pop edx
00453E67|.E8 ECFDFFFF   call Crackme.00453C58                  ;关键第二算法CALL
00453E6C|.3C 72         cmp al,72                              ;爆破的话下面的跳不跳就可以啦,但是第六位必须为-
00453E6E|.75 27         jnz short Crackme.00453E97               ;关键跳
━━━━━━━━━━━━━━━━━━━━━━━━━━
第一算法CALL内容
00453AC4    55            push ebp
00453AC5    8BEC            mov ebp,esp
00453AC7    B9 04000000   mov ecx,4
00453ACC    6A 00         /push 0
00453ACE    6A 00         |push 0
00453AD0    49            |dec ecx
00453AD1^ 75 F9         \jnz short Crackme.00453ACC
00453AD3    51            push ecx
00453AD4    53            push ebx
00453AD5    56            push esi
00453AD6    8BF2            mov esi,edx
00453AD8    8945 FC         mov dword ptr ss:,eax             ; 假注册码传送EAX
00453ADB    8B45 FC         mov eax,dword ptr ss:             ; 假码之间进行传递
00453ADE    E8 1908FBFF   call Crackme.004042FC
00453AE3    33C0            xor eax,eax                              ; 清空假码
00453AE5    55            push ebp
00453AE6    68 4A3C4500   push Crackme.00453C4A
00453AEB    64:FF30         push dword ptr fs:
00453AEE    64:8920         mov dword ptr fs:,esp
00453AF1    BB 01000000   mov ebx,1
00453AF6    8D45 F0         /lea eax,dword ptr ss:
00453AF9    8B55 FC         |mov edx,dword ptr ss:            ; 在次取假码
00453AFC    8A541A FF       |mov dl,byte ptr ds:          ; 逐位取假码
00453B00    E8 2F05FBFF   |call Crackme.00404034
00453B05    8B55 F0         |mov edx,dword ptr ss:
00453B08    8D45 F4         |lea eax,dword ptr ss:
00453B0B    E8 0406FBFF   |call Crackme.00404114
00453B10    43            |inc ebx                                 ; 累加次数
00453B11    83FB 07         |cmp ebx,7                               ; 比较次数
00453B14^ 75 E0         \jnz short Crackme.00453AF6            ; 不为7则跳
00453B16    BB 01000000   mov ebx,1
00453B1B    8BC3            /mov eax,ebx                           ; 计算此数与下面的跳相互辉映
00453B1D    83F8 05         |cmp eax,5                               ; 比较位数; Switch (cases 1..5)
00453B20    0F87 F2000000   |ja Crackme.00453C18                     ; 相等则不跳
00453B26    FF2485 2D3B4500 |jmp dword ptr ds:
00453B2D    183C45 00453B45 |sbb byte ptr ds:,bh   ; Switch table used at 00453B26
00453B34    0072 3B         add byte ptr ds:,dh
00453B37    45            inc ebp
00453B38    009C3B 4500C63B add byte ptr ds:,bl
00453B3F    45            inc ebp
00453B40    00F0            add al,dh
00453B42    3B45 00         cmp eax,dword ptr ss:
00453B45    8D45 EC         |lea eax,dword ptr ss:         ; Case 1 of switch 00453B1D
00453B48    8B55 FC         |mov edx,dword ptr ss:
00453B4B    0FB6541A 05   |movzx edx,byte ptr ds:       ; 计算注册码第七位
00453B50    8B4D FC         |mov ecx,dword ptr ss:
00453B53    0FB64C19 FF   |movzx ecx,byte ptr ds:       ; 第七位和第一位计算
00453B58    03D1            |add edx,ecx                           ; 相加
00453B5A    83EA 5A         |sub edx,5A                              ; 相减
00453B5D    E8 D204FBFF   |call Crackme.00404034
00453B62    8B55 EC         |mov edx,dword ptr ss:
00453B65    8D45 F8         |lea eax,dword ptr ss:
00453B68    E8 A705FBFF   |call Crackme.00404114
00453B6D    E9 A6000000   |jmp Crackme.00453C18
00453B72    8D45 E8         |lea eax,dword ptr ss:         ; Case 2 of switch 00453B1D
00453B75    8B55 FC         |mov edx,dword ptr ss:
00453B78    0FB6541A 05   |movzx edx,byte ptr ds:       ; 计算注册码第八位
00453B7D    8B4D FC         |mov ecx,dword ptr ss:
00453B80    0FB64C19 FF   |movzx ecx,byte ptr ds:       ; 第八位和第二位计算
00453B85    03D1            |add edx,ecx                           ; 相加
00453B87    83EA 5A         |sub edx,5A                              ; 相减
00453B8A    E8 A504FBFF   |call Crackme.00404034
00453B8F    8B55 E8         |mov edx,dword ptr ss:
00453B92    8D45 F8         |lea eax,dword ptr ss:
00453B95    E8 7A05FBFF   |call Crackme.00404114
00453B9A    EB 7C         |jmp short Crackme.00453C18
00453B9C    8D45 E4         |lea eax,dword ptr ss:         ; Case 3 of switch 00453B1D
00453B9F    8B55 FC         |mov edx,dword ptr ss:
00453BA2    0FB6541A 05   |movzx edx,byte ptr ds:       ; 计算注册码第九位
00453BA7    8B4D FC         |mov ecx,dword ptr ss:
00453BAA    0FB64C19 FF   |movzx ecx,byte ptr ds:       ; 第九位和第三位计算
00453BAF    03D1            |add edx,ecx                           ; 相加
00453BB1    83EA 5A         |sub edx,5A                              ; 相减
00453BB4    E8 7B04FBFF   |call Crackme.00404034
00453BB9    8B55 E4         |mov edx,dword ptr ss:
00453BBC    8D45 F8         |lea eax,dword ptr ss:
00453BBF    E8 5005FBFF   |call Crackme.00404114
00453BC4    EB 52         |jmp short Crackme.00453C18
00453BC6    8D45 E0         |lea eax,dword ptr ss:         ; Case 4 of switch 00453B1D
00453BC9    8B55 FC         |mov edx,dword ptr ss:
00453BCC    0FB6541A 05   |movzx edx,byte ptr ds:       ; 计算注册码第十位
00453BD1    8B4D FC         |mov ecx,dword ptr ss:
00453BD4    0FB64C19 FF   |movzx ecx,byte ptr ds:       ; 第十位和第四位计算
00453BD9    03D1            |add edx,ecx                           ; 相加
00453BDB    83EA 5A         |sub edx,5A                              ; 相减
00453BDE    E8 5104FBFF   |call Crackme.00404034
00453BE3    8B55 E0         |mov edx,dword ptr ss:
00453BE6    8D45 F8         |lea eax,dword ptr ss:
00453BE9    E8 2605FBFF   |call Crackme.00404114
00453BEE    EB 28         |jmp short Crackme.00453C18
00453BF0    8D45 DC         |lea eax,dword ptr ss:         ; Case 5 of switch 00453B1D
00453BF3    8B55 FC         |mov edx,dword ptr ss:
00453BF6    0FB6541A 05   |movzx edx,byte ptr ds:       ; 计算注册码第十一位
00453BFB    8B4D FC         |mov ecx,dword ptr ss:
00453BFE    0FB64C19 FF   |movzx ecx,byte ptr ds:       ; 第十一位和第五位计算
00453C03    03D1            |add edx,ecx                           ; 相加
00453C05    83EA 5A         |sub edx,5A                              ; 相减
00453C08    E8 2704FBFF   |call Crackme.00404034
00453C0D    8B55 DC         |mov edx,dword ptr ss:
00453C10    8D45 F8         |lea eax,dword ptr ss:
00453C13    E8 FC04FBFF   |call Crackme.00404114
00453C18    43            |inc ebx                                 ; 加1; Default case of switch 00453B1D
00453C19    83FB 06         |cmp ebx,6                               ; 比较次数
00453C1C^ 0F85 F9FEFFFF   \jnz Crackme.00453B1B                  ; 为6则不跳
00453C22    8BC6            mov eax,esi
00453C24    8B4D F8         mov ecx,dword ptr ss:             ; 取用户名第2位到末尾第2位
00453C27    8B55 F4         mov edx,dword ptr ss:             ; 完成前6位假码计算
━━━━━━━━━━━━━━━━━━━━━━━━━━
00453C58    55            push ebp
00453C59    8BEC            mov ebp,esp
00453C5B    33C9            xor ecx,ecx
00453C5D    51            push ecx
00453C5E    51            push ecx
00453C5F    51            push ecx
00453C60    51            push ecx
00453C61    51            push ecx
00453C62    51            push ecx
00453C63    53            push ebx
00453C64    56            push esi
00453C65    8955 F8         mov dword ptr ss:,edx
00453C68    8945 FC         mov dword ptr ss:,eax             ; 取用户名
00453C6B    8B45 FC         mov eax,dword ptr ss:             ; 用户名与用户名之间传递
00453C6E    E8 8906FBFF   call Crackme.004042FC
00453C73    8B45 F8         mov eax,dword ptr ss:             ; 用户名放入EAX
00453C76    E8 8106FBFF   call Crackme.004042FC
00453C7B    33C0            xor eax,eax                              ; 清空用户名
00453C7D    55            push ebp
00453C7E    68 163D4500   push Crackme.00453D16
00453C83    64:FF30         push dword ptr fs:
00453C86    64:8920         mov dword ptr fs:,esp
00453C89    BB 01000000   mov ebx,1
00453C8E    8D45 EC         lea eax,dword ptr ss:
00453C91    8B55 FC         mov edx,dword ptr ss:             ; 在次取用户名
00453C94    8A541A FF       mov dl,byte ptr ds:         ; 逐位取用户名计算
00453C98    E8 9703FBFF   call Crackme.00404034
00453C9D    8B55 EC         mov edx,dword ptr ss:
00453CA0    8D45 F4         lea eax,dword ptr ss:
00453CA3    E8 6C04FBFF   call Crackme.00404114
00453CA8    43            inc ebx                                  ; 计算位数
00453CA9    83FB 06         cmp ebx,6                              ; 比较是否为6
00453CAC^ 75 E0         jnz short Crackme.00453C8E               ; 为6则不跳
00453CAE    8B45 F8         mov eax,dword ptr ss:
00453CB1    E8 5604FBFF   call Crackme.0040410C
00453CB6    8BD8            mov ebx,eax
00453CB8    8B45 F8         mov eax,dword ptr ss:
00453CBB    E8 4C04FBFF   call Crackme.0040410C
00453CC0    8BF0            mov esi,eax                              ; 计算注册码位数
00453CC2    83EE 04         sub esi,4                              ; 为ESI+4处理
00453CC5    2BF3            sub esi,ebx                              ; EBX和ESI相加进行下面的计算
00453CC7    7F 1F         jg short Crackme.00453CE8
00453CC9    4E            dec esi
00453CCA    8D45 E8         lea eax,dword ptr ss:
00453CCD    8B55 F8         mov edx,dword ptr ss:
00453CD0    8A541A FF       mov dl,byte ptr ds:
00453CD4    E8 5B03FBFF   call Crackme.00404034
00453CD9    8B55 E8         mov edx,dword ptr ss:
00453CDC    8D45 F0         lea eax,dword ptr ss:
00453CDF    E8 3004FBFF   call Crackme.00404114
00453CE4    4B            dec ebx                                  ; 执行减一指令
00453CE5    46            inc esi                                  ; 执行加一指令
00453CE6^ 75 E2         jnz short Crackme.00453CCA               ; ESI为0时则不跳
00453CE8    8B45 F0         mov eax,dword ptr ss:
00453CEB    8B55 F4         mov edx,dword ptr ss:             ; 取用户名正数第2位和倒数第3位
00453CEE    E8 6505FBFF   call Crackme.00404258                  ; 放入EDX

[ 本帖最后由 小生我怕怕 于 2008-11-8 02:37 编辑 ]

181989109 发表于 2008-11-8 04:13

小生果然好厉害```:D :D

莱沙 发表于 2008-11-8 10:04

小生兄果然强大!不过就觉得小生你有如此高超的技术,于吗不学学高级语言编程呢!XIMO,蚊香,就连x80x88都学了VB你于吗不考虑一下呢!我想你现在大概也在玩壳吧!要是能写个加壳的软件那也是不错的啊!期待你用高级语言写的程序啊!:lol :lol :lol

609654213 发表于 2008-11-8 10:25

如此高超的技术

creantan 发表于 2008-11-8 11:09

学习下。。。

小生我怕怕 发表于 2008-11-8 11:15

原帖由 莱沙 于 2008-11-8 10:04 发表 http://www.52pojie.cn/images/common/back.gif
小生兄果然强大!不过就觉得小生你有如此高超的技术,于吗不学学高级语言编程呢!XIMO,蚊香,就连x80x88都学了VB你于吗不考虑一下呢!我想你现在大概也在玩壳吧!要是能写个加壳的软件那也是不错的啊!期待你用高级 ...
我们算是老交情啦,呵呵当初因为我个人的敏感所以少说话而已,其实我有学高级语言的,但是只是觉得目前自己的能力不足以分心去学习,所以目前还在跟超兄学习脱壳中!
页: [1]
查看完整版本: 字符游戏