نمایش نتایج 1 تا 8 از 8

نام تاپیک: باز کردن پروسه با PROCESS_ALL_ACCESS

  1. #1

    باز کردن پروسه با PROCESS_ALL_ACCESS

    سلام،

    من یک برنامه دارم که براش SeDebugPrivilege رو هم قرار میدم منتها نمیتونه به همه پروسه ها دسترسی کامل داشته باشه. چه کار دیگه ای باید بکنم؟
    آخرین ویرایش به وسیله B-Vedadian : چهارشنبه 18 اردیبهشت 1387 در 12:56 عصر

  2. #2
    "نميتونم" و "همه پروسه" و "دسترسي كامل" رو بايد توضيح بدي .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  3. #3
    راستش براي نوشتن يه دامپر از حافظه که بتونه ناحيه هاي حافظه که به روشهايي سطح کاربر مثل استفاده از VirtualProtect محافظت شدند، رو هم بخونه و علاوه بر اون بشه يک برنامه در حال اجرا رو موقتا متوقف (ترجمه Pause) کرد و از فضاي حافظه اش دامپ گرفت، اول با استفاده از AdjustTokenPrivilege مجوز ديباگ به برنام خودم ميدم. اين بخش دچار اشکال نميشه.

    بعد اون وقتي ميخوام پروسه نرم افزار ديگه اي که توسط Execryptor محافظت شده رو با دسترسي کامل (ترجمه PROCESS_ALL_ACCESS) بازش کنم، مقدار صفر رو به عنوان هندل پروسه بر ميگردونه.

    دوباره پست اولم رو خوندم...

  4. #4
    یک عنایتی بکنید، ممنون میشم.

  5. #5
    واقعيت اينه كن من نميفهمم چي ميگي . اگر ممكنه كدت رو به همراه برنامه اي كه ميخواي دامپش كني ضميمه كن يا توضيح دقيقتري رو بنويس
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  6. #6
    سلام

    تو MSDN ديدم که براي اينکه بشه 1-يک پروسه در حال اجرا رو Pause کرد، 2-نوع محافظت بخشهاي مختلف حافظه مجازي پروسه رو به دلخواه از حالت محافظت شده در آورد، بايد پروسه ما مجوز Debug داشته باشه. بري همين اول يک روتين براي فعال کردن اين مجوز نوشتم

    function EnableDebugPrivilege(Enable: Boolean): Boolean;
    var
    TokenPrivileges: TTokenPrivileges;
    hToken: THandle;
    luidDebugPrivilege: Int64;
    ReturnLength: Cardinal;
    begin
    Result := True;
    Result := Result and LookupPrivilegeValue(nil, 'SeDebugPrivilege', luidDebugPrivilege);
    if not Result then
    Exit;
    Result := Result and OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
    if not Result then
    Exit;
    TokenPrivileges.PrivilegeCount := 1;
    TokenPrivileges.Privileges[0].Luid := luidDebugPrivilege;
    if Enable then
    TokenPrivileges.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
    else
    TokenPrivileges.Privileges[0].Attributes := 0;
    Result := Result and AdjustTokenPrivileges(hToken, False, TokenPrivileges, sizeof(TTokenPrivileges), nil, ReturnLength);
    Result := Result and (GetLastError() <> ERROR_NOT_ALL_ASSIGNED);
    CloseHandle(hToken);
    end;
    بعدش با استفاده از اين روتين، مجوز Debug به برنامه خودم (دامپر) دادم. حالا مي خوام يک برنامه که با ExeCryptor 2.4.1 محافظتش کردم رو با PROCESS_ALL_ACCESS بازش کنم.

    hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, PID)
    مقدار صفر به عنوان hProcess بر مي گردونه.

    فردا برنامه خودم و برنامه محافظت شده رو ضميمه مي کنم.
    (مي خواستم نمونه برنامه محافظت شده و برنامه خودم رو بفرستم ولي الآن تو مرخصيم و هم ExeCryptor هم برنامه دامپر من تو شرکته. دامپر رو ميتونستم دوباره بنويسم ولي باز هم برنامه محافظت شده در اختيار نبود)

  7. #7
    هر فایلی که با ExeCryptor محافظت شده باشه رو با این امتحان کنید.
    نخندید که اسمش Advancedه!

    خود ExeCryptor هم قابل تسته.
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله B-Vedadian : شنبه 28 اردیبهشت 1387 در 11:45 صبح

  8. #8
    یادم رفت آدرس ExeCryptor رو بدم که تو http://www.strongbit.com هستش. دموی ExeCryptor هم به این روش با PROCESS_ALL_ACCESS باز نمیشه.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •