Trang 3 trên tổng số 3 Đầu tiênĐầu tiên 123
Từ 21 tới 28 trên tổng số 28 kết quả

Đề tài: Tìm Handle của cửa sổ tắt máy trên Windows như thế nào?

  1. #21
    No Avatar
    ngocbig Khách

    Mặc định Tìm Handle của cửa sổ tắt máy trên Windows như thế nào?

    Chú mắng cháu vì thái độ chưa gì đã tự cao tự đại, ăn nói không khiêm tốn, châm chích người khác đấy cô bé à.
    A ha! Chú lại có thêm cái khả năng dựng kịch rồi. Chú thử hỏi các mem xem cháu bé này đã tự cao tự đại với ai chưa? Cháu không khiêm tốn lúc nào. Chú có thể quote lại vài câu cho cháu rút kinh nghiệm được không?

    Mà tiện thể cho cháu hỏi cái user name bên woodmann của chú là gì nhỉ. Để cháu học hỏi và lấy tool của chú submit. Bộ sưu tập tool của cháu còn ít quá. Chắc chú cũng dùng IDA. Cho cháu xin mấy cái plugin nếu chú có nhé (hàng xịn ấy nhé)

    ngocbig cũng ngó qua rồi. Cao thủ không nhiều lắm nhưng non-cao thủ thì nhiều nhiều.

    Chú cao thủ vậy mà sao chú phải vất vả mò mẫm mất thời gian làm theo cách của chú như vậy. Cách của cháu làm rất dễ mà. À cháu hiểu rồi. Cao thủ thì phải tìm ra cách của riêng mình dù cách ấy có gai góc thế nào đúng không chú?

    Cháu cũng nói thật là các việc disable dialog bên trên là quá đơn giản rồi. Cháu đang nghĩ tới hướng disbable lệnh gọi tới ExitWindowEx cơ. Chắc chú cũng đọc cuốn Windows Internals rồi nhỉ. Trong đó họ nói rõ:

    Shutdown
    If someone is logged on and a process initiates a shutdown by calling the Windows ExitWindowsEx function, a message is sent to Csrss instructing it to perform the shutdown. Csrss in turn impersonates the caller and sends a Windows message to a hidden window owned by Winlogon, telling it to perform a system shutdown. Winlogon then impersonates the currently logged-on user (who might or might not have the same security context as the user who initiated the system shutdown) and calls ExitWindowsEx with some special internal flags. Again, this call causes a message to be sent to Csrss requesting a system shutdown.

    This time, Csrss sees that the request is from Winlogon and loops through all the processes in the logon session of the interactive user (again, not the user who requested a shutdown) in reverse order of their shutdown level. A process can specify a shutdown level, which indicates to the system when they want to exit with respect to other processes, by calling SetProcessShutdownParameters. Valid shutdown levels are in the range 0 through 1023, and the default level is 640. Explorer, for example, sets its shutdown level to 2 and Task Manager specifies 1. For each process that owns a top-level window, Csrss sends the WM_QUERYENDSESSION message to each thread in the process that has a Windows message loop. If the thread returns TRUE, the system shutdown can proceed. Csrss then sends the WM_ENDSESSION Windows message to the thread to request it to exit. Csrss waits the number of seconds defined in HKCU\Control Panel\Desktop\HungAppTimeout for the thread to exit. (The default is 5000 milliseconds.)
    PS: Cháu cũng thấy chú kiêu kiêu, hiếu thắng lắm đó (hí lại vô lễ rồi). Thế là cả chú và cháu đều tự cao rồi nhỉ. Tiếc là từ giờ cháu không có nhiều thời gian lên online nói chung (vào cviet nói riêng), không được thể hiện cái tự cao của cháu nữa. Hihi! khi nào rảnh cháu sẽ lên forum nghe chú giảng về RE (bọn không biết nó cứ gọi là *****ing ấy) chú nhé

  2. #22
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Trích dẫn Nguyên bản được gửi bởi MATH-INFO Xem bài viết
    Bác TQN nói quả là cao siêu, mà sao có thể dịch ngược ra được tên biến tên hàm vậy cà.
    em thì em cũng gà thoai ,nhưng em đoán bác TQN làm thế này
    down load cái CFF Explorer này về rồi load nó lên,rồi xem hàm nào export ra,và dựa theo tên mà suy đoán nó làm nhiệm vụ gì rồi thử code xem có đúng là hàm đó có nhiệm vụ như thế không ,nhưng điều khó là em có nghe anh TQN nói ở trên thì có 1 số hàm MS nó không undocument thì dùng gì để biết được tham số của nó mà thử đây ,MSDN vô phương rồi
    Đã được chỉnh sửa lần cuối bởi AlexF : 14-01-2009 lúc 01:14 AM.

  3. #23
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Mấy hôm nay không có nhiều time rãnh lắm, tối nay tiếp tục RE msgina.dll.
    Tui gởi tới các bạn đoạn code minh họa cách show turn off dialog của Windows từ code của chúng ta.
    C Code:
    1. // Show turn off dialog from msgina.dll
    2. // Code by: TQN - REA forum
    3.  
    4. #include <windows.h>
    5. #include <stdio.h>
    6.  
    7. typedef HRESULT (WINAPI *SHELLTURNOFFDIALOG)(HWND hwnd);
    8.  
    9. int main()
    10. {
    11.     DWORD dwRet = 0;
    12.     HWND hwnd = GetDesktopWindow();
    13.  
    14.     SHELLTURNOFFDIALOG ShellTurnOffDialog = NULL;
    15.  
    16.     HINSTANCE hmsgina = LoadLibrary("msgina.dll");
    17.     if (NULL == hmsgina)
    18.     {
    19.         printf("Unable to load msgina.dll\n");
    20.         return EXIT_FAILURE;
    21.     }
    22.  
    23.     ShellTurnOffDialog = (SHELLTURNOFFDIALOG) GetProcAddress(hmsgina, (LPCSTR) 9);
    24.     if (NULL == ShellTurnOffDialog)
    25.     {
    26.         printf("Sorry, something wrong\n");
    27.         return EXIT_FAILURE;
    28.     }
    29.  
    30.     __try
    31.     {
    32.         dwRet = ShellTurnOffDialog(hwnd);
    33.     }
    34.     __except (EXCEPTION_EXECUTE_HANDLER)
    35.     {
    36.         printf("Exception occurred. Sorry, something wrong\n");
    37.         return EXIT_FAILURE;
    38.     }
    39.  
    40.     printf("dwRet = 0x%08X\n", dwRet);
    41.  
    42.     return EXIT_SUCCESS;
    43. }
    Các bạn cứ mạnh tay click TurnOff, Standby, Restart hay Cancel để xem trị return từ các button này.
    Đang RE tiếp ShellDimScreen, kẹt 1 parameter đầu, nên chưa dimmed toàn màn hình được, chỉ nhá 1 cái. Làm xong post tiếp.
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi TQN : 15-01-2009 lúc 07:11 PM.

  4. #24
    No Avatar
    ngocbig Khách

    Cháu chào chú TQN!

    Hihi! Chú vẫn thích theo con đường mất thời gian ấy à. Cháu thì thích simple yet usable. Cháu cũng xin "đú đởn" post code lên cho các bạn test. So simple!

    C++ Code:
    1. #include <windows.h>
    2.  
    3. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    4.                     PSTR szCmdLine, int iCmdShow)
    5. {
    6.     HWND hDimmed,hDlg;
    7.     POINT p;
    8.     int i =100;
    9.     while (i>0)
    10.     {
    11.         hDimmed = FindWindow(TEXT("DimmedWindowClass"),NULL);
    12.         if(hDimmed)
    13.         {
    14.             GetCursorPos(&p);
    15.             hDlg = WindowFromPoint(p);
    16.             if(hDimmed==(GetParent(hDlg)))
    17.             {          
    18.                 PostMessage(hDlg,WM_KEYDOWN,VK_ESCAPE,0);
    19.             }
    20.         }
    21.         i--;
    22.         Sleep(200);
    23.     }
    24.     MessageBox(NULL,TEXT("Test finished!"),TEXT("Message"),MB_OK);
    25.     return 0;
    26. }

  5. #25
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    có lẽ nên nghĩ đến việc chặn hàm ExitWindowsEx chứ cứ Findwindow thế này củ chuối quá ,người ta vào cmd mà tắt máy chắc hết

  6. #26
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Mặc định Tìm Handle của cửa sổ tắt máy trên Windows như thế nào?

    Hì hì, tiêu đề của topic là "FindWindows Tìm Handle của cửa sổ tắt máy" mà, đâu phải tập trung vào ý định ngăn không cho user shutdown đâu. Sẵn tiện chúng ta tìm hiểu luôn về cơ chế hoạt động của window này.

  7. #27
    No Avatar
    ngocbig Khách

    Hihi Các bạn không phải xóa làm gì. Mình nghĩ là cứ để vậy chứ ai lại post lên rồi lại xóa đi làm gì.

    Mình cũng chán cái chủ đề này rồi Các bạn có hứng cứ tiếp tục nhé.

    Có một cách prevent WindowsXP from shutting down cũng khá đơn giản các bạn thử tham khảo nhé

    C++ Code:
    1. #include <windows.h>
    2.  
    3. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    4.  
    5. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    6.                     PSTR szCmdLine, int iCmdShow)
    7. {
    8.     static TCHAR szAppName[] = TEXT("HelloWin");
    9.     HWND         hwnd;
    10.     MSG          msg;
    11.     WNDCLASS     wndclass;
    12.  
    13.     wndclass.style         = CS_HREDRAW | CS_VREDRAW;
    14.     wndclass.lpfnWndProc   = WndProc;
    15.     wndclass.cbClsExtra    = 0;
    16.     wndclass.cbWndExtra    = 0;
    17.     wndclass.hInstance     = hInstance;
    18.     wndclass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    19.     wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    20.     wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);
    21.     wndclass.lpszMenuName  = NULL;
    22.     wndclass.lpszClassName = szAppName;
    23.  
    24.     if(!RegisterClass(&wndclass))
    25.     {
    26.         MessageBox(NULL, TEXT("Can't register WndClass!"),
    27.                   szAppName, MB_ICONERROR);
    28.         return 0;
    29.     }
    30.     hwnd = CreateWindow(szAppName,                  // window class name
    31.                       TEXT("The Hello Program"), // window caption
    32.                       WS_OVERLAPPEDWINDOW,        // window style
    33.                       CW_USEDEFAULT,              // initial x position
    34.                       CW_USEDEFAULT,              // initial y position
    35.                       CW_USEDEFAULT,              // initial x size
    36.                       CW_USEDEFAULT,              // initial y size
    37.                       NULL,                       // parent window handle
    38.                       NULL,                       // window menu handle
    39.                       hInstance,                  // program instance handle
    40.                       NULL);                     // creation parameters
    41.  
    42.     ShowWindow(hwnd, iCmdShow);
    43.     UpdateWindow(hwnd);
    44.  
    45.     while(GetMessage(&msg, NULL, 0, 0))
    46.     {
    47.         TranslateMessage(&msg);
    48.         DispatchMessage(&msg);
    49.     }
    50.     return msg.wParam;
    51. }
    52.  
    53. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    54. {
    55.    
    56.     switch(message)
    57.     {
    58.     case WM_QUERYENDSESSION:
    59.         return 0;
    60.     case WM_DESTROY:
    61.         PostQuitMessage(0);
    62.         return 0;
    63.     }
    64.     return DefWindowProc(hwnd, message, wParam, lParam);
    65. }

    Best regards

  8. #28
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    chặn tắt máy bằng cách chặn hàm ExitWindowEX nè
    http://www.4shared.com/file/81237385...o_tat_may.html

Các đề tài tương tự

  1. Thiết kế giao diện giống Windows Explorer trên Windows XP như thế nào?
    Gửi bởi thptquochoc trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 27-03-2013, 12:22 PM
  2. Lấy handle của nhiều control trên chương trình khác như thế nào ?
    Gửi bởi kid1412qt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 08-05-2012, 11:13 PM
  3. Lấy handle Control trong Windows bằng sử dụng C#?
    Gửi bởi tomahutbui trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 30-03-2011, 11:13 PM
  4. Lấy handle Control trong Windows bằng sử dụng C#?
    Gửi bởi tomahutbui trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 27-03-2011, 07:23 PM
  5. Phân Biệt Handle và HWND trong lập trình Windows
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 8
    Bài viết cuối: 05-01-2009, 09:11 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn