2012-03-14 2 views
3

내가 같은 코드 containg 프로젝트 컴파일 : 나는 "TTEST", "하나", "둘"같은 EXE 문자열에서 볼 수컴파일 된 프로젝트에서 식별자 이름을 숨기려면 어떻게해야합니까?

ttest = record 
    one, two: string; 
    three: integer; 
end; 

, 그리고 "세".

이것은 Free Pascal에서도 Delphi의 모든 버전입니다.

컴파일 된 프로그램에 삽입하지 않을 가능성이 있습니까? 패커, 암호기 등을 사용하지 않고.

+1

이름이 상수 값이 아니면 디버그 버전과 비슷한 소리가 나기 때문에 릴리스 버전을 빌드하고 있습니까? – Remko

답변

0

이 문제가 해결되었습니다. 레코드에 "문자열"을 사용하면 레코드 이름이 실행 파일에 표시됩니다.

3

당신이 프로젝트 옵션 대화 상자 (메뉴 항목 프로젝트/옵션), 다음 전체 프로젝트를 다시 빌드에서 찾을 수있는 디버그 정보의 모든 종류를 해제하십시오 (즉, 단지 컴파일, 빌드 /를 프로젝트를 사용하지 프로젝트의 모든 유닛이 다시 컴파일되도록 메뉴 항목). 그것은 그것을 고쳐야한다.

당신이 옵션은 델파이의 버전에 따라 다릅니다 프로젝트에 선택을 취소해야 실제 옵션

: 델파이 2006/터보 델파이, 이들은 컴파일러디버깅 아래에있는 모든 옵션을 포함 (어쩌면 제외 "어설") 및 링커"TD32 디버그 정보 포함"/"원격 디버그 기호"을 포함하십시오. 최신 델파이 버전은 Visual Studio와 유사한 "Build Configuration"기능을 가지고 있습니다. 여기에서 "Release"를 선택하고 재 구축하면 모든 "telltale"디버깅 정보가 제거되어야합니다.

+0

답장을 보내 주셔서 감사합니다. 이 didnt 일, 나는 프로젝트 선택권에서 다만 모두를 끄고 EXE에서 아직도 존재한다. 내가 델파이를 사용하는 한, 이것을 제거하는 방법을 찾지 못했습니다. 그 문자열을 WinHex로 덮어 쓸 수 있으며 프로그램이 정상적으로 실행됩니다. 충돌은 없지만 문제는 누군가가 내 데이터 구조를 읽을 수 있다는 것입니다. 예를 들어 앱을 깨는 데 도움이 될 수 있습니다. – user1269348

+0

당신이주는 예문과 정확히 일치합니까? 게시 된 속성은 항상 RTTIed입니다 !!!!! 그래서 _ 일부 필드 이름이 정상적으로 표시됩니다. 원하지 않으면 게시하지 마십시오 (그러나 VCL은 부분적으로 이에 의존합니다). –

1

가능한 경우 데이터를 으로 게시하지 마십시오. 그렇지 않으면 필드 이름이 표시됩니다. 또한 속성 관리자를 cliking 할 때 생성 된 모든 메서드는 게시 된대로 자동으로 저장된다는 점을 잊지 마십시오 (dfm 파일에서도 사용되기 때문에). 그래서 각 'Button1Click'등은 보이기 때문에 쉽게 지역화 할 수 있습니다 (메소드 코드).

는 그냥 이름 창에서 쉽게 모든 하여 TSomething, 볼 수 있습니다. IDA 자유와 특별한 '델파이 문자열 IDC 스크립트합니다 (IDA 궁전에서 그것을 발견)'와 델파이로 컴파일 된 모든 프로그램을 확인 모든 게시 된 속성방법 ...

관련 문제