섹션 2 델파이 리버스 엔지니어링
현재 Borland는 실행 파일(.exe) 또는 "Delphi 컴파일 파일"(.dcu)을 원시 프로그램 코드(.pas)로 디컴파일하기 위한 제품을 제공하지 않습니다.
델파이 컴파일 단위: DCU ( 델파이 컴파일 단위: DCU )
Delphi 프로젝트가 컴파일되거나 실행되면 컴파일 단위(.dcu) 파일이 생성됩니다. 기본적으로 각 유닛의 컴파일된 버전은 별도의 바이너리 파일에 저장됩니다. 파일 이름은 유닛 파일과 동일하며 확장자는 .DCU입니다. 예를 들어, unit1.dcu 파일에는 unit1.pas 파일에 선언된 코드와 데이터가 포함되어 있습니다.
즉, 컴파일된 구성 요소와 같은 일부 리소스가 있는 경우 이를 디컴파일하고 소스 코드를 가져오기만 하면 됩니다. 잘못되었습니다. DCU 파일 형식은 문서화되지 않았으며(소유자 형식) 버전마다 변경될 수 있습니다.
컴파일러 이후: Delphi 리버스 엔지니어링
Delphi 실행 파일을 디컴파일하려는 경우 알아야 할 몇 가지 사항이 있습니다.
Delphi 소스 프로그램 파일은 일반적으로 ASCII 코드 파일(.pas, .dPR)과 리소스 파일(.res, .rc, .dfm, .dcr)의 두 가지 파일 형식으로 저장됩니다. Dfm 파일에는 양식에 포함된 개체의 세부 정보(속성)가 포함되어 있습니다. 실행 파일을 생성할 때 Delphi는 .dfm 파일의 정보를 완성된 .exe 코드 파일에 복사합니다. 양식 파일은 모든 안정적인 속성 값을 포함하여 양식의 각 구성 요소를 설명합니다. 양식의 위치, 버튼 제목을 변경하거나 구성 요소에 이벤트 프로시저를 할당할 때마다 Delphi는 이러한 변경 사항을 DFM 파일(이벤트 프로시저에 대한 코드가 아니라 pas/dcu 파일에 저장됨)에 기록합니다. . 실행 파일에서 'dfm'을 얻으려면 Win32 실행 파일에 어떤 유형의 리소스가 저장되어 있는지 이해해야 합니다.
Delphi로 컴파일된 모든 프로그램은 CODE, DATA, BSS, .idata, tls, .rdata, .rsrc 부분으로 구성됩니다. 디컴파일 관점에서 가장 중요한 부분은 CODE, .rsrc입니다. "Delphi 프로그램에 기능 추가"("Delphi 프로그램에 기능 추가") 기사(번역자의 추가: 차례로)에서 Delphi 실행 파일 형식, 클래스 정보 및 DFM 리소스에 대한 몇 가지 흥미로운 사항이 논의됩니다. 이벤트 할당 방법 동일한 양식에 정의된 다른 이벤트 핸들러에 자신만의 이벤트 핸들러를 추가하여 실행 파일에 코드를 추가하여 버튼 제목을 변경하는 방법.
.exe 파일에 저장되는 다양한 유형의 리소스 중 RT_RCDATA 또는 애플리케이션 정의 리소스(원시 데이터)에는 컴파일 전 DFM 파일에 포함된 정보가 있습니다. .exe 파일에서 DFM 데이터를 선택하려면 EnumResourceNames API 함수를 호출하면 됩니다... .exe 파일에서 DFM 데이터를 선택하는 방법에 대한 자세한 내용은 "Delphi DFM 탐색기 코딩"("DFM 탐색기 작성"을 참조하십시오. 델파이 DFM 검출기'). (번역자 추가: 속속 번역됨)