0040119D |. F3:AB REP STOS DWORD PTR ES:[EDI] 0040119F |. AA STOS BYTE PTR ES:[EDI] ;| 004011A0 |. 8BBC24 20020> MOV EDI,DWORD PTR SS:[ESP+220] ;| 004011A7 |. 68 05040000 PUSH 405 ;|ControlID=405(1029.) 004011AC |. 57 PUSH EDI ;|hWnd=00020276(‘Enter Registration Info’,class=’#32770’,parent=0003024C) 004011AD |. 8B35 D892400> MOV ESI,DWORD PTR DS:[<USER32.GetDlgItemTextA>] ;|USER32.GetDlgItemTextA 004011B3 |. FFD6 CALL NEAR ESI ;\GetDlgItemTextA 004011B5 |. 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10] <== Fake name 004011B9 |. 68 00010000 PUSH 100 ;/Count=100(256.) 004011BE |. 50 PUSH EAX ;|Buffer=0012F330 004011BF |. 68 06040000 PUSH 406 ;|ControlID=406(1030.) 004011C4 |. 57 PUSH EDI ;|hWnd=0004026E(‘Enter Registration Info’,class=’#32770’,parent=00040278) 004011C5 |. FFD6 CALL NEAR ESI ;\GetDlgItemTextA 004011C7 |. 68 30604000 PUSH STARTCLN.00406030 004011CC |. 68 30614000 PUSH STARTCLN.00406130 ;ASCII”the_lighthouse” 004011D1 |. E8 AA000000 CALL STARTCLN.00401280 ;Calculation <== Trace Into === Trace Into === NOTE Trong chương trình real serial là 1 chuỗi số gồm 4 số ghép lại, do đó trong phần calculation này sẽ có 4 đoạn code dùng để tính 4 serial nhỏ, mỗi serial được tính xong sẽ lần lượt được add vào ESI và chúng được nối với nhau bằng dấu “-“ NOTE 00401280 /$ 81EC 0001000> SUB ESP,100 00401286 |. A0 64624000 MOV AL,BYTE PTR DS:[406264] 0040128B |. 884424 00 MOV BYTE PTR SS:[ESP],AL 0040128F |. 53 PUSH EBX 00401290 |. 56 PUSH ESI 00401291 |. 33C0 XOR EAX,EAX 00401293 |. 57 PUSH EDI 00401294 |. B9 3F000000 MOV ECX,3F 00401299 |. 8D7C24 0D LEA EDI,DWORD PTR SS:[ESP+D] 0040129D |. 55 PUSH EBP 0040129E |. F3:AB REP STOS DWORD PTR ES:[EDI] 004012A0 |. 66:AB STOS WORD PTR ES:[EDI] 004012A2 |. BD 6A000000 MOV EBP,6A 004012A7 |. 68 64624000 PUSH STARTCLN.00406264 ;|Format=”” 004012AC |. AA STOS BYTE PTR ES:[EDI] ;| 004012AD |. 8BB424 1C010> MOV ESI,DWORD PTR SS:[ESP+11C] ;|STARTCLN.00406030 004012B4 |. 56 PUSH ESI ;|s=STARTCLN.00406030 004012B5 |. FF15 D492400> CALL NEAR DWORD PTR DS:[<&USER32.wsprintfA>] ;\wsprintfA 004012BB |. 8B9C24 1C010> MOV EBX,DWORD PTR SS:[ESP+11C] ;STARTCLN.00406130 004012C2 |. 83C4 08 ADD ESP,8 004012C5 |. 8BC3 MOV EAX,EBX ;STARTCLN.00406130 004012C7 |. 8B3D DC92400> MOV EDI,DWORD PTR DS:[<&USER32.CharNextA>] ;USER32.CharNextA 004012CD |. 803B 00 CMP BYTE PTR DS:[EBX],0 004012D0 |./74 0F JE SHORT STARTCLN.004012E1 Đoạn code tính số serial 1 004012D2 |> 0FBE08 /MOVSX ECX,BYTE PTR DS:[EAX] 004012D5 |. 50 |PUSH EAX 004012D6 |. 8DC64D 00 |LEA EBP,DWORD PTR SS:[EBP+ECX*2] 004012DA |. FFD7 |CALL NEAR EDI ;USER32.CharNextA 004012DC |. 8038 00 |CMP BYTE PTR DS:[EAX],0 004012DF |.\75 F1 \JNZ SHORT STARTCLN.004012D2 004012E1 |> 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10] 004012E5 |. 55 PUSH EBP ;/<%d>=C22(3106.) 004012E6 |. 68 74624000 PUSH STARTCLN.00406274 ;|Format=”%d-“ 004012EB |. 50 PUSH EAX ;|s=0012F214 004012EC |. FF15 D492400> CALL NEAR DWORD PTR DS:[<&USER32.wsprintfA>] ;/wsprintfA Đoạn code tính số serial 1 004012F2 |. 8D4424 1C LEA EAX,DWORD PTR SS:[ESP+1C] 004012F6 |. 83C4 0C ADD ESP,0C 004012F9 |. 50 PUSH EAX ;/StringToAdd=”3106-“ 004012FA |. 56 PUSH ESI ;|ConcatString=”” 004012FB |. FF15 3C92400> CALL NEAR DWORD PTR DS:[<&KERNEL32.lstrcatA>] ;\lstrcatA 00401301 |. 8BC3 MOV EAX,EBX ;STARTCLN.00406130 00401303 |. 803B 00 CMP BYTE PTR DS:[EBX],0 00401306 |./74 12 JE SHORT STARTCLN.0040131A Đoạn code tính số serial 2 00401308 |> 0FBE08 /MOVSX ECX,BYTE PTR DS:[EAX] 0040130B |. 03C9 |ADD ECX,ECX 0040130D |. 50 |PUSH EAX 0040130E |. 8D14C9 |LEA EDX,DWORD PTR DS:[ECX+ECX*8] 00401311 |. 03EA |ADD EBP,EDX 00401313 |. FFD7 |CALL NEAR EDI 00401315 |. 803800 |CMP BYTE PTR DS:[EAX],0 00401318 |.\75 EE \JNZ SHORT STARTCLN.00401308 0040131A |> 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10] 0040131E |. 55 PUSH EBP ;/<%d>=759A(30106.) 0040131F |. 68 74624000 PUSH STARTCLN.00406274 ;|Format=”%d-” 00401324 |. 50 PUSH EAX ;|s=0012F214 00401325 |. FF15 D492400> CALL NEAR DWORD PTR DS:[<&USER32.wsprintfA>] ;\wsprintfA Đoạn code tính số serial 2 0040132B |. 8D4424 1C LEA EAX,DWORD PTR SS:[ESP+1C] 0040132F |. 83C4 0C ADD ESP,0C 00401332 |. 50 PUSH EAX ;/StringToAdd=”30106-“ 00401333 |. 56 PUSH ESI ;|ConcatString=”3106-“ 00401334 |. FF15 3C92400> CALL NEAR DWORD PTR DS:[<&KERNEL32.lstrcatA>] ;\lstrcatA 0040133A |. 8BC3 MOV EAX,EBX ;STARTCLN.00406130 0040133C |. 803B 00 CMP BYTE PTR DS:[EBX],0 0040133F |./74 18 JE SHORT STARTCLN.00401359 Đoạn code tính số serial 3 00401341 |> 0FBE08 /MOVSX ECX,BYTE PTR DS:[EAX] 00401344 |. 50 |PUSH EAX 00401345 |. 8D2C89 |LEA EBP,DWORD PTR DS:[ECX+ECX*4] 00401348 |. 8D0C69 |LEA ECX,DWORD PTR DS:[ECX+EBP*2] 0040134B |. 8D2C4D 01000> |LEA EBP,DWORD PTR DS:[ECX*2+1] 00401352 |. FFD7 |CALL NEAR EDI 00401354 |. 8038 00 |CMP BYTE PTR DS:[EAX],0 00401357 |.\75 E8 \JNZ SHORT STARTCLN.00401341 00401359 |> 8D4424 10 LEA EAX,DWORD PTR SS:[EBP+10] 0040135D |. 55 PUSH EBP ;/<%d>=8AF(2223.) 0040135E |. 68 74624000 PUSH STARTCLN.00406274 ;|Format=”%d-“ 00401363 |. 50 PUSH EAX ;|s=0012F214 00401364 |. FF15 D492400> CALL NEAR DWORD PTR DS:[<&USER32.wsprintfA>] ;\wsprintfA Đoạn code tính số serial 3 0040136A |. 8D4424 1C LEA EAX,DWORD PTR SS:[ESP+1C] 0040136E |. 83C4 0C ADD ESP,0C 00401371 |. 50 PUSH EAX ;/StringToAdd=”2223-“ 00401372 |. 56 PUSH ESI ;|ConcatString=”3106-30106” 00401373 |. FF15 3C92400> CALL NEAR DWORD PTR DS:[<&KERNEL32.lstrcatA>] ;\lstrcatA 00401379 |. 8BC3 MOV EAX,EBX ;STARTCLN.00406130 0040137B |. 803B 00 CMP BYTE PTR DS:[EBX],0 0040137E |./74 12 JE SHORT STARTCLN.00401392 Đoạn code tính số serial 4 00401380 |> 0FBE08 /MOVSX ECX,BYTE PTR DS:[EAX] 00401383 |. 50 |PUSH EAX ;STARTCLN.00406130 00401384 |. 8D2C8D 1D000> |LEA EBP,DWORD PTR DS:[ECX*4+10] 0040138B |. FFD7 |CALL NEAR EDI ;USER32.CharNext 0040138D |. 8038 00 |CMP BYTE PTR DS:[EAX],0 00401390 |.\75 EE \JNZ SHORT STARTCLN.00401380 00401392 |> 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10] 00401396 |. 55 PUSH EBP ;/<%d>=1B1(433.) 00401397 |. 68 70624000 PUSH STARTCLN.00406270 ;|Format=”%d” 0040139C |. 50 PUSH EAX ;|s=0012F214 0040139D |. FF15 D492400> CALL NEAR DWORD PTR DS:[<&USER32.wsprintfA>] ;\wsprintfA Đoạn code tính số serial 4 004013A3 |. 8D4424 1C LEA EAX,DWORD PTR SS:[ESP+1C] 004013A7 |. 83C4 0C ADD ESP,0C 004013AA |. 50 PUSH EAX ;/StringToAdd=”433“ 004013AB |. 56 PUSH ESI ;|ConcatString=”3106-30106- 2223-“ 004013AC |. FF15 3C92400> CALL NEAR DWORD PTR DS:[<&KERNEL32.lstrcatA>] ;\lstrcatA 004013B2 |. 5D POP EBP ;0012F568 004013B3 |. 5F POP EDI ;USER32.CharNextA 004013B4 |. 5E POP ESI ;USER32.GetDlgItemTextA 004013B5 |. 5B POP EBX ;STARTCLN.00406130 004013B6 |. 81C4 0001000> ADD ESP,100 004013BC |. C3 RET === Trace Into === 004011D6 |. 8D4424 18 LEA EAX,DWORD PTR SS:[ESP+18] 004011DA |. 83C4 08 ADD ESP,8 004011DD |. 50 PUSH EAX ;/String2=”1234567890” <== fake serial 004011DE |. 68 30604000 PUSH STARTCLN.00406030 ;|String1=”3106-30106-2223-433” <== chuỗi serial chúng ta cần tìm 004011E3 |. FF15 2092400> CALL NEAR DWORD PTR DS:[<&KERNEL32.lstrcmpA>] ;\lstrcmpA 004011E9 |. 85C0 TEST EAX,EAX 004011EB |. 0F85 8000000> JNZ STARTCLN.00401271 (đoạn sau là đoạn code dùng để tạo key trong registry, chúng ta không để cập đến ở đây) ( ) === Trace Into === 004027CA . 56 PUSH ESI ;|hOwner 004027CB . FF15 3493400> CALL NEAR DWORD PTR DS:[<&USER32.MessageBoxA>] ;\MessageBoxA 004027D1 . B8 01000000 MOV EAX,1 004027D6 . 5E POP ESI 004027D7 . C2 1000 RET 10 Serial tương ứng : Name : the_lighthouse Code : 3106-30106-2223-433 Name : REA-cRaCkErTeAm Code : 2616-25206-2399-465 The_lighthouse(REA) RealKey_File Recovery Angel 1.13 Soft: File Recovery Angel 1.13 HomePage: http://www.filerecoveryangel.com Protection: No Packed Tools: OllyDbg 1.10; Peid 0.93 Cracker: Ha Viet Hung (hvh0904) Đây là soft cho phép phục hồi những file đã xóa trên ổ cứng rất hay. Tuy nhiên nếu chưa đăng ký thì chỉ recover được những file nhỏ còn nếu phục hồi những file lớn thì nó bắn nag báo rằng phải đưa tiền cho nó thì nó mới chịu nghe. Do đó, chúng ta cần phải tìm RealSerial để dùng cho bõ tức. OK. Chạy thử chương trình, vào Option >Register rồi nhập Name và Key bạn thích xong nhấn Register. Nó sẽ bắn nag báo "Register False!". Nhớ lấy dòng này. Thoát. Dùng Peid kiểm tra biết được chương trình không bị pack và được viết bằng Borland Delphi 4.0 - 5.0. Vậy là quá khỏe rồi hehe. . ;GetDlgItemTextA 00 4 01 1 C7 |. 68 306 0 400 0 PUSH STARTCLN .00 406 0 30 00 4 01 1 CC |. 68 30 614 00 0 PUSH STARTCLN .00 40 613 0 ;ASCII”the_lighthouse” 00 4 01 1 D1 |. E8 AA 000 000 CALL STARTCLN .00 4 01 2 80 ;Calculation. NOTE 00 4 01 2 80 /$ 81EC 00 01 0 00 > SUB ESP , 10 0 00 4 01 2 86 |. A0 6462 400 0 MOV AL,BYTE PTR DS:[ 406 264] 00 4 01 2 8B |. 884424 00 MOV BYTE PTR SS:[ESP],AL 00 4 01 2 8F |. 53 PUSH EBX 00 4 01 2 90 |. 56. ;USER32.GetDlgItemTextA 00 4 01 3 B5 |. 5B POP EBX ;STARTCLN .00 40 613 0 00 4 01 3 B6 |. 81C4 00 01 0 00 > ADD ESP , 10 0 00 4 01 3 BC |. C3 RET === Trace Into === 00 4 01 1 D6 |. 8D4424 18 LEA EAX,DWORD PTR SS:[ESP +18 ] 00 4 01 1 DA