004A0481 |> 42 ||INC EDX
004A0482 | 48 ||DEC EAX ; giảm giá trị EAX từ 10h
004A0483 |.^ 75 EE |\JNZ SHORT HFF.004A0473 ; lặp cho tới khi EAX = 0
004A0485 |> 837D F8 05 |CMP DWORD PTR SS:[EBP-8],5 ; so sánh số lần xuất hiện với 5 nếu nhỏ hơn thì xét tiếp chữ số tiếp theo
004A0489 | 7E 09 |JLE SHORT HFF.004A0494 ; nếu lớn hơn 5 thì đặt SS: [EBP-8]=-1, còn không thì nhảy tới 004A0494
004A048B | C745 F8 FFFFF>|MOV DWORD PTR SS:[EBP-8],-1
004A0492 | EB 06 |JMP SHORT HFF.004A049A ; nhảy đến gọi nag luôn
004A0494 |> 46 |INC ESI ; chữ số tiếp theo
004A0495 | 83FE 3A |CMP ESI,3A
004A0498 |.^ 75 C3 \JNZ SHORT HFF.004A045D ; lặp cho tới khi ESI = 3A
004A049A |> 837D F8 00 CMP DWORD PTR SS:[EBP-8],0 ; SS: [EBP-8]
= -1 < 0 thì gọi nag; lớn hơn 0 đồng thời < 5 thì không bắn nag
004A049E | 7C 0E JL SHORT HFF.004A04AE ; gọi nag nếu ESI =
-1
004A04A0 | 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004A04A3 | E8 B0FDFFFF CALL HFF.004A0258 ; trace into here
-=== Trace into 3 === -
004A0258 /$ 55 PUSH EBP
… Ở đây có một số lệnh …
004A027C | 8A13 MOV DL,BYTE PTR DS:[EBX] ; DL=kt1 004A027E | E8 FD45F6FF CALL HFF.00404880
004A0283 | 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004A0286 | E8 218CF6FF CALL HFF.00408EAC
004A028B | 8BF0 MOV ESI,EAX ; ESI =kt1
004A028D | 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
004A0290 | 8A53 01 MOV DL,BYTE PTR DS:[EBX+1] ; DL=kt2
004A0293 | E8 E845F6FF CALL HFF.00404880
004A0298 | 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004A029B | E8 0C8CF6FF CALL HFF.00408EAC
004A02A0 | 03F0 ADD ESI,EAX ; ESI = kt1 + kt2
004A02A2 | 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004A02A5 | 8A53 02 MOV DL,BYTE PTR DS:[EBX+2] ; DL=kt3 004A02A8 | E8 D345F6FF CALL HFF.00404880
004A02AD | 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
Trang 2004A02B0 | E8 F78BF6FF CALL HFF.00408EAC
004A02B5 | 03F0 ADD ESI,EAX ; ESI = kt1+kt2+kt3
004A02B7 | 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004A02BA | 8A53 03 MOV DL,BYTE PTR DS:[EBX+3] ; DL=kt4 004A02BD | E8 BE45F6FF CALL HFF.00404880
004A02C2 | 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004A02C5 | E8 E28BF6FF CALL HFF.00408EAC
004A02CA | 03F0 ADD ESI,EAX ; ESI=kt1+kt2+kt3+kt4
004A02CC | A1 9C164B00 MOV EAX,DWORD PTR DS:[4B169C]
004A02D1 | 3B30 CMP ESI,DWORD PTR DS:[EAX] ; F8 tới đây ta biết ss ESI với 16h ( tức là 22 hệ 10)
004A02D3 | 0F85 BA000000 JNZ HFF.004A0393 ; nếu không bằng nhảy tới đ/c làm EAX=0 ==> bắn nag
004A02D9 | 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
004A02DC | 8A53 04 MOV DL,BYTE PTR DS:[EBX+4] ; DL=kt5 004A02DF | E8 9C45F6FF CALL HFF.00404880
004A02E4 | 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
004A02E7 | E8 C08BF6FF CALL HFF.00408EAC
004A02EC | 8BF0 MOV ESI,EAX ; ESI=kt5
004A02EE | 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
004A02F1 | 8A53 07 MOV DL,BYTE PTR DS:[EBX+7] ; DL=kt8 004A02F4 | E8 8745F6FF CALL HFF.00404880
004A02F9 | 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
004A02FC | E8 AB8BF6FF CALL HFF.00408EAC
004A0301 | 03F0 ADD ESI,EAX ; ESI=kt5+kt8
004A0303 | 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
004A0306 | 8A53 0A MOV DL,BYTE PTR DS:[EBX+A] ; DL=kt11 004A0309 | E8 7245F6FF CALL HFF.00404880
004A030E | 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
004A0311 | E8 968BF6FF CALL HFF.00408EAC
004A0316 | 03F0 ADD ESI,EAX ; ESI=kt5+kt8+kt11
004A0318 | 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
004A031B | 8A53 0D MOV DL,BYTE PTR DS:[EBX+D] ; DL=kt14 004A031E | E8 5D45F6FF CALL HFF.00404880
004A0323 | 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
004A0326 | E8 818BF6FF CALL HFF.00408EAC
004A032B | 03F0 ADD ESI,EAX ; ESI=kt5+kt8+kt11+kt14
004A032D | A1 D4164B00 MOV EAX,DWORD PTR DS:[4B16D4]
004A0332 | 3B30 CMP ESI,DWORD PTR DS:[EAX] ; ss ESI với 1Eh ( tức là 30)
Trang 3004A0334 | 75 5D JNZ SHORT HFF.004A0393 ; nếu không = thì EAX=0 ==> bắn nag
004A0336 | 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
004A0339 | 8A53 06 MOV DL,BYTE PTR DS:[EBX+6] ; DL=kt7 004A033C | E8 3F45F6FF CALL HFF.00404880
004A0341 | 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
004A0344 | E8 638BF6FF CALL HFF.00408EAC
004A0349 | 8BF0 MOV ESI,EAX ; ESI=kt7
004A034B | 8D45 D8 LEA EAX,DWORD PTR SS:[EBP-28]
004A034E | 8A53 09 MOV DL,BYTE PTR DS:[EBX+9] ; DL=kt10 004A0351 | E8 2A45F6FF CALL HFF.00404880
004A0356 | 8B45 D8 MOV EAX,DWORD PTR SS:[EBP-28]
004A0359 | E8 4E8BF6FF CALL HFF.00408EAC
004A035E | 03F0 ADD ESI,EAX ; ESI=kt7+kt10
004A0360 | 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
004A0363 | 8A53 0C MOV DL,BYTE PTR DS:[EBX+C] ; DL=kt13 004A0366 | E8 1545F6FF CALL HFF.00404880
004A036B | 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C]
004A036E | E8 398BF6FF CALL HFF.00408EAC
004A0373 | 03F0 ADD ESI,EAX ; ESI=kt7+kt10+kt13
004A0375 | 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30]
004A0378 | 8A53 0F MOV DL,BYTE PTR DS:[EBX+F] ; DL=kt16 004A037B | E8 0045F6FF CALL HFF.00404880
004A0380 | 8B45 D0 MOV EAX,DWORD PTR SS:[EBP-30]
004A0383 | E8 248BF6FF CALL HFF.00408EAC
004A0388 | 03F0 ADD ESI,EAX ; ESI=kt7+kt10+kt13+kt16
004A038A | A1 B4134B00 MOV EAX,DWORD PTR DS:[4B13B4]
004A038F | 3B30 CMP ESI,DWORD PTR DS:[EAX] ; ss ESI với 8h (tức là 8)
004A0391 | 74 04 JE SHORT HFF.004A0397 ; nếu không bằng bắn nag
004A0393 |> 33C0 XOR EAX,EAX
004A0395 | EB 02 JMP SHORT HFF.004A0399
004A0397 |> B0 01 MOV AL,1
004A0399 |> 8BD8 MOV EBX,EAX
004A039B | 33C0 XOR EAX,EAX
004A039D | 5A POP EDX
004A039E | 59 POP ECX
004A039F | 59 POP ECX
004A03A0 | 64:8910 MOV DWORD PTR FS:[EAX],EDX
Trang 4004A03A3 | 68 BD034A00 PUSH HFF.004A03BD
004A03A8 |> 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30]
004A03AB | BA 0C000000 MOV EDX,0C
004A03B0 | E8 0743F6FF CALL HFF.004046BC
004A03B5 \ C3 RETN
-=== End of trace into 3 === -
004A04A8 | 84C0 TEST AL,AL
004A04AA | 74 02 JE SHORT HFF.004A04AE
004A04AC | B3 01 MOV BL,1
004A04AE |> 33C0 XOR EAX,EAX
004A04B0 | 5A POP EDX
004A04B1 | 59 POP ECX
004A04B2 | 59 POP ECX
004A04B3 | 64:8910 MOV DWORD PTR FS:[EAX],EDX
004A04B6 | 68 D8044A00 PUSH HFF.004A04D8
004A04BB |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004A04BE | BA 02000000 MOV EDX,2
004A04C3 | E8 F441F6FF CALL HFF.004046BC
004A04C8 | 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004A04CB | E8 C841F6FF CALL HFF.00404698
004A04D0 \ C3 RETN
-=== End of trace into 1 === -
004A0EBD | 84C0 TEST AL,AL ; nếu là RS thì AL khác 0 còn nếu là FS thì AL=0
004A0EBF | 74 1F JE SHORT HFF.004A0EE0 ; AL=0 nhảy ==> gọi nag
004A0EC1 | 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004A0EC4 | E8 6BF8FFFF CALL HFF.004A0734
004A0EC9 | 6A 00 PUSH 0 ; /Arg1 = 00000000 004A0ECB | 66:8B0D 180F4>MOV CX,WORD PTR DS:[4A0F18] ; | 004A0ED2 | B2 02 MOV DL,2 ; |
004A0ED4 | B8 240F4A00 MOV EAX,HFF.004A0F24 ; |ASCII
"The registration code is correct
Thank you."
004A0ED9 | E8 F212F9FF CALL HFF.004321D0 ;
\HFF.004321D0 ;; gọi thông báo đăng ký thành công
004A0EDE | EB 15 JMP SHORT HFF.004A0EF5
004A0EE0 |> 6A 00 PUSH 0 ; /Arg1 = 00000000
Trang 5004A0EE2 | 66:8B0D 180F4>MOV CX,WORD PTR DS:[4A0F18] ; | 004A0EE9 | B2 01 MOV DL,1 ; |
004A0EEB | B8 5C0F4A00 MOV EAX,HFF.004A0F5C ; |ASCII
"The registration code is incorrect."
004A0EF0 | E8 DB12F9FF CALL HFF.004321D0 ;
\HFF.004321D0 ;; gọi nag
… Ở đây có một số dòng …
004A0F0A \ C3 RETN
*** Chỗ này tôi không kiểm tra kỹ , vì không có nhiều thời, bạn nào rỗi thì coi giúp với tôi với , nếu tôi còn gì thiếu xót thì mong nhận được góp ý … thanx a lot Code:
004A043C | E8 1F2EF6FF CALL HFF.00403260 ;
=== Trace into 2 === -
00403260 /$ 53 PUSH EBX
… Có một số lệnh ở đây …
00403273 |> 8A1E /MOV BL,BYTE PTR DS:[ESI] ;bắt đầu vòng lặp, BL= x1[1]
00403275 | 46 |INC ESI ; trỏ tới x1[2]
00403276 | 80FB 20 |CMP BL,20 ;so sánh x1[1] với 20h
00403279 |.^ 74 F8 \JE SHORT HFF.00403273 ; nếu = 20h thì lặp, nếu khác thì kết thúc lặp
0040327B | B5 00 MOV CH,0
0040327D | 80FB 2D CMP BL,2D
00403280 | 74 62 JE SHORT HFF.004032E4
00403282 | 80FB 2B CMP BL,2B
00403285 | 74 5F JE SHORT HFF.004032E6
00403287 |> 80FB 24 CMP BL,24
0040328A | 74 5F JE SHORT HFF.004032EB
0040328C | 80FB 78 CMP BL,78
0040328F | 74 5A JE SHORT HFF.004032EB
00403291 | 80FB 58 CMP BL,58
00403294 | 74 55 JE SHORT HFF.004032EB
00403296 | 80FB 30 CMP BL,30
00403299 | 75 13 JNZ SHORT HFF.004032AE ; chỗ này nhảy
0040329B | 8A1E MOV BL,BYTE PTR DS:[ESI]
0040329D | 46 INC ESI
0040329E | 80FB 78 CMP BL,78
004032A1 | 74 48 JE SHORT HFF.004032EB
004032A3 | 80FB 58 CMP BL,58
004032A6 | 74 43 JE SHORT HFF.004032EB
Trang 6004032A8 | 84DB TEST BL,BL