문제

사용자의 정보를 얻은 다음 대화 상자를 사용하여 대화 상자를 사용하는 지점에서 응용 프로그램을 디버깅하고 해당 정보에서 일부 처리를 수행합니다. user32에서 중단 점을 설정하면 CreateDialogParamW 해당 대화 상자의 주소가 발견되었습니다.

처음에는 프로 시저가 WM_COMMAND 메시지를 받으면 해제하고 싶었습니다. 그래서 다음 명령을 사용했습니다. BP 00CFA1C0 "J (DWO (ESP + 8)== 0x111) '' '' 'GC'" 윈드 벨 (windbg)과 응용 프로그램간에 Alt-tabbing이있는 경우에도 어떤 이유로 든 WM_COMMAND 메시지를받는 대화 절차가 WM_COMMAND 메시지를받을 때 불행히도 충분하지 않습니다. 이제 대화 상자의 OK 버튼에서 BN_CLICKED의 알림 코드로 WM_COMMAND를 받으면 해제를 원합니다. 대화 상자 템플릿의 버튼의 제어 ID는 1이고 bn_clicked는 winuser.h에서 0으로 정의됩니다. 즉, 확인 버튼을 클릭 할 때 대화 상자의 wparam 인수가 1이어야합니다.

나는 다음 명령을 시도했다 : BP 00CFA1C0 "j (dwo (esp + 8)== 0x111 && dwo (esp + 12)== 0x1) '' ''gc '". 이것은 처음에는 허용되지만 중단 점이 평가되면 불평 : '& dwo (esp + 12)== 0x1에서 누락 된 숫자 식)' '; 'GC' '

2 개의 표현식을 사용하여 () 's가 도움이되지 않았습니다. 나는 도움말 파일을 살펴 보았지만 솔직히 말해서 나를 더욱 혼란스럽게합니다. 나는 Windbg에 꽤 새로운 것이고 영어는 내 모국어가 아닙니다. 누군가가 올바른 방향으로 나를 가리킬 수 있습니까?

미리 감사드립니다.

PS : 소스 코드가없는 32 비트 응용 프로그램입니다.

도움이 되었습니까?

해결책

단일 &를 사용하십시오. 표현식의 기본 구문은 MASM입니다.&&는 C ++ 구문의 일부입니다.

다음 표현식이 당신을 위해 작동합니다 :

(dwo(@esp+8) == 0x111 & dwo(@esp+12) == 0x1)
.

또는

@@c++(*(int*)(@esp+8) == 0x111 && *(int*)(@esp+12) == 0x1)
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top