mfc postmessage 예제

DOM XSS는 포스트메시지는 구체적이지는 않지만 많은 포스트메시지 구현에 존재하는 것입니다. 그 이유 중 하나는 수신 응용 프로그램이 http://www.examplesender.com/ 메시지만 수신하기 때문에 데이터가 올바르게 포맷되기를 기대하기 때문입니다. 각 윈도우 메시지에는 wParam 및 lParam의 매개 변수가 최대 두 개까지 있을 수 있습니다. 원래 wParam은 16 비트였고 lParam은 32 비트였지만 Win32에서는 모두 32 비트입니다. 모든 메시지가 이러한 매개 변수를 사용하는 것은 아니며 각 메시지는 매개 변수를 다르게 사용합니다. 예를 들어 WM_CLOSE 메시지도 사용하지 않으므로 둘 다 무시해야 합니다. WM_COMMAND 메시지는 둘 다 를 사용하며, wParam은 두 값을 포함하고, HIWORD(wParam)는 알림 메시지(해당하는 경우)이고 LOWORD(wParam)는 메시지를 보낸 컨트롤 또는 메뉴 ID이다. lParam은 메시지가 컨트롤에서 온 것이 아닌 경우 메시지 또는 NULL을 보낸 컨트롤에 대한 HWND(창 핸들)입니다. 중요: GetMessage()는 오류가 발생하면 -1을 반환합니다. 당신이 이것을 기억해야, 또는 그것은 어떤 시점에서 당신을 잡을 것입니다 … GetMessage()는 BOOL을 반환하는 것으로 정의되어 있지만 BOOL이 UINT(서명되지 않은 int)로 정의되므로 TRUE 또는 FALSE 이외의 값을 반환할 수 있습니다. 다음은 작동하는 것처럼 보이지만 특정 조건을 올바르게 처리하지 않는 코드의 예입니다.

예를 들어 “www.examplesender.com”의 메시지뿐만 아니라 “wwwaexamplesender.com”, “wwwbexamplesender.com” 등도 허용할 수 있습니다. 이전 예제 코드로 이 것을 시도했지만 유니 코드 / ANSI 번역, 타이머 콜백 호출 등과 같은 다양한 문제가 있어이 메서드가 고려하지 않고 사소한 응용 프로그램을 제외한 모든 응용 프로그램을 중단 할 가능성이 큽니다. 그래서 그것을 시도 하, 하지만 실제 코드에서 그것을 하지 마십시오 🙂 그러나 공격자가 http://www.examplesender.com/ XSS 버그를 발견하면 어떻게해야합니까? 즉, XSS도 http://www.examplereceiver.com/ 수 있습니다. 세 번째 함정은 응용 프로그램이 HTML/스크립트로 처리하는 방식으로 메시지를 사용하여 DOM XSS입니다. 내 프로젝트 Test_SDI 이름을 지정하고 VC ++ 5의 응용 프로그램 마법사는 다음과 같은 이름으로 파생 된 클래스를 만듭니다 : 클래스 CTestMessage의 멤버 함수는 CTest_SDIView (CView의 파생)의 멤버 함수를 호출합니다. 또는 클래스 CMainFrame의 자체 구현 멤버 함수를 호출하는 AfxGetMainWnd()를 사용하는 PostMessage입니다. 다음 단계는 CMainFrame 클래스의 자체 구현 된 멤버 함수에서 CTest_SDIView에 보내는 메시지 보내기 메시지입니다. 보시다시피, 응용 프로그램은 이 메시지 루프에서 회전하는 시간의 대부분을 소비하며, 여기서 이를 처리하는 해피 윈도우로 메시지를 즐겁게 보냅니다. 그러나 프로그램이 종료되기를 원할 때 어떻게 해야 할까요? 우리는 while () 루프를 사용하기 때문에 GetMessage()가 FALSE (일명 0)를 반환하는 경우 루프가 끝나고 WinMain () 끝에 도달하여 프로그램을 종료합니다. 이것이 바로 PostQuitMessage()가 수행하는 것입니다. WM_QUIT 메시지를 큐에 배치하고 양수 값을 반환하는 대신 GetMessage()가 Msg 구조를 채우고 0을 반환합니다.

이 시점에서 Msg의 wParam 멤버는 PostQuitMessage()에 전달 한 값을 포함 하 고 무시 하거나 WinMain() 프로세스가 종료 될 때 종료 코드로 사용 됩니다 에서 반환할 수 있습니다. . 기술 팁과 트릭에 대한 내 블로그 공유 경험은 다음과 같습니다 : 언어 프로그래밍 : C +, C #, ….