C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[27010] 엑세스 오류좀 잡아주실분 계십니까...사례드리겟습니다.
김길동 [saydgsb] 7311 읽음    2017-03-25 23:01
작은서버를 운영하는데 공격자가 어떠한 것을하면 Access violation at address오류가 게이트쪽에서 계속 메시지창으로 올라와서 결국 게이트가 닫깁니다. 이걸 어디서 잡을지...
첨부파일 합니다. 부탁좀드립니다~

이 오류를 잡아주실 능력자분계시면 카톡 10004y 로 카톡한통만주십시요.
정성훈.해미 [sage5nor]   2017-03-27 09:34 X
딸랑 메모리 에러 화면만 첨부하면
세상에 어떤 개발자도 해결할 수 없습니다.

해당 소스 일부라도 보여주셔야 해결되지요.
양병규 [bkyang]   2017-03-27 10:48 X

제 생각엔 김길동님이 Access violation에 대해서 잘 모르셔서 그런 것 같습니다.

"Access violation at address 1111"이라는 메세지는 "1111번지의 메모리에 접근하는 건 위배다."라는 뜻입니다.

이 오류는 Application이 스스로 확인해서 알아낸 오류가 아니고
운영체제가 메모리를 관리하면서 Application한테 알려준 것도 아니고
CPU가 알려준 에러입니다.
실행 중에는 1111번지 위치에 뭐가 있었는지 알 수 있는 방법이 없습니다.
그래서 그냥 메모리 주소만 알려주는거구요.
그래서 디버깅을 해봐야 합니다.
소스코드를 보면 그 주소에 뭐가 있었는지 알 수 있거든요.
디버깅을 하면 디버거가 1111번지 주소에 있던 것을 역추적해서 소스코드에서 알려줄겁니다.

가장 흔한 예로는
var
  i: Integer;
와 같이 컴파일러가 알아서 메모리 관리를 해주는 부분에서 발생하는 것이 아니라

클래스와 같이 개발자가 직접 생성하고 소멸하는 것들을 관리를 잘못해서 발생하구요.
GetMem, FreeMem, New, Dispose와 같이 직접 메모리를 관리하는 기능을 잘못 사용해도 마찬가집니다.

혹은
본인이 직접 하지 않았어도 인터넷에서 받은 콤포넌트나 라이브러리가 그런 에러를 가지고 있을 수도 있습니다.

여튼...

Access violation 에러를 질문하는 건,
비유로 설명하면

운전중에 차가 고장났는데 카센타에 전화해서 "내 차가 고장났는데요 왜 고장난거죠?"라고 질문하는 것과 똑같습니다.
뭐하다가 어떻게 하다가 어떤 증상을 보였는지 아무것도 모르면 아무것도 알 수 없구요. 첨부하신 화면은 고장난 차를 사진찍어서 올린 거나 다름 없습니다. 그걸로는 아무 것도 알 수 없네요.

요즘에는 책을 사보기도 마땅치 않는데요.
델파이 (델파이 맞죠? C++빌더인가?) 메뉴얼에도 자세히 설명돼 있구요. 여기 볼랜드포럼이나 델마당 같은데서 찾아 보시려면 아주 옛날 자료에서 찾아보시면 관련 내용이 있을 겁니다. Access violation 해결하는 법이라던가, 디버깅하는 법 등에 대해서요.

화이팅입니다.
(세상에 쉬운게 하나도 없죠. 개발자가 코딩을 잘못한 건 맞지만 사람이 이해할 수 있는 고급언어라는 신분에 걸맞지 않는 그런 원시적인 메세지 나부랭이나 띄워대는 걸 보면 개발툴 시장이 진정한 인간을 위한 기술이 되려면 아직도 아직도 한참 멀었다는 생각이 듭니다. 언제쯤 그런 쓰레기같은 원시적인 메세지를 안 보는 날이 올까요. 좀 황당한 상황이겠지만 그러려니 하시고 잘 배워보세요. 알고보면 개발툴이 알아서 해주는 건 극히 일부랍니다.)
정영훈 [allinux]   2017-04-04 14:45 X
아마도 그 어떤짓이라는 것이 퍼징일 확률이 높습니다.
입력에 쓰레기 데이터(보통 긴 데이터)를 넣어서 Access violation을 일어키는 겁니다.
배열등의 공간보다 큰 더미데이터를 입력하면 넘쳐서 결국 스택프레임을 손상시키고 리턴어드레스를 조작할 수 있게 됩니다.
리턴어드레스를 조작할 수 있다는 말은 내가 원하는 함수를 수행시킬 수 있다는 의미입니다.
즉 Access violation이 발생한다는 정보는 버퍼오버플로우 공격이 가능하다는 것을 암시합니다.

+ -

관련 글 리스트
27010 엑세스 오류좀 잡아주실분 계십니까...사례드리겟습니다. 김길동 7311 2017/03/25
27053     이글과 아래글의 댓글에 도박사이트 광고가 붙어 있네요.삭제요망(냉무) Intotheblue 5523 2017/04/11
27016     비슷한 케이스 해결 방법 조대현.Clau 5495 2017/04/02
27012     Re:엑세스 오류좀 잡아주실분 계십니까...사례드리겟습니다. 초행길 5520 2017/03/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.