學友計算機等級考試試題彙編2002A+

看雪資料發表於2003-03-01

簡單演算法――學友計算機等級考試試題彙編2002A+


下載頁面:  http://www.skycn.com/soft/8393.html
軟體大小:  769 KB
軟體語言:  簡體中文
軟體類別:  國產軟體 / 共享版 / 考試系統
應用平臺:  Win9x/NT/2000/XP
加入時間:  2002-11-05 15:25:55
下載次數:  11521
推薦等級:  ***

【軟體簡介】:這是一個全國計算機等級考試輔助學習軟體,本套軟體對使用者的計算機配置要求極低,能正常執行Win98的電腦均可流暢的執行它,且支援最新的Windows XP作業系統。本套軟體適用於個人自學、學校或電腦培訓部教學時使用,當前的2002A+版本已經包含了 一級Windows考試從 1999年至2002年上半年 的考試試題,二級考試中的 C語言 和 FOXBASE 這兩門程式設計語言從 1994年至2002年上半年 的考試試題,題庫中的試題數量達到1870多題,均為百分之百的考試試卷原題。本軟體的主要功能:使用者可根據自己的需要選擇每種程式設計語言在某年的4月份或9月份的考試試卷,並可在答卷過程中隨時開啟[試卷評分皮膚],系統將自動對當前試卷進行評分,並顯示出每道試題的對錯情況和使用者所選擇的答案以及標準答案,此時使用者仍可繼續答題,對做錯的試題還可加以改正,以利於加深使用者對做錯的試題的印象,此[試卷評分皮膚]可被隨時關閉。使用者可隨意修改試題顯示區域的背景色或前景色。使用者在檢視試卷評分後如想退出答卷環境則可使用交卷功能。交卷後即可再選做其它試卷。

【軟體限制】:功能限制

【作者宣告】:初學Crack,只是感興趣,沒有其它目的。失誤之處敬請諸位大俠賜教!

【破解工具】:TRW2000娃娃修改版、FI2.5、AspackDie、W32Dasm8.93黃金版

―――――――――――――――――――――――――――――
【過    程】:


Windjks.exe為ASPACK 2.12殼。用AspackDie脫之。反彙編。

TRW2000裝入目標程式。
填入試煉碼(即:假碼,試煉碼是我的習慣稱呼):13572468
注意:至少要8位!!!

CTR+N切入TRW,下萬能斷點:BPX HMEMCPY,F5返回,點註冊,立即攔下。

BD,暫停斷點。
下PMODULE指令,返回程式領空,按F12七次,DELPHI編的東西許多都是按F12七次到達核心。

―――――――――――――――――――――――――――――
F10走,多看看,多留意。
請看:

:004BB1BA E8A999F4FF              call 00404B68
:004BB1BF 83F808                  cmp eax, 00000008
                                 ====>比較試煉碼位數是否不小於8位?

:004BB1C2 7D2C                    jge 004BB1F0
                                 ====>不跳則OVER!

:004BB1C4 8D45FC                  lea eax, dword ptr [ebp-04]
:004BB1C7 BA0A000000              mov edx, 0000000A
:004BB1CC E81B9DF4FF              call 00404EEC
:004BB1D1 BB01000000              mov ebx, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BB1E9(C)
|
:004BB1D6 8D45FC                  lea eax, dword ptr [ebp-04]
:004BB1D9 E8DA9BF4FF              call 00404DB8
:004BB1DE 6BD30D                  imul edx, ebx, 0000000D
:004BB1E1 885418FF                mov byte ptr [eax+ebx-01], dl
:004BB1E5 43                      inc ebx
:004BB1E6 83FB0B                  cmp ebx, 0000000B
:004BB1E9 75EB                    jne 004BB1D6
:004BB1EB E9A7000000              jmp 004BB297

跳到這:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BB1C2(C)
|
:004BB1F0 8D55E4                  lea edx, dword ptr [ebp-1C]
:004BB1F3 8B862C030000            mov eax, dword ptr [esi+0000032C]
:004BB1F9 E84A55F8FF              call 00440748
:004BB1FE 8B45E4                  mov eax, dword ptr [ebp-1C]
:004BB201 8D55E8                  lea edx, dword ptr [ebp-18]
:004BB204 E81BDDF4FF              call 00408F24
:004BB209 8B45E8                  mov eax, dword ptr [ebp-18]
:004BB20C 8D55EC                  lea edx, dword ptr [ebp-14]
:004BB20F E8DCDCF4FF              call 00408EF0
:004BB214 8B45EC                  mov eax, dword ptr [ebp-14]
:004BB217 50                      push eax
:004BB218 8D55E0                  lea edx, dword ptr [ebp-20]
:004BB21B 8BC6                    mov eax, esi
:004BB21D E836FBFFFF              call 004BAD58
                                 ====>演算法CALL!

:004BB222 8B55E0                  mov edx, dword ptr [ebp-20]
:004BB225 58                      pop eax

:004BB226 E8819AF4FF              call 00404CAC
                                 ====>比較註冊碼!

:004BB22B 7543                    jne 004BB270
:004BB22D 8BC6                    mov eax, esi
:004BB22F E848FEFFFF              call 004BB07C
:004BB234 8D45FC                  lea eax, dword ptr [ebp-04]
:004BB237 BA0A000000              mov edx, 0000000A
:004BB23C E8AB9CF4FF              call 00404EEC
:004BB241 BB01000000              mov ebx, 00000001

―――――――――――――――――――――――――――――

F8進入演算法CALL:004BB21D  call 004BAD58
即比較註冊碼的上一個CALL


* Referenced by a CALL at Address:

|:004BB21D  
|
:004BAD58 55                      push ebp
:004BAD59 8BEC                    mov ebp, esp
:004BAD5B B906000000              mov ecx, 00000006

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BAD65(C)
|
:004BAD60 6A00                    push 00000000
:004BAD62 6A00                    push 00000000
:004BAD64 49                      dec ecx
:004BAD65 75F9                    jne 004BAD60
:004BAD67 51                      push ecx
:004BAD68 53                      push ebx
:004BAD69 56                      push esi
:004BAD6A 8BF2                    mov esi, edx
:004BAD6C 8BD8                    mov ebx, eax
:004BAD6E 33C0                    xor eax, eax
:004BAD70 55                      push ebp
:004BAD71 68D3AE4B00              push 004BAED3
:004BAD76 64FF30                  push dword ptr fs:[eax]
:004BAD79 648920                  mov dword ptr fs:[eax], esp
:004BAD7C 8D55F8                  lea edx, dword ptr [ebp-08]
:004BAD7F 8BC3                    mov eax, ebx
:004BAD81 E80AFDFFFF              call 004BAA90
:004BAD86 8D45FC                  lea eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"8888"
                                 ====>注意此數!
                                 |
:004BAD89 BAE8AE4B00              mov edx, 004BAEE8
                                 ====>8888移入EDX

:004BAD8E E8B59BF4FF              call 00404948
:004BAD93 8D45FC                  lea eax, dword ptr [ebp-04]

:004BAD96 E81DA0F4FF              call 00404DB8
                                 ====>此CALL取得你的BIOS的日期,
我的機子是“老古董”了,BIOS日期是020598,即98年5月2日的

:004BAD9B 8B55F8                  mov edx, dword ptr [ebp-08]
                                 ====>EDX=020598

:004BAD9E 8A5201                  mov dl, byte ptr [edx+01]
                                 ====>EDX的第二位移入DL ?DL=32(即2)

:004BADA1 8810                    mov byte ptr [eax], dl
                                 ====>把DL移入[EAX],即2移入[EAX]

:004BADA3 8D45FC                  lea eax, dword ptr [ebp-04]
                                 ====>D EAX=2888,裝入[EBP-04]
                                    即8888的第一位“讓位”給2了

:004BADA6 E80DA0F4FF              call 00404DB8
:004BADAB 8B55F8                  mov edx, dword ptr [ebp-08]
                                 ====>[EBP-08]裡放的BIOS日期,
                                  即把 020598又移入EDX

:004BADAE 8A5203                  mov dl, byte ptr [edx+03]
                                 ====>把EDX的第四位移入DL,DL=5

:004BADB1 885001                  mov byte ptr [eax+01], dl
                                 ====>把5移入[EAX+01]

:004BADB4 8D45F4                  lea eax, dword ptr [ebp-0C]
                                 ====>D EAX=2588,裝入[EBP-0C]
                                 即2888的第二位又“讓”給5了

:004BADB7 8B55FC                  mov edx, dword ptr [ebp-04]
                                 ====>此時[EBP-4]=2588


:004BADBA 8A5201                  mov dl, byte ptr [edx+01]
                                 ====>把2588的第二位“5”移入DL,DL=35

:004BADBD E8CE9CF4FF              call 00404A90
:004BADC2 8B45F4                  mov eax, dword ptr [ebp-0C]
:004BADC5 E8BEE4F4FF              call 00409288
:004BADCA 8BD8                    mov ebx, eax
                                 ====>EAX=5,即上面DL=35的HEX值對應的字元
                                      把5移入EBX

:004BADCC 83C348                  add ebx, 00000048
                                 ====>EBX=5+48=4D,16進位制相加。
                         
:004BADCF 8D45FC                  lea eax, dword ptr [ebp-04]
:004BADD2 E8E19FF4FF              call 00404DB8
                                 ====>4D對應的字元為M


:004BADD7 885802                  mov byte ptr [eax+02], bl
                                 ====>把BL中的M移入[EAX+2]

:004BADDA 8D45F0                  lea eax, dword ptr [ebp-10]
                                 ====>EAX=25M8
                                 ====>即2588的第三位8變為M了

:004BADDD 8B55FC                  mov edx, dword ptr [ebp-04]
                                 ====>EDX=25M8

:004BADE0 8A12                    mov dl, byte ptr [edx]
                                 ====>DL=32,即2的HEX值

:004BADE2 E8A99CF4FF              call 00404A90
:004BADE7 8B45F0                  mov eax, dword ptr [ebp-10]
:004BADEA E899E4F4FF              call 00409288
:004BADEF 8BD8                    mov ebx, eax
                                 ====>EAX=2,移入EBX

:004BADF1 83C343                  add ebx, 00000043
                                  ====>EBX=2+43=45,16進位制相加

:004BADF4 8D45FC                  lea eax, dword ptr [ebp-04]
:004BADF7 E8BC9FF4FF              call 00404DB8
                                 ====>此CALL把45轉化為對應的字元:E

:004BADFC 885803                  mov byte ptr [eax+03], bl
                                 ====>把BL中的E移入[EAX+03]

:004BADFF BBC5440D00              mov ebx, 000D44C5
                                 ====>D44C5移入EBX。注意程式給的此數!

:004BAE04 8D45E8                  lea eax, dword ptr [ebp-18]
:004BAE07 8B55FC                  mov edx, dword ptr [ebp-04]
                                 ====>25ME 移入EDX

:004BAE0A 8A5202                  mov dl, byte ptr [edx+02]
                                 ====>把EDX的第三個字元移入DL,即M

:004BAE0D 885001                  mov byte ptr [eax+01], dl
                                 ====>M 移入[EAX+01]
:004BAE10 C60001                  mov byte ptr [eax], 01
:004BAE13 8D55E8                  lea edx, dword ptr [ebp-18]
:004BAE16 8D45E4                  lea eax, dword ptr [ebp-1C]
:004BAE19 E8D681F4FF              call 00402FF4
:004BAE1E 8D45E0                  lea eax, dword ptr [ebp-20]
:004BAE21 8B55FC                  mov edx, dword ptr [ebp-04]
                                 ====>25ME移入 EDX
:004BAE24 8A5203                  mov dl, byte ptr [edx+03]
                                 ====>25ME的第四位移入DL,即E

:004BAE27 885001                  mov byte ptr [eax+01], dl
                                 ====>E 移入[EAX+01]

:004BAE2A C60001                  mov byte ptr [eax], 01
:004BAE2D 8D55E0                  lea edx, dword ptr [ebp-20]
:004BAE30 8D45E4                  lea eax, dword ptr [ebp-1C]
:004BAE33 B102                    mov cl, 02
:004BAE35 E88A81F4FF              call 00402FC4
:004BAE3A 8D55E4                  lea edx, dword ptr [ebp-1C]
:004BAE3D 8D45EC                  lea eax, dword ptr [ebp-14]
:004BAE40 E8C79CF4FF              call 00404B0C
                                 ====>此CALL取得上面兩次移入的字元ME

:004BAE45 FF75EC                  push [ebp-14]                          
                                 ====>DD*(EBP-14)=ME
                                 ********** 真碼的第一部分!!!

                        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

:004BAE48 8B45F8                  mov eax, dword ptr [ebp-08]
                                 ====>D EAX=020598 我的BIOS日期
:004BAE4B E838E4F4FF              call 00409288
                                 ====>?EAX=5076(十進位制=20598)

:004BAE50 33C3                    xor eax, ebx 異或運算
                                 ====>EBX=D44C5,即004BADFF處移入的值
                                 ====>5076 XOR D44C5=D14B3
                  **********  D14B3的十進位制是857267,真碼的第2部分!!!

                        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

:004BAE52 8D55D4                  lea edx, dword ptr [ebp-2C]
:004BAE55 E8CAE3F4FF              call 00409224
:004BAE5A 8B45D4                  mov eax, dword ptr [ebp-2C]
:004BAE5D 8D55D8                  lea edx, dword ptr [ebp-28]
:004BAE60 E8BFE0F4FF              call 00408F24
:004BAE65 8B45D8                  mov eax, dword ptr [ebp-28]
:004BAE68 8D55DC                  lea edx, dword ptr [ebp-24]
:004BAE6B E880E0F4FF              call 00408EF0
:004BAE70 FF75DC                  push [ebp-24]
:004BAE73 8D45D0                  lea eax, dword ptr [ebp-30]
:004BAE76 8B55FC                  mov edx, dword ptr [ebp-04]
                                 ====>25ME移入EDX
:004BAE79 8A5201                  mov dl, byte ptr [edx+01]
                                 ====>第二位 5 移入DL

:004BAE7C E80F9CF4FF              call 00404A90
:004BAE81 FF75D0                  push [ebp-30]
                                 ====>DD*(EBP-30)=5
                              ********** 真碼的第三部分!!!

                        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

:004BAE84 8D45CC                  lea eax, dword ptr [ebp-34]
:004BAE87 8B55FC                  mov edx, dword ptr [ebp-04]
:004BAE8A 8A12                    mov dl, byte ptr [edx]
                                 ====>DL=32,即2
:004BAE8C E8FF9BF4FF              call 00404A90
:004BAE91 FF75CC                  push [ebp-34]
                                 ====>DD*(EBP-34)=2
                              **********  真碼的第四部分!!!

                        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

:004BAE94 8D45F8                  lea eax, dword ptr [ebp-08]
:004BAE97 BA04000000              mov edx, 00000004
:004BAE9C E8879DF4FF              call 00404C28
                                 ====>此CALL把1、2、3、4部分連線起來!
                                 即把ME、857267、5、2-->ME85726752
                                 放在[EBP-08]

:004BAEA1 8BC6                    mov eax, esi
:004BAEA3 8B55F8                  mov edx, dword ptr [ebp-08]
                                 ====>真碼移入EDX
:004BAEA6 E8599AF4FF              call 00404904

―――――――――――――――――――――――――――――

演算法總結:


   一、程式先給出4個字元:8888

      取得你的機子的BIOS日期。如我的是020598,從中取第二個、第四個數,移入“8888”的第一、第二位。8888-->2588。

      把新得出的2588的第二位“5”作為16進位制數和程式給的48相加。5+48=4D,4D所對應的字元為“M”。把M移入2588的第三位,2588-->25M8
 
      同樣,取第一位“2”作為16進位制數和程式給的43相加。2+43=45,45所對應的字元為“E”。把E移入2588的第三位,25M8-->25ME。
      至此:8888-->25ME。

   二、取新得出的25ME的第三、四位作為真碼的第一、二位。即:ME

   三、取BIOS日期作為16進位制數與程式給的 D44C5 進行異或運算,5076 XOR D44C5=D14B3。
       D14B3的十進位制是857267,真碼的第2部分。

   四、取25ME的第二位“5”,作為真碼的第三部分。

   五、取25ME的第一位“2”,作為真碼的第四部分。

最後得出完整的真碼:ME85726752

―――――――――――――――――――――――――――――
記得 有聲有色 7.0 也是把BIOS的日期作為一個主要引數。

BIOS日期:
REGEDIT4

[HKEY_LOCAL_MACHINE\Enum\Root\*PNP0C01\0000]

"BIOSName"="Award"
"BIOSVersion"="Award Modular BIOS v4.51PG"
"BIOSDate"="02/05/98"

―――――――――――――――――――――――――――――

F8進入比較CALL:004BB226  call 00404CAC


:00404CAC 53                      push ebx
:00404CAD 56                      push esi
:00404CAE 57                      push edi
:00404CAF 89C6                    mov esi, eax
:00404CB1 89D7                    mov edi, edx

:00404CB3 39D0                    cmp eax, edx
                                 ====>比較了!
                                 ====>D EAX=13572468(假碼)
                                 ====>D EDX=真碼!!!

:00404CB5 0F848F000000            je 00404D4A
:00404CBB 85F6                    test esi, esi
:00404CBD 7468                    je 00404D27
:00404CBF 85FF                    test edi, edi
:00404CC1 746B                    je 00404D2E
:00404CC3 8B46FC                  mov eax, dword ptr [esi-04]
:00404CC6 8B57FC                  mov edx, dword ptr [edi-04]
:00404CC9 29D0                    sub eax, edx
:00404CCB 7702                    ja 00404CCF

―――――――――――――――――――――――――――――
【KeyMake之記憶體序號產生器】:

中斷地址:406751
中斷次數:1
第一位元組:51
指令長度:1

中斷地址:406751
中斷次數:1
第一位元組:51
指令長度:1

記憶體方式:ECX              


―――――――――――――――――――――――――――――
【註冊資訊儲存】:

C:\WINDOWS\INF 下有一個檔案:
{F982X26B-19PA-81C5-32EG-O096345608NK}
沒有字尾名,刪之即變回未註冊版。

―――――――――――――――――――――――――――――
【整        理】:

機器碼:28771035
真碼:ME85726752


―――――――――――――――――――――――――――――

   
                   Cracked By 巢水工作坊――fly【OCN】

                          2003-2-4
                       

相關文章