문제

'업데이트'버튼이있는 창이 열리는 MFC 응용 프로그램이있는 다음 클릭 후 매우 긴 업데이트를 수행합니다.

창이 만들어지면 (또는 Domodal과 같은 다른 곳) 프로그램에 메시지가 전송되어 버튼을 누르 었다고 생각하도록 프로그램을 수정하고 싶습니다.

나는 Ida Pro와 Ollydbg에서 아무 소용이 없다. 나는 PumpMessage를 사용하는 것을 보았지만 이것은 성공하지 못했습니다.

어떤 충고?

도움이 되었습니까?

해결책

보조 "매크로"프로그램을 사용한다는 아이디어가 마음에 들지 않으면 원래 프로그램의 이진을 패치하여 버튼의 BM_CLICK 처리기를 호출 할 수 있습니다. 통화를위한 공간을 찾을 수있는 경우 (인수가없는 최소 5 바이트)를 찾으면 OLLYDBG 만으로도이 작업을 수행 할 수 있습니다 (코드를 편집 한 후에는 선택한 후 "COPY TO EXECINGABLE" -> "SELECTION"을 선택하여 오른쪽 클릭하십시오. 메뉴). 그렇지 않으면 PE 편집기 (예 : LordPe 또는 PE Tools)를 사용하여 새 코드 섹션을 만들고 코드를 추가해야합니다 (일반적으로 프로그램의 통화를 섹션으로 이동하여 어디에서 이동해야합니다. 원래 통화와 버튼의 클릭 핸들러 통화를 수행 한 다음 패치가 점프 후 이전 위치로 돌아갑니다).

다른 팁

테스트 자동화 기술을 사용하여 수행하는 몇 가지 방법이 있지만 가장 간단한 것은 원하는 버튼의 창 핸들을 가져 와서 BM_CLICK 메시지. 이것은 Windows에서 C/C ++에 대한 실무 지식이 있다고 가정합니다. 그렇지 않은 경우 .NET 또는 기타 기술을 사용하는 다른 방법이 있습니다. 나는 Ida-Pro 또는 OllyDBG에 익숙하지 않습니다.

이 Perl 모듈 Win32 :: Guitest를 참조하면이 작업을 수행하는 데 도움이 될 수 있습니다. Perl 스크립트를 작성하여 프로그램에 포함시킬 수 있습니다. 또는 필요한 요구 사항을 감싸고 사용할 수있는 Win32 API를 사용할 수 있습니다.

점심을 먹을 두 번째 프로그램 만 만들고 마우스 클릭을 사용하여 사용합니다. sendInput (...)

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