• 标 题:网软眼保 2003 修正版(第六版) 
  • 作 者:fly
  • 时 间:2003/04/27 12:46pm
  • 链 接:http://bbs.pediy.com

简单算法——网软眼保 2003 修正版(第六版)



下载页面:  http://www.skycn.com/soft/10438.html
软件大小:  784 KB
软件语言:  简体中文
软件类别:  国产软件 / 共享版 / 开关定时
加入时间:  2003-04-21 15:57:27
下载次数:  3917
推荐等级:  ***
开 发 商:  http://go.6to23.com/nie173/


【软件简介】:如果你家有贪玩电脑的孩子,或你是个经常过度用电脑的人,那么该软件便是你最好的选择。有了它,你再也不必为你或你的小孩的用眼健康担心了。该软件具有十分大的强制性。当软件运行时没有密码是不可以退出程序的。软件强制保护用户眼睛时,任何没有密码的企图中止软件的行为都是徒劳的。软件使用的保护眼睛的办法是目前最有效的办法,在中国约有1亿多的中小学生都在使用该办法保护眼睛。一句话,选择了该软件你一定不会后悔的。

【软件限制】:试用50次

【作者声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!

【破解工具】:TRW2000娃娃修改版、Ollydbg1.09、PEiD、W32Dasm 9.0白金版

—————————————————————————————————
【过    程】:


eye.exe 无壳。Visual C++ 6.0 编写。

机器码:858278001eye261584
试炼码:123456789-ABCDEF
—————————————————————————————————
程序启动时的运算部分!或者点“注册”时也可以拦截。


* Possible StringData Ref from Data Obj ->"c:\"
                                 |
:0040DE11 6874414200              push 00424174

* Reference To: KERNEL32.GetVolumeInformationA, Ord:0177h
                                 |
:0040DE16 FF1560D14100            Call dword ptr [0041D160]
                                 ====>取我的硬盘序列号

:0040DE1C 8B44242C                mov eax, dword ptr [esp+2C]
                                 ====>EAX=211C1E09

:0040DE20 53                      push ebx
:0040DE21 3578563412              xor eax, 12345678
                                 ====>EAX=211C1E09 XOR 12345678=33284871
                                 ====>33284871(H)=858278001(D)  得出机器码的前部分

:0040DE26 8BCD                    mov ecx, ebp
:0040DE28 89442430                mov dword ptr [esp+30], eax
:0040DE2C 8BF0                    mov esi, eax

* Reference To: MFC42.Ordinal:18BE, Ord:18BEh
                                 |
:0040DE2E E84DBC0000              Call 00419A80
:0040DE33 8D4C2414                lea ecx, dword ptr [esp+14]

* Reference To: MFC42.Ordinal:021C, Ord:021Ch
                                 |
:0040DE37 E8EABB0000              Call 00419A26
:0040DE3C 8D542434                lea edx, dword ptr [esp+34]
:0040DE40 C644245C02              mov [esp+5C], 02
:0040DE45 52                      push edx
:0040DE46 C744243820000000        mov [esp+38], 00000020

* Reference To: KERNEL32.GlobalMemoryStatus, Ord:018Dh
                                 |
:0040DE4E FF1564D14100            Call dword ptr [0041D164]
                                 ====>GlobalMemoryStatus 取我的内存大小?

:0040DE54 8B44243C                mov eax, dword ptr [esp+3C]
                                 ====>EAX=0FF74000

:0040DE58 8D4C2414                lea ecx, dword ptr [esp+14]
:0040DE5C C1E80A                  shr eax, 0A
                                 ====>EAX=0FF74000 SHR A=0003FDD0
                                 ====>0003FDD0(H)=261584(D)      得出机器码的后部分

:0040DE5F 50                      push eax

* Possible StringData Ref from Data Obj ->"%lu"
                                 |
:0040DE60 686C414200              push 0042416C
:0040DE65 51                      push ecx

* Reference To: MFC42.Ordinal:0B02, Ord:0B02h
                                 |
:0040DE66 E8B5BB0000              Call 00419A20
:0040DE6B 83C40C                  add esp, 0000000C
:0040DE6E 8D4C2410                lea ecx, dword ptr [esp+10]

* Reference To: MFC42.Ordinal:021C, Ord:021Ch
                                 |
:0040DE72 E8AFBB0000              Call 00419A26
:0040DE77 56                      push esi
:0040DE78 8D542414                lea edx, dword ptr [esp+14]
:0040DE7C B303                    mov bl, 03

* Possible StringData Ref from Data Obj ->"%ld"
                                 |
:0040DE7E 6870414200              push 00424170
:0040DE83 52                      push edx
:0040DE84 885C2468                mov byte ptr [esp+68], bl

* Reference To: MFC42.Ordinal:0B02, Ord:0B02h
                                 |
:0040DE88 E893BB0000              Call 00419A20
:0040DE8D 83C408                  add esp, 00000008
:0040DE90 8D442418                lea eax, dword ptr [esp+18]
:0040DE94 8BCC                    mov ecx, esp
:0040DE96 89642434                mov dword ptr [esp+34], esp
:0040DE9A 50                      push eax

* Reference To: MFC42.Ordinal:0217, Ord:0217h
                                 |
:0040DE9B E874BB0000              Call 00419A14
:0040DEA0 8B742434                mov esi, dword ptr [esp+34]
:0040DEA4 8D4C2434                lea ecx, dword ptr [esp+34]
:0040DEA8 51                      push ecx
:0040DEA9 8BCE                    mov ecx, esi
:0040DEAB E80061FFFF              call 00403FB0
                                 ====>算法CALL!进入!以261584为参数运算注册码的后部分!

:0040DEB0 50                      push eax
:0040DEB1 8D4C2418                lea ecx, dword ptr [esp+18]
:0040DEB5 C644246004              mov [esp+60], 04

* Reference To: MFC42.Ordinal:035A, Ord:035Ah
                                 |
:0040DEBA E873BB0000              Call 00419A32
:0040DEBF 8D4C2430                lea ecx, dword ptr [esp+30]
:0040DEC3 885C245C                mov byte ptr [esp+5C], bl

* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                 |
:0040DEC7 E842BB0000              Call 00419A0E
:0040DECC 51                      push ecx
:0040DECD 8D542414                lea edx, dword ptr [esp+14]
:0040DED1 8BCC                    mov ecx, esp
:0040DED3 89642434                mov dword ptr [esp+34], esp
:0040DED7 52                      push edx

* Reference To: MFC42.Ordinal:0217, Ord:0217h
                                 |
:0040DED8 E837BB0000              Call 00419A14
:0040DEDD 8D442434                lea eax, dword ptr [esp+34]
:0040DEE1 8BCE                    mov ecx, esi
:0040DEE3 50                      push eax
:0040DEE4 E8C760FFFF              call 00403FB0
                                 ====>算法CALL!以858278001为参数运算注册码的前部分!


—————————————————————————————————
进入算法CALL:00403910   call 00403FB0
因为2次运算的流程都是一样的,只是参数不同,所以我只是记录了第一次运算的数据。


* Referenced by a CALL at Addresses:
|:00403910   , :0040394D   , :00405A26   , :0040DEAB   , :0040DEE4  
|
:00403FB0 6AFF                    push FFFFFFFF
:00403FB2 6827A74100              push 0041A727
:00403FB7 64A100000000            mov eax, dword ptr fs:[00000000]
:00403FBD 50                      push eax
:00403FBE 64892500000000          mov dword ptr fs:[00000000], esp
:00403FC5 83EC3C                  sub esp, 0000003C
:00403FC8 55                      push ebp
:00403FC9 56                      push esi
:00403FCA 57                      push edi
:00403FCB C744241000000000        mov [esp+10], 00000000
:00403FD3 8D4C240C                lea ecx, dword ptr [esp+0C]
:00403FD7 C744245001000000        mov [esp+50], 00000001

* Reference To: MFC42.Ordinal:021C, Ord:021Ch
                                 |
:00403FDF E8425A0100              Call 00419A26
:00403FE4 8B6C245C                mov ebp, dword ptr [esp+5C]
                                 ====>EBP=261584            机器码的后部分

:00403FE8 83C9FF                  or ecx, FFFFFFFF
:00403FEB 8BFD                    mov edi, ebp
:00403FED 33C0                    xor eax, eax
:00403FEF 33D2                    xor edx, edx
:00403FF1 C644245002              mov [esp+50], 02
:00403FF6 F2                      repnz
:00403FF7 AE                      scasb
:00403FF8 F7D1                    not ecx
:00403FFA 49                      dec ecx
:00403FFB 85C9                    test ecx, ecx
:00403FFD 7E7E                    jle 0040407D
:00403FFF 8BF5                    mov esi, ebp
:00404001 8D442414                lea eax, dword ptr [esp+14]
:00404005 53                      push ebx
:00404006 2BF0                    sub esi, eax
:00404008 B36C                    mov bl, 6C

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040407A(C)
|
:0040400A 8D0C16                  lea ecx, dword ptr [esi+edx]
:0040400D 0FBE440C18              movsx eax, byte ptr [esp+ecx+18]
                                 ====>这个循环就是根据机器码的数字值261584从下面的位置取值!
                                 ====>其实下面相当于一张表。

:00404012 83C0D5                  add eax, FFFFFFD5
:00404015 83F80E                  cmp eax, 0000000E
:00404018 7751                    ja 0040406B
:0040401A FF2485E4404000          jmp dword ptr [4*eax+004040E4]
:00404021 C644141861              mov [esp+edx+18], 61
                           3、   ====>1 取 61         即:字符a

:00404026 EB43                    jmp 0040406B
:00404028 C644141863              mov [esp+edx+18], 63
                           1、   ====>2 取 63         即:字符c

:0040402D EB3C                    jmp 0040406B
:0040402F C644141868              mov [esp+edx+18], 68
:00404034 EB35                    jmp 0040406B
:00404036 C64414186A              mov [esp+edx+18], 6A
                           6、   ====>4 取 6A         即:字符j

:0040403B EB2E                    jmp 0040406B
:0040403D C64414186D              mov [esp+edx+18], 6D
                           4、   ====>5 取 6D         即:字符m

:00404042 EB27                    jmp 0040406B
:00404044 C64414186B              mov [esp+edx+18], 6B
                           2、   ====6 取 6B         即:字符k

:00404049 EB20                    jmp 0040406B
:0040404B C64414187A              mov [esp+edx+18], 7A
:00404050 EB19                    jmp 0040406B
:00404052 C644141878              mov [esp+edx+18], 78
                           5、   ====>8 取 78         即:字符x

:00404057 EB12                    jmp 0040406B
:00404059 C644141877              mov [esp+edx+18], 77
:0040405E EB0B                    jmp 0040406B
:00404060 885C1418                mov byte ptr [esp+edx+18], bl
:00404064 EB05                    jmp 0040406B
:00404066 C64414186E              mov [esp+edx+18], 6E

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00404018(C), :00404026(U), :0040402D(U), :00404034(U), :0040403B(U)
|:00404042(U), :00404049(U), :00404050(U), :00404057(U), :0040405E(U)
|:00404064(U)
|
:0040406B 8BFD                    mov edi, ebp
:0040406D 83C9FF                  or ecx, FFFFFFFF
:00404070 33C0                    xor eax, eax
:00404072 42                      inc edx
:00404073 F2                      repnz
:00404074 AE                      scasb
:00404075 F7D1                    not ecx
:00404077 49                      dec ecx
:00404078 3BD1                    cmp edx, ecx
:0040407A 7C8E                    jl 0040400A
                                 ====>循环从表中取值

:0040407C 5B                      pop ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403FFD(C)
|
:0040407D C644141400              mov [esp+edx+14], 00
:00404082 8D542414                lea edx, dword ptr [esp+14]
               第一次大循环结果   ====>EDX=ckamzj            注册码的后部分
               第二次大循环结果   ====>EDX=zmzclzwwa         注册码的前部分


:00404086 52                      push edx
:00404087 8D442410                lea eax, dword ptr [esp+10]

* Possible StringData Ref from Data Obj ->"%s"
                                 |
:0040408B 6858424200              push 00424258
:00404090 50                      push eax

* Reference To: MFC42.Ordinal:0B02, Ord:0B02h
                                 |
:00404091 E88A590100              Call 00419A20
:00404096 8B742464                mov esi, dword ptr [esp+64]
:0040409A 83C40C                  add esp, 0000000C
:0040409D 8D4C240C                lea ecx, dword ptr [esp+0C]
:004040A1 51                      push ecx
:004040A2 8BCE                    mov ecx, esi

* Reference To: MFC42.Ordinal:0217, Ord:0217h
                                 |
:004040A4 E86B590100              Call 00419A14
:004040A9 C744241001000000        mov [esp+10], 00000001
:004040B1 8D4C240C                lea ecx, dword ptr [esp+0C]
:004040B5 C644245001              mov [esp+50], 01

* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                 |
:004040BA E84F590100              Call 00419A0E
:004040BF 8D4C245C                lea ecx, dword ptr [esp+5C]
:004040C3 C644245000              mov [esp+50], 00

* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                 |
:004040C8 E841590100              Call 00419A0E
:004040CD 8B4C2448                mov ecx, dword ptr [esp+48]
:004040D1 8BC6                    mov eax, esi
:004040D3 5F                      pop edi
:004040D4 5E                      pop esi
:004040D5 5D                      pop ebp
:004040D6 64890D00000000          mov dword ptr fs:[00000000], ecx
:004040DD 83C448                  add esp, 00000048
:004040E0 C20800                  ret 0008


—————————————————————————————————
程序启动后注册时的比较部分!


* Reference To: MFC42.Ordinal:021C, Ord:021Ch
                                 |
:004038B2 E86F610100              Call 00419A26
:004038B7 8D4C2410                lea ecx, dword ptr [esp+10]
:004038BB C784249000000000000000  mov dword ptr [esp+00000090], 00000000

* Reference To: MFC42.Ordinal:021C, Ord:021Ch
                                 |
:004038C6 E85B610100              Call 00419A26
:004038CB 8D442414                lea eax, dword ptr [esp+14]
:004038CF 8BCE                    mov ecx, esi
:004038D1 50                      push eax
:004038D2 68FF030000              push 000003FF
:004038D7 C684249800000001        mov byte ptr [esp+00000098], 01

* Reference To: MFC42.Ordinal:0C19, Ord:0C19h
                                 |
:004038DF E872610100              Call 00419A56
                                 ====>取试炼码的前半部分

:004038E4 8D4C2410                lea ecx, dword ptr [esp+10]
:004038E8 51                      push ecx
:004038E9 6855040000              push 00000455
:004038EE 8BCE                    mov ecx, esi

* Reference To: MFC42.Ordinal:0C19, Ord:0C19h
                                 |
:004038F0 E861610100              Call 00419A56
                                 ====>取试炼码的后半部分

:004038F5 51                      push ecx
                                 ====>ECX=ABCDEF

:004038F6 8D7E64                  lea edi, dword ptr [esi+64]
:004038F9 8BCC                    mov ecx, esp
:004038FB 8964241C                mov dword ptr [esp+1C], esp
:004038FF 57                      push edi

* Reference To: MFC42.Ordinal:0217, Ord:0217h
                                 |
:00403900 E80F610100              Call 00419A14
:00403905 8B5C241C                mov ebx, dword ptr [esp+1C]
:00403909 8D54241C                lea edx, dword ptr [esp+1C]
:0040390D 52                      push edx
:0040390E 8BCB                    mov ecx, ebx
:00403910 E89B060000              call 00403FB0
:00403915 50                      push eax
:00403916 8BCF                    mov ecx, edi
:00403918 C684249400000002        mov byte ptr [esp+00000094], 02

* Reference To: MFC42.Ordinal:035A, Ord:035Ah
                                 |
:00403920 E80D610100              Call 00419A32
:00403925 8D4C2418                lea ecx, dword ptr [esp+18]
:00403929 C684249000000001        mov byte ptr [esp+00000090], 01

* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                 |
:00403931 E8D8600100              Call 00419A0E
:00403936 51                      push ecx
:00403937 8D6E68                  lea ebp, dword ptr [esi+68]
:0040393A 8BCC                    mov ecx, esp
:0040393C 8964241C                mov dword ptr [esp+1C], esp
:00403940 55                      push ebp

* Reference To: MFC42.Ordinal:0217, Ord:0217h
                                 |
:00403941 E8CE600100              Call 00419A14
:00403946 8D44241C                lea eax, dword ptr [esp+1C]
:0040394A 8BCB                    mov ecx, ebx
:0040394C 50                      push eax
:0040394D E85E060000              call 00403FB0
:00403952 50                      push eax
:00403953 8BCD                    mov ecx, ebp
:00403955 C684249400000003        mov byte ptr [esp+00000094], 03

* Reference To: MFC42.Ordinal:035A, Ord:035Ah
                                 |
:0040395D E8D0600100              Call 00419A32
:00403962 8D4C2418                lea ecx, dword ptr [esp+18]
:00403966 C684249000000001        mov byte ptr [esp+00000090], 01

* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                 |
:0040396E E89B600100              Call 00419A0E
:00403973 8B4C2414                mov ecx, dword ptr [esp+14]
                                 ====>ECX=123456789

:00403977 8B3F                    mov edi, dword ptr [edi]
                                 ====>EDI=zmzclzwwa         注册码的前部分

:00403979 51                      push ecx
:0040397A 57                      push edi

* Reference To: MSVCRT._mbscmp, Ord:0159h
                                 |
:0040397B 8B3DC0D64100            mov edi, dword ptr [0041D6C0]
:00403981 FFD7                    call edi
                                 ====>比较注册码的前部分!

:00403983 83C408                  add esp, 00000008
:00403986 85C0                    test eax, eax
:00403988 0F8516010000            jne 00403AA4
                                 ====>跳则OVER!

:0040398E 8B542410                mov edx, dword ptr [esp+10]
                                 ====>EDX=ABCDEF

:00403992 8B6D00                  mov ebp, dword ptr [ebp+00]
                                 ====>EBP=ckamzj            注册码的后部分

:00403995 52                      push edx
:00403996 55                      push ebp
:00403997 FFD7                    call edi
                                 ====>比较注册码的后部分!

:00403999 83C408                  add esp, 00000008
:0040399C 85C0                    test eax, eax
:0040399E 0F8500010000            jne 00403AA4
                                 ====>跳则OVER!

:004039A4 6A20                    push 00000020

* Possible StringData Ref from Data Obj ->"网软眼保 2003"
                                 |
:004039A6 6820414200              push 00424120

* Possible StringData Ref from Data Obj ->"祝贺你!你已经注册成功,重新进入设置项即可看到?
                                       ->"ЧG胛獯蔚淖⒉崧牒突髀胱鞲霰阜荩员阆麓"
                                       ->"蔚拿夥焉妒褂谩T俅胃行荒愕氖褂?"
                                 ====>呵呵,胜利女神!

           …… ……省  略…… ……

* Possible StringData Ref from Data Obj ->".DEFAULT\Software\sharesoft\NetSoft\EyeSafeGur"
                                       ->"ad v2.0"
                                 ====>保存注册信息!

:00403A4A 6830414200              push 00424130
:00403A4F 6803000080              push 80000003
:00403A54 C644347800              mov [esp+esi+78], 00

* Reference To: ADVAPI32.RegCreateKeyExA, Ord:015Fh
                                 |
:00403A59 FF1510D04100            Call dword ptr [0041D010]
:00403A5F 8B542418                mov edx, dword ptr [esp+18]

* Reference To: ADVAPI32.RegSetvalueExA, Ord:0186h
                                 |
:00403A63 8B3D0CD04100            mov edi, dword ptr [0041D00C]
:00403A69 8D4C2420                lea ecx, dword ptr [esp+20]
:00403A6D 55                      push ebp
:00403A6E 51                      push ecx
:00403A6F 6A01                    push 00000001
:00403A71 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Enrol"
                                 |
:00403A73 68A8414200              push 004241A8
:00403A78 52                      push edx
:00403A79 FFD7                    call edi
:00403A7B 8B4C2418                mov ecx, dword ptr [esp+18]
:00403A7F 8D442454                lea eax, dword ptr [esp+54]
:00403A83 56                      push esi
:00403A84 50                      push eax
:00403A85 6A01                    push 00000001
:00403A87 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Enrol2"
                                 |
:00403A89 68A0414200              push 004241A0
:00403A8E 51                      push ecx
:00403A8F FFD7                    call edi
:00403A91 8B542418                mov edx, dword ptr [esp+18]
:00403A95 52                      push edx

* Reference To: ADVAPI32.RegCloseKey, Ord:015Bh
                                 |
:00403A96 FF1508D04100            Call dword ptr [0041D008]
:00403A9C 6A00                    push 00000000

* Reference To: MSVCRT.exit, Ord:0249h
                                 |
:00403A9E FF15C4D64100            Call dword ptr [0041D6C4]

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403988(C), :0040399E(C)
|
:00403AA4 6A20                    push 00000020

* Possible StringData Ref from Data Obj ->"网软眼保 2003"
                                 |
:00403AA6 6820414200              push 00424120

* Possible StringData Ref from Data Obj ->"抱歉,注册码不对,需要帮助请参阅帮助。"
                                 ====>BAD BOY!
                               
:00403AAB 6878414200              push 00424178
:00403AB0 8BCE                    mov ecx, esi

* Reference To: MFC42.Ordinal:1080, Ord:1080h
                                 |
:00403AB2 E8B75F0100              Call 00419A6E


—————————————————————————————————
【算 法  总 结】:


1、取硬盘序列号211C1E09 XOR 12345678=33284871(H)=858278001(D)  得出机器码的前部分

2、取内存大小  0FF74000 SHR A=0003FDD0(H)=261584(D)      得出机器码的后部分

3、机器码中的eye不参与运算。

4、根据机器码的值从表(a、c、h、j、m、k、z、x、w、n)中不同位置取值。

—————————————————————————————————
【KeyMake之{72th}内存注册机】:


中断地址:0040397A
中断次数:1
第一字节:57
指令长度:1

内存方式:EDI   后插入- 作为前后部分的分野。
修改内存:00403986 85C0  test eax, eax  改为33C0

中断地址:00403996
中断次数:1
第一字节:55
指令长度:1

内存方式:EBP              

—————————————————————————————————
【注册信息保存】:


REGEDIT4

[HKEY_USERS\.DEFAULT\Software\sharesoft\NetSoft\EyeSafeGurad v2.0]

"Enrol"="zmzclzwwa"
"Enrol2"="ckamzj"

—————————————————————————————————
【整        理】:


机器码:858278001eye261584
注册码:zmzclzwwa - ckamzj

—————————————————————————————————
   
                               
        ,     _/
       /| _.-~/            \_     ,        青春都一饷
      ( /~   /              \~-._ |\
      `\\  _/                \   ~\ )          忍把浮名
  _-~~~-.)  )__/;;,.          \_  //'
 /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
`~ _( ,_..--\ (     ,;'' /    ~--   /._`\
 /~~//'   /' `~\         ) /--.._, )_  `~
 "  `~"  "      `"      /~'`\    `\\~~\  
                        "     "   "~'  ""

   

                   Cracked By 巢水工作坊——fly [OCN][FCG]

                          2003-04-26  16:45