특정 소프트웨어에 대한 익스플로잇을 개발하려고하는데, 두 가지 개별 동작 (하나는 잘못된 변수 할당으로 인해 프로세스가 충돌 함)로 응답 할 수 있다고합니다. EIP를 제어하고 돌아갑니다. 잘못된 주소. 이 두 가지 다른 행동의 이유는 ASLR 때문이며 일부 정보 유출 만 있기 때문에 무차별 강제로 수행해야합니다. EIP가 수정되었을 때만 프로그램을 중단하고 싶습니다. 그러나 프로세스가 끊임없이 충돌하고 respawning이기 때문에, 나는 EIP가 수정되었을 때만 멈추도록 프로그램을 알릴 방법이 없습니다. GDB에서 프로세스는 항상 충돌합니다. 이 어려움을 어떻게 극복 할 수 있습니까? (IT 보안에 게시하는 것에 대한 생각은 있지만 GDB와 더 관련이 있기 때문에 여기서는 더 좋을 것이라고 결정했습니다.)GDB 특정 크래쉬 디버그
1
A
답변
0
메모리 손상이 발생하기 전에 set a breakpoint을해야합니다. 충돌이 발생하면 gdb가 중단되고 사용자는 이미 호출 스택이 있다고 생각하는지 알려주는 show stack
명령을 사용할 수 있습니다. 그러나 EIP가 손상된 경우 함수의 스택 프레임이 부분적으로 손상되어 show stack
이됩니다. 부분적으로 손상되었습니다 (얼마나 많은 스택을 분쇄 했는가에 달려 있습니다!). 그러나이 프로세스는 메모리 손상이 발생한 위치를 좁히는 데 도움이 될 수 있으며 호출 스택에서 항상 중단 점을 설정하고 프로그램을 단계별로 실행할 수 있습니다.
GDB에도 reverse debugging이 있는데, 이는 충돌 후 뒤로 물러 설 수 있기 때문에 더 쉬운 방법 일 것입니다. 그러나이 기능은 상당히 새로운 기능입니다. 일반적으로 해커는 위에서 설명한 기술을 사용해야했습니다.
관련 문제
- 1. CDT GDB Windows에서 디버그
- 2. 둘 이상의 인수가있는 gdb 디버그
- 3. Emacs에서 gdb 모드로 플래시 디버그
- 4. UIWebView 크래쉬 애플 리케이션
- 5. GDB 디버그 OpenCV 프로그램을 사용하는 방법은 무엇입니까?
- 6. GDB 및 C++로 메모리 오류 디버그
- 7. gdb + nasm 디버그 정보가 생성되지 않습니다.
- 8. GDB - 외부 라이브러리 디버그, 소스 코드 있음
- 9. 이것은 항상 GDB 디버그 프로그램의 주소입니까?
- 10. 어떻게 cmake로 GDB 디버그 플래그를 설정합니까?
- 11. gdb 디버그 크래시 로깅에 대한 도움말
- 12. GDB
- 13. GDB 중단 점
- 14. 링크드리스트의 특정 엘리먼트에 접근하기위한 GDB 명령어?
- 15. 'pma_history'가 phpmyadmin에서 크래쉬 된 것으로 표시되었습니다.
- 16. Android/GDB - 두통 - 디버그 기호를 찾을 수 없습니다.
- 17. gdb 또는 이와 유사한 tootls를 사용하여 bsd에서 디버그
- 18. 아직도 GDB 도구를 사용하여 디버그 프로젝트의 문제는 여기에
- 19. pthread가있는 GDB
- 20. GDB 디버거 문제 -
- 21. GDB의 원격 디버그 오류
- 22. gdb 출력 이해
- 23. gdb가없는 gdb
- 24. 은 GDB
- 25. GDB 수없는
- 26. 은 GDB
- 27. Eclipse에서 GDB 디버깅이 무한정 멈춤
- 28. 루비에서 특정 디버그 출력을 활성화하려면 어떻게해야합니까?
- 29. 특정 Rowtest를 어떻게 디버그 할 수 있습니까?
- 30. 함수간에 배열을 전달하는 C 디버그
당신은 security.se를 묻는 시도 할 수 있습니다,하지만 나는 약간의 질문을 정리할 것입니다. 이 사람들은 검은 색 모자에 친절하게 가지 않습니다. – rook