C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[66335] Re:빌더님께! RAD XE2 두개로 디자인타임 패키지 디버깅 할 때요
빌더 [] 1207 읽음    2012-02-20 18:52
나이스 님이 쓰신 글 :
: 빌더님께서 올려주신 글 잘 보았습니다.
: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=66145
:
: 디자인타임 패키지 디버깅하기 위해서 두번째 RAD XE2를 디버기 타겟으로 올렸는데요
:
: ESlipException
: ESanctSocketException
: ESanctSocketException
:
: 타겟 RAD XE2가 실행되면서 위와 같은 에러가 나타납니다. 이런 에러가 나타나는 이유가 무엇이고
: 또 무시하고 사용해도 괜찮은 건지 궁금합니다. 빌더님. 바쁘실테지만 답변 부탁드립니다.




답변:


IDE 개발환경과 통합해서 돌아가는 익스텐션 모듈을 구현하려면 Tools API의 사용이 필수적임에도 불구하고
언급되어있는 내용과 관련한 질문이 하나도 올라오지 않는 것을 보면... Tools API를 활용하고 있거나 또는...
Tools API를 사용할줄 아는 사람들이 거의 없는 것 같네요.

ESlipException 이.. 발생하는 이유는...

메인으로 실행되는 첫번째 RAD XE2 IDE 인스턴스에서 정품사용과 관련한 인증 처리과정이 무사히
통과 되었음에도 불구하고, 두번째 Debuggee 타겟으로 올라오는 RAD XE2 IDE가 이를 인식하지
못하고 인증과정을 중복 처리 하는 과정에서 오류로 보고 IDE가 던져주는 예외 입니다.
ESanctSocketException도 첫번째 IDE가 Embarcadero사의 인증서버에 소켓을 열어두었는데
두번째 IDE가 포트를 다시 할당 받으려고 하는 것을 오류로 보고 IDE가 던져주는 예외 입니다.


유져들에 의해서 디버깅 환경이 이런 식으로 구성돼서  사용될 수 있다는 것도 고려했다면,  이 경우 예외를
던질 필요가 없는 건데, Embarcadero 사에서 IDE 개발환경을 설계할 때.. 세심하게 이런 부분도 신경 써서
제품을 디자인 했어야 했는데 그렇질 못한 거죠.


위와 같은 예외상황은 무시하고 사용해도 디버깅에는 전혀 지장이 없고요.

원천적으로 문제를 해결해서 사용하고자 한다면... 두가지 처리가 가능한데, 간략하게 방법만 말씀 드리죠.


첫번째 방법.

RAD XE2 IDE의 실행파일인 BDS.EXE 를 패치하는 겁니다.
인증과 관련되는 부분이 쉽게 해킹되는 것을 막기 위해서 Embacadero 애들이... 관련 부분의 코드를
암호화 해놓았기 때문에... 패치하기 위해선 BDS.EXE 에서 어떤식으로 코드가 Unpack 되고 있는지
BDS.EXE 파일을 디스어셈블링해서 어셈블리 수준에서 Unpack 알고리즘 부터 선행분석하는 게 필요합니다.


두번째 방법.

첫번째 방법이 번거롭다면... Tools API를 이용해서 BDS.EXE 가 사용하는 DefaultException 핸들러를
런타임 중에 후킹해서 해당 Exception을 무시하도록 해주는 익스텐션 모듈을 만들어 주면 됩니다.
익스텐션 모듈은 IDE의 어드레스 공간에서 같은 컨텍스트로 돌아가고, 익스텐션 모듈의 로드 시점에선
IDE의 인증과 관련한 부분의 코드블럭이 이미 Unpack 된 이후이기 때문에 첫번째 방법과 같은 Unpack
알고리즘을 선행분석할 필요도 없고, IDE의 DefaultException 핸들러를 후킹해주면 되죠.

+ -

관련 글 리스트
66331 빌더님께! RAD XE2 두개로 디자인타임 패키지 디버깅 할 때요 나이스 949 2012/02/20
66335     Re:빌더님께! RAD XE2 두개로 디자인타임 패키지 디버깅 할 때요 빌더 1207 2012/02/20
66352         Re:Re: 빌더님!! 답변 감사합니다 나이스 829 2012/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.