Nhân đây tôi cũng post lên một bài của bác luucorp tut crack Crackme#1 của Softcracker_vn bên vncracking để các bạn tham khảo, ai cần source crackme thì PM me
----------------------------------------------------------
Huong dan viet KEYGEN OF: crackme#1.exe
Tools()
---------
1. Hview ©SEN --> HVI
2. W32DASM V8.93 --> W32
3. crackme#1.exe --> C#1
HeLp()
--------
1)deprotect:
Dau tien ban cu thu load C#1 trong W32 xem no ra sao, nhu thuong le bam vao menu Refs/.., ca 3 muc ( Menu.., Dialog.., String.. ) deu trang ca. (khong van de gi), thoat khoi menu va ta tiep tuc an F10:
Ta toi doan code sau:
:00401000 PUSH 0 ;
* Reference To:KERNEL32.GetModuleHandleA, Ord:0000h
|
:00401002 CALL 4068A3
:00401007 MOV DWORD PTR [4070FB],EAX
:0040100C XOR EAX,EAX
:0040100E MOV AX,67
:00401012 PUSH 0
:00401014 PUSH 0040102C ;
:00401019 PUSH 0
:0040101B PUSH EAX
:0040101C PUSH DWORD PTR [4070FB]
* Reference To: USER32.DialogBoxParamA, Ord:0000h
|
:00401022 CALL 40686d
* Reference To: KERNEL32.ExitProcess, Ord:0000h
|
:00401027 CALL 4068a9
Doan ma tren la bo khung cua chuong trinh, phan rau ria nam o phia sau, tiep tuc keo xuong phia duoi va dung lai khi den doan ma sau:
:004011D6 enter 0000,00
.
.
:004011DF cmp bye ptr [4070FA],0 ---|
:004011E6 jmp 004011E9 <---- khong on
Ban doc doan ma nay, thay co dieu gi do khong on thi phai lam gi co chuyen vua cmp xong da jmp (la qua di mat), thuong sau cmp se la jnz, jz , jne, je, jnb,... hoac la jxx khac. Do vay ta thu tim xem co cai jxx nao ma xx<>mp (jxx <> jmp) o doan ma duoi khong, tot nhat ta nen vao HVI.
Trong HVI nhay toi .004011E6. Keo xuong 1 it ban thay tai:
.00401232: jne .00401C80 <--
co jne<>jmp roi, nhu the thi doan ma giua cmp va jne no lam cai quai gi?
ban tiep tuc keo xuong phia duoi ban thay co nhieu doan co ma tuong tu
nhu doan ma tren (ma giua cmp,jne).
va...
Theo thong ke cua toi thi, C#1 chi co 3 mau code duoc lap lai 1 cach kha don gian:
mau1[19]=(235,1,131,156,235,1,213,235,8,53,157,235,1,137,235,3,11,235,247);
mau2[24]=(96,232,3,0,0,0,131,235,14,235,1,12,88,235,1,53,64,235,1,54,255,224,11,97);
mau3[24]=(235,1,227,96,232,3,0,0,0,210,235,11,88,235,1,72,64,235,1,53,255,224,231,97);
Chuong trinh C#1 duoc viet theo kieu:
lenh1: vao ten
mau1[19]
lenh2: kiem tra ten
mau2[24]
lenh3: vao serial
mau1[19]
mau3[24]
.
.
co nghia la mau1[19],mau2[24],mau3[24] co hoac khong chang anh huong gi. ki thuat co ten "muta code", duoc su dung trong 1 so virus (tu nhung nam <=95). vi vay, de cho ma duoc sang sua chung ta hay don sach 3 mau tren bang canh: tim 3 mau tren va dien (nop=90h=khong lam gi). toi da viet 1 chuong trinh de thu hien viec tren (uprotect.PAS).
{deprotect.pas}
type
m24=Array[1..24] of Byte;
const
p19: Array[1..19] of Byte =(235,1,131,156,235,1,213,235,8,53,157,235,1,137,235,3,11,235,247);
p24: m24 =(96,232,3,0,0,0,131,235,14,235,1,12,88,235,1,53,64,235,1,54,255,224,11,97);
c24: m24 =(235,1,227,96,232,3,0,0,0,210,235,11,88,235,1,72,64,235,1,53,255,224,231,97);
var f:file;
buf:m24;
i,j,m,n:integer;
se:longint;
begin
write('Please wait.');
assign(f,'CrackMe1.EXE');
reset(f,1);
se:=$7e6; {}
repeat
seek(f,se);
fillchar(buf[1],24,0);
blockread(f,buf[1],24,j);
for m:=1 to 19 do {p19}
if buf[m]<>p19[m] then begin m:=1;break;end;
for i:=1 to 24 do {p24}
if buf[i]<>p24[i] then begin i:=1;break;end;
for n:=1 to 24 do {c24}
if buf[n]<>c24[n] then begin n:=1;break;end;
buf[1]:=$90; {fill nop}
seek(f,se);
if m<>1 then
begin
for m:=1 to 19 do
blockwrite(f,buf[1],1);
inc(se,m)
end else
if i<>1 then
begin
for i:=1 to 24 do
blockwrite(f,buf[1],1);
inc(se,i);
end else
if n<>1 then
begin
write('.');
for n:=1 to 24 do
blockwrite(f,buf[1],1);
inc(se,n);
end else
inc(se);
until j<24; {that's all}
close(f);
writeln('OK.');
end.
2)keygen:
Truoc tien ban chay deprotect.exe (o phan I). Khi da deproctect thi van de viet keygen la kha don gian (doi voi C#1). Ta load C#1 trong W32, va bat dau: Ta lai bam vao menu Refs/.., van trang. Nhu vay thi may xau(string) thong bao (not corect serial) o dau roi ? ban nghi no duoc bao ve? dung roi do: ban hay xem doan ma sau:
:004011DF:
.
. (**)
.
:00401C80
kha dai day, nhung viec no lam lai rat don gian:
mov esi,40702E
@loop:
mov al,[esi]
je @end
xor al,43
mov [esi],al
inc esi
jmp @loop
@end
(doan ma tren toi da luoc bo nhung lenh khong can thiet cua C#1) C#1 da bao ve xau(string) bang cach XOR chung voi 0x43.
bay gio ta unXOR va luoc bo doan ma (**) xem sao: vao HVI co 2 viec:
1.dien nop=0x90 vao (**)
2.unXOR (40702E)
viec 1: dien toan bo 0x90 tu .004011DF -> .00401C80
(hoac dat 1 lech jmp 1280 tai .004011DF)
viec 2:
thuc hien kha thu cong hoac ban tu viet 1 ct lam dieu nay.
[40702e+i] = [40702e+i]^0x43 (i=0..203=0xCC-1)
Xong 2 viec tren la lai load C#1 trong W32, lai vao Refs/.., ai cha cai gi day co 1 muc da bat sang: ta click vao (String Data References) va cong viec con lai la cua ban. toi da doc va viet duoc keygen sau.
{keygen.pas}
var
ten: string;
i,w: byte;
crc,se: longint;
begin
asm mov ax,3;int $10;end;
writeln('----'#13#10'Crackme#1 for softcracker_vn - Keygen by dactrung'#13#10'----');
write('Name: ');readln(ten);
write('Code: ');
crc:= 0;
for i:= 1 to length(ten) do
begin
w:= ord(ten[i]);
if not(ten[i] in ['A'..'z']) then
w:= (w mod 10)+ ord('A')+ (w div 10);
if w<$61 then w:=w+ $20;
w:= w-$61;
crc:= (crc shl 1)+ w;
end;
crc:=crc xor $17021995;
se :=crc xor $43545CD1; {magic number}
se :=se xor $26051976;
write(se);
readln;
end.
thanks,
dactrung
luucorp@yahoo.com
-----------------------------------------------------
Bai viet cua hacnho from HVA (xin vui long de dong nay khi ban trich dan lai--thanx a lot)
------Het Phan III ----
Trong phần 4 tôi sẽ đưa ra cho các bác một tut về các kỹ năng cơ bản để trở thành một cracker, cũng xin thông báo với các bác là từ phần 4 trở đi kèm theo mỗi bài hướng dẫn tôi sẽ kèm theo hai bài hướng dẫn crack một soft, một game hay crackme...trong đó một bài do tôi crack và một bài nữa tôi sưu tầm do các đại ca crack...
***************************************:
Phần IV: Làm sao để crack được một soft…
Chào các bạn, chúng ta lạI gặp lạI nhau… Trong phần IV này chúng ta sẽ bàn đề vấn đề chính đó là làm sao để crack được một phần mềm bằng WDASM và Hacker Views ??? (không dùng SoftIce).
He he he câu hỏI thật dễ nhưng mà trả lờI không dễ chút nào…!!! Tôi cũng như các bạn khi tập tễnh bước vào làng crack cũng phảI toát mồ hôi mớI crack được một phần mềm. Sau đây là một số kinh nghiệm bản thân tôi khi muốn crack một phần mềm bằng WDASM và Hacker Views .
Chú ý: Trong bài này tôi có tham khảo bài viết của anh HOAVELU—Thanx for support
I. Tổng Quát:
Trên thị trường phần mềm hiện nay có rất nhiều phần mềm, chủng loạI thật đa dạng và phong phú…MỗI ngày lạI có nhiều phần mềm mớI ra đờI, bản thân những phần mềm đã xuất hiện cũng luôn luôn nâng cấp lên version mới…Do đó cách crack luôn luôn phảI linh động , không được lấy y chang cái cũ mà áp dụng cho cái mới…Sẽ thất bạI ngay!!!
Ví dụ: VớI phần mềm Winzip ver 8.0 bạn có thể dùng SoftIce tìm đến dòng 00407AA3 LEA EAX,[EBP-0140] , sau đó đánh vào D EBP-0140 là tìm được số serial tương ứng vớI user name nhập vào…Nhưng vớI Winzip 8.1 , nếu bạn áp dụng y chang như cách đốI vớI Winzip 8.0 sẽ chẳng được gì…Do đó bạn hãy dùng chính cái đầu của mình hơn là áp dụng một cách máy móc như con vẹt nhưng cái đã học
II. Cài Đặt
Hầu hết (khoảng 70%) phần mềm đều cài đặt xong rồI ta mớI crack…(Tuy nhiên có những phần mềm bắt nhập license khi setup như Window, Photoshop Visual Studio…thì ta sẽ bàn sau). Sau khi cài đặt xong bạn hãy chạy soft cần crack sau đó ghi nhớ thông báo bắt đăng ký hay nhập license code, user code v.v.
III. Unpack
Một số soft được tác giả nén lạI, vì sợ crack…ke ke ke, đơn cử như Vietkey 2000 . Bạn phải xem coi chương trình có được nén(pack) lại hay không. Nén ở đây không có nghĩa là được nén bằng WinZip hay WinRAR mà file .EXE được nén nhỏ lại mà vẫn có thể chạy được bình thường không cần giải nén. Để biết file có bị nén hay không, bạn phải xem mở file .EXE đó ra để xem đoạn mã của nó. Ở đây tôi dùng WinNC, chọn file cần xem và nhấn F3. Thông thường, nếu file đã bị nén thì nó sẽ có 1 dòng đặc trưng trong file bị nén ở đầu file. Chẳng hạn như được nén bằng ASPack thì (thường) trong file sẽ có chuỗi "aspack". Nén bằng UPX thì sẽ có dòng "UPX...". Còn đối với shrink thì có chữ "shrink". Tuy nhiên, cũng có một vài công cụ giúp ta giải nén (unpack) mà không cần biết file được nén theo dạng nào, đó là nó tự động nhận dạng. Tuy nhiên, nếu dạng được nén không được hỗ trợ thì nó cũng đành bó tay. Tiêu biểu cho loại này là ProcDump32, nó hỗ trợ khá nhiều dạng phổ biến như ASPack, Code Safe 3.X, PC Guard 2.10, PE Compact, PKLITE... bạn có thể chọn "*unknown*" để chương trình tự động nhận dạng.
Ngoài ra, có thể chương trình còn được bảo vệ bởi 1 đoạn mã bảo vệ (Security Code). Đây là một đoạn mã dùng để bảo vệ chương trình tránh bị debug (anti-debug) hay thay đổi kích thước. Đối với loại này, chúng ta cũng có một số chương trình để bỏ phần Security Code đó, có thể kể ra là : Anti Crypt, UnCode Crypt, tEunlock...
IV. Bắt tay vào crack
*.Bước 1: sau khi chạy chương trình bạn hãy ghi nhận lạI những thông báo bắt đăng ký đạI loạI như “Enter Registration Code”, Register, evalution copy, unregistered version…v.v và v.v
*.Bước 2: Nhấn vào và nhập vào đạI một số Serial/Unlock Code/Registration Code bất kỳ…Sau đó nó sẽ hiện lên một nag báo rằng chúng ta đã nhập sai, yêu cầu nhập lại…Không sao, hãy ghi lạI dòng thông báo mà bạn nhận được khi nhập sai như : “Incorrect Password...", "Wrong Serial...", "Re-enter password ... "
*.Bước 3:
Chạy W32Dasm, chọn "Open file to Disassembler..." hay nhấn trên thanh công cụ cũng được.
_ Chọn file cần Crack.
_ Trên menu Refs, chọn String Data References. Tại sao ta phải làm như vậy, bạn hãy xem đoạn mã sau :
Nếu "Serial bạn gõ vào" = "Serial chương trình" thì <---- Ta sẽ Patch chỗ này
Nhảy đến đăng ký bản quyền
Còn không
Nhảy đến bảng thông báo "Incorrect password..." <------- Bạn cần ở đây trong W32Dasm
Bây giờ, nếu nó kêu là sai thì mình cho nó thành đúng :
Nếu "Serial bạn gõ vào" <> "Serial chương trình" thì <----- Chỗ đã được patch
Nhảy đến đăng ký bản quyền
Còn không
Nhảy đến bảng thông báo "Incorrect password..." <-------- Bạn cần ở đây trong W32Dasm
Còn bây giờ bạn cần biết một chút về assembler (vì chương trình sẽ được W32Dasm dịch ra assembler mà
Viết lại trong assembler đoạn code trên sẽ tương tự như :
cmp eax, eax <----- So sánh số serial/unlock code...
jne [Địa chỉ 1] <----- Nhảy đến thông báo số đăng ký đúng hoặc sai
call [Địa chỉ 2] <----- Nhảy đến thông báo ngược lại
Bây giờ, giả sử [Địa chỉ 1] là nhảy đến thông báo đã được đăng ký và [Địa chỉ 2] nhảy đến thông báo "Incorrect password..." thì ta sẽ phải sửa lại đoạn code như sau :
cmp eax, eax
je [Địa chỉ 1] <------ Chỗ đã được Patch
call [Địa chỉ 2]
Trong assembler, câu lệnh nhảy được biết đến là :
je = Jump if equal : Nhảy nếu bằng
jne = Jump if not equal : Nhảy nếu không bằng
Vì vậy, thông thường "je" được đổi thành "jne" và ngược lại.
Trở lại với chương trình của chúng ta, đi tìm chuỗi "Incorrect password..." là chúng ta đã đến bảng thông báo "Incorrect password...". Kiếm bằng cách vào menu Refs/String data references của W32Dasm, tìm chuỗi "Incorrect password..." và nhấn kép vào nó (hy vọng là có . Lúc này, W32Dasm đưa chúng ta đến bảng thông báo chưa đăng ký rồi, nhiệm vụ của chúng ta là phải kiếm được nơi có chứa lệnh nhảy đến bảng thông báo này. Hãy dời con trỏ lên cho tới khi nào kiếm thấy dòng "je ..." hay "jne..." thì dừng lại ở đó. Còn nếu thấy dòng :
* Reference ....
:000... <---- để ý địa chỉ này
thì hãy dừng lại đó vì bảng thông báo đã được gọi từ 1 địa chỉ khác, nhấn Shift-F12 (hay vào menu Goto/Goto Code Location), nhập vào dãy số000... sau dòng "* Reference..." rồi Enter.
Lặp lại các bước dò như trên cho đến khi nào thấy được dòng "je..." hay "jne..."
Cuối cùng, khi đã kiếm được rồi thì hãy nhìn xuống thanh status bar, bạn sẽ thấy 1 chuỗi số ngay sau "@Offset ...00...". Nhớ lấy chuỗi số đó, và đừng quên là bỏ chữ "h" cuối cùng đi, vì đây là chữ biểu hiện cho số HEX.
*.Bước 4:
Đóng W32Dasm lại. Mở HView ra, nhấn F4, chọn Decode, nhấn F5, đánh vào giá trị00... bạn thu được ở "@Offset...00..." lúc nãy và Enter, HView đưa bạn đến ngay đúng dòng bạn nhìn thấy trong W32Dasm và còn chờ gì nữa, patch nó đi. Nhấn F3, rồi F2 (tôi chọn cách này để giúp Newbie dễ hiểu hơn vì đôi lúc không phải lúc nào giá trị cũng là 74 và 75). Sửa "jne..." thành "je..." và "je..." thành "jne..."
_ Cuối cùng, nhấn F9 để Save chương trình và F10 để thoát, bạn chạy lại chương trình và nhập số đăng ký bất kỳ thử xem sao, nếu may mắn, bạn sẽ nhận được thông báo "Thanks for ..." , hehe, và đừng quên lưu 1 bản .EXE để đề phòng sự cố trước khi Patch .
Mẹo : Nếu không tìm thấy dòng "Incorrect password..." thì bạn thử đi ngược lại là đi từ dòng "Thanks for..." hay "Registered..." xem .
Đây là cách đơn giản nhất để Patch chương trình, ngoài ra còn có thể dùng SoftICE, VBDe, DeDe, SmartCheck... cái đó để hỗ trợ crack soft là tùy ở bạn . Bạn có thể nâng cao "tay nghề" bằng cách viết keygen hoặc bằng 1 số thủ thuật khác như "spy memory" .
Chú ý : Ngoài hai câu lệnh ASM cơ bản bạn nên biết một số câu lệnh khác như : Call, Popad, Test, Nop ( bạn có thể tham khảo trong phần phụ lục của tôi)
V. Bài tập crack đầu tiên cho bạn
Để minh hoạ cho phần lý thuyết trên chúng ta hãy tập crack một phần mềm khá quen thuộc với người Việt Nam, đó là bộ gõ Vietkey...Trên thị trường hiện nay đã có bản Vietkey build 11220, nhưng bản đó được pack lại bằng UPX, detect Si nên tôi không hướng dẫn các bạn crack nó, mà chúng ta hãy tập crack phiên bản Vietkey409e...Các bản Vietkey409,409d đã được các anh NVH©, Nguyễn Mạnh Cường hướng dẫn, nhưng bây giờ trong tay tôi chỉ có bản Vietkey409e trong CD PHP software #1, và mặc dùng bác Phạm Hồng Phước có cho bản crack, nhưng khi mở Vietkey409e lên tôi thấy " License to Rockman", tò mò tôi thử xoá file VKNT.LIC thì lập tức hiện lên bảng thông báo bắt đăng ký với tác giả he he, vậy là tay Rockman này hắn chỉ tìm số serial cho riêng mình hắn, do đó bạn không thể đăng ký license cho mình, không biết các bạn cảm giác sao chứ tôi rất bực mình khi phải xài phần mềm do người khác crack ke ke ke...Từ đó hôm nay tôi sẽ hướng dẫn các bạn crack Vietkey409e chấp nhận mọi serial, dù cho bạn có xoá file VKNT.LIC
Công cụ : WDASM893, HIEWS602 (mới hơn càng tốt)
Phần mềm : Vietkey409e
File cần crack : VKNT.EXE
Cracker : hacnho
Đầu tiên các bạn chạy Vietkey409e, tức thì một loạt nag hiện ra đập liên tiếp vào mặt bạn " Vietkey chua dang ky su dung, lien he tac gia", sau một hồi bắn ra một loạt nag, nó hiện ra một dòng chữ " Unregistered Version" trên thanh tiêu đề của Vietkey409e...Sau đó bạn đánh dấu kiểm vào check box " Đăng Ký Sử Dụng" or " Registration", vào đó nhập vào User Nam, và License Code, enter, oh la la, một nag bắn ra " Invalid Number", Bạn ghi nhớ lấy nó...
Okie, sau khi tắt Vietkey409e bạn dùng WDASM mở file VKNT.EXE trong thư mục cài đặt. chờ cho WDASM disassembly xong bạn bắt đầu vào menu menu Refs, chọn String Data References, kiếm cho ra dòng có chữ " Invalid Number", double click vào nó, đóng cửa sổ String Data References lại, lúc này bạn sẽ thấy như sau :
*. Reference To: USER32. GetDlgItemTextA, Ord : 00EDh
|
:00403000 FFF15D4934000 Call dword ptr [004093D4]
:00403006 8D4DCC lea ecx, dword ptr [ebp-34]
:00403009 51 pussh ecx
:0040300A 56 push esi
*. Reference To: KERNEL32.lstrcmpA, Ord : 00269h
|
:0040300B FF15C8924000 Call dword ptr [004092C8] =>Gọi hàm kiểm tra License Code
:00403011 85C0 test eax, eax ==> kiểm tra License Code
:00403013 743D je 00403052 ==>Nếu nhập đúng, nhảy đến thông báo " License to.."
:00403015 833D1877400000 cmp dword ptr [00407718], 00000000
*. Possible StringData Ref from Data Obj ->"Go"
:0040301C B8187C4000 mov eax, 00407C18
:00403021 7505 jne 00403028 ==> Sai, nhảy đến thông báo "Invalid Number"
*. Possible StringData Ref from Data Obj ->"Invalid Number"
:00403023 B89C704000 mov eax,00407C9C
Oh yeah, chúng ta đã tìm ra chỗ cần crack rồi phải không các bạn, chúng ta chỉ cần đổi 2 chỗ, --một là ( :00403013 743D je 00403052 ==>Nếu nhập đúng, nhảy đến thông báo License to " ) ==> Cái mà ta cần crack ở đây là, dù cho ta nhập vào số serial gì nó cũng chịu và hiện ra bảng Lincense to...
--hai là, chúng ta không cho hiện ra bảng " Invalid number" đồng nghĩa với chuyện bảng thông báo " Liên hệ tác giả" cũng không hiện ra luôn he he (:00403021 7505 jne 00403028 ==> Sai, nhảy đến thông báo "Invalid Number")
Ở đây chúng ta cần đổi hai bytes:
1. bytes thứ nhất chúng ta đổi câu lệnh nhảy ngược lại tức là từ je ( nhảy nếu bằng) thành jne (nhảy nếu không bằng)...các bạn di chuyển vệt sáng đến dòng :00403013 743D je 00403052, nhìn xuống dưới thanh task bar của WDASM bạn thấy một địa chỉ offset 0002413 (bỏ chữ h đi nhé), nhớ lấy nó...Mở HIEWS ra, tìm đến file VNTK.EXE (thường là ở ổ C, alt+F1 để chuyển ổ đĩa), nhấn F5, gõ vào 0002413 , nhấn F3, đổi 74 thành 75. Nhấn F9 để lưu, F10 để thoát
2. bytes thứ hai chúng ta đổi câu lệnh nhảy ngược lại tức là từ jne ( nhảy nếu không bằng) thành je (nhảy nếu bằng)...các bạn di chuyển vệt sáng đến dòng 00403021 7505 jne 00403028, nhìn xuống dưới thanh task bar của WDASM bạn thấy một địa chỉ offset 0002421 (bỏ chữ h đi nhé), nhớ lấy nó...Mở HIEWS ra, tìm đến file VNTK.EXE (thường là ở ổ C, alt+F1 để chuyển ổ đĩa), nhấn F5, gõ vào 0002421 , nhấn F3, đổi 75 thành 74. Nhấn F9 để lưu, F10 để thoát...
bây giờ mở lại Vietkey, đăng ký, hay xoá file VKNT.LIC xem, bạn sẽ thích ngay mà ha ha ha,
----------------------
thật ra tôi còn một chiêu khác là đổi je thành EB nhưng không chỉ cho các bạn vì chúng ta chỉ mới học...Nếu hứng thú bạn có thể tự nghĩ ra cách để crack bản Viekey409e này, bằng SoftIce (dùng hàm getdlgitemtexta),
---------------------
Bài viết của hacnho from HVA (vui lòng để lại dòng này khi trích dẫn, thanx alot)----------------------------
Thế là chúng ta đã đi hết phần IV rồi phải không các bạn, hy vọng các bạn sẽ hiểu nhiều hơn về nghệ thuật crack, trong phần sau tôi sẽ hướng dẫn các bạn về keygen, và chúng ta sẽ học crack PC security 5.0, Chúng ta sẽ học crack xen kẽ một phần mềm Việt nam với một phần mềm nước ngoài...Và dĩ nhiên là chúng ta cũng sẽ học crack những trò game nổi tiếng như Empire, Cossack, Haft Life...
Hiện nay anh Hoàng đã đưa địa chỉ trang web của mình , các bạn hãy vào tham quan và học hỏi nhe
My Forum: http://www.class12p1.1vn.net
http://www.vietcracks.com
*****************************************************
Không có gì mà Trump không dám
-
*Trần Gia Huấn*
21-11-2024
*Nguyễn Huệ Chi*
Bài viết ngắn gọn mà nói đủ và cực đúng một Donald Trump với cái Nội các
sắp hiện hình mang rõ từng ngóc ng...
1 ngày trước
0 nhận xét:
Đăng nhận xét