별표 보기 원칙에 대해
이것은 매우 전문적인 소프트웨어 프로그래밍 문제입니다. 다음을 살펴보세요. 거의 모든 소프트웨어는 사용자가 입력한 비밀번호가 다음과 같이 표시되도록 사용자 비밀번호 입력 상자에 작업을 수행했습니다. 별표 "*"를 사용하면 악의적인 사용자가 비밀번호를 직접 볼 수 없습니다. 그러나 인터넷에는 별표를 실제 비밀번호로 복원할 수 있는 다양한 버전의 별표 비밀번호 뷰어가 있습니다. 나는 내 아이디어를 바탕으로 별표 뷰어의 소스 코드를 작성하고 그 원칙에 따라 몇 가지 예방 조치를 취했습니다. 이 소스 코드를 사용하여 작성된 프로그램은 popo, msn 및 qq와 같은 많은 소프트웨어의 하위 버전의 비밀번호를 볼 수 있습니다. 사용자가 VC, VB 및 BCB로 작성된 소프트웨어를 사용하고 편집 또는 텍스트 구성 요소를 직접 사용하는 경우 이 코드도 가능합니다. 실제 비밀번호를 복원하세요. 그러나 이 수정 방법을 사용한 후의 소프트웨어, 인터넷에 널리 유포된 passXp 및 이전 보기 방법은 모두 유효하지 않습니다. 좋아요, 요점을 살펴보겠습니다. 1. 별표 뷰어의 원리 편집 또는 텍스트 구성 요소에는 "PasswordChar"라는 속성이 있습니다. 일반적으로 실제 비밀번호를 별표로 숨기도록 이 속성을 설정하지만 EM_GETPASSWORDCHAR 메시지를 받은 후에는 PasswordChar 속성의 값을 반환합니다. . , EM_SETPASSWORDCHAR 메시지를 받은 후 PasswordChar 속성 값을 수정합니다. 물론 원래의 "*" 설정을 취소하고 실제 문자를 표시하도록 할 수 있습니다. 별표가 많이 있습니다. 비밀번호 뷰어는 모두 이 원칙에 따라 작성되었습니다. 키 코드는 다음과 같습니다(BCB를 예로 사용): void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
POINT P;
::GetCursorPos( &P);//마우스 화면 위치 캡처
//마우스 위치 아래 창 핸들 가져오기
HWND HWnd = ::WindowFromPoint(P); p>
// "Get Title String" 메시지를 이 창으로 보냅니다.
char buffer[100];char Char;
Char = SendMessage (HWnd,EM_GETPASSWORDCHAR,0 ,0);//비밀번호 문자 가져오기
PostMessage (HWnd,EM_SETPASSWORDCHAR,0,0);//비밀번호 문자 취소
Sleep (60);
SendMessage (HWnd,WM_GETTEXT, 255,long(buffer)); 실제 비밀번호 가져오기
PostMessage (HWnd,EM_SETPASSWORDCHAR,Char,0); 비밀번호 문자 복원 //Form1의 문자열 개체에 표시 window
Caption = buffer;
} 여기서 타이머는 100밀리초마다 위 코드를 호출하는 데 사용됩니다. 우리는 주로 몇 가지 메시지가 우리의 큰 이벤트를 망쳤다는 것을 이미 확인했습니다. 이러한 메시지를 차단할 수 있다면 실제 비밀번호를 안전하게 숨길 수 있습니다. 인터넷에서 메시지를 차단하는 방법은 여러 가지가 있지만 모두 너무 복잡합니다. 제 생각은 다음과 같습니다: 2. 별표 비밀번호 뷰어로부터 보호합니다. TEdit에서 TBugEyesEdit이라는 새 구성 요소를 파생시킨 다음 해당 메시지 정의를 수정할 수 있습니다. .
헤더 파일에 다음 코드를 추가합니다: public:
__fastcall TBugEyesEdit(TComponent* Owner);
void __fastcall BugEyes(TMessage &Msg);//사용자 정의 메시지 처리 기능
BEGIN_MESSAGE_MAP //메시지 매핑
VCL_MESSAGE_HANDLER(EM_GETPASSWORDCHAR,TMessage,BugEyes)
VCL_MESSAGE_HANDLER(WM_GETTEXT,TMessage,BugEyes)
VCL_MESSAGE_HANDLER(EM_SETPASSWORDCHAR, TMessage ,BugEyes)
END_MESSAGE_MAP(TEdit) //메시지 매핑을 종료하고 cpp 파일에 다음 코드를 추가합니다: void __fastcall TBugEyesEdit::BugEyes(TMessage &Msg)
{ p >
Msg.Result =0;
} 마지막으로 이 새 구성 요소를 설치하고 자신의 프로그램에 추가하고 PasswordChar 속성을 "*"로 설정한 다음 프로그램을 실행하고 별표를 표시합니다. 비밀번호 뷰어가 작동하지 않게 되고 실제 비밀번호를 더 이상 볼 수 없습니다.