문제

우리는 순간에 대규모 마이그레이션 프로젝트를 진행하고 있으며 Live Estate에 배치 된 코드를 소스 컨트롤에 보유한 코드와 일치하는 코드를 검증하려고합니다.

분명히 .NET 코드는 분해 할 수 있기 때문에 비교하기 쉽습니다. 편집 방식으로 인해 VB6 EXE에서 이것이 가능하다고 생각하지 않습니다.

누구든지 소스 코드를 검증 할 수있는 방법에 대한 아이디어가 있습니까? 컴파일 된 실행 파일은 라이브 파일과 일치합니다.

감사

도움이 되었습니까?

해결책

Visual Basic에는 컴파일의 두 가지 방법이 있습니다. 하나는 통역사 (P- 코드라고 함)가 더 작은 이진을 초래할 수있는 두 번째는 "일반"Windows .Exe 파일 (네이티브)을 생성하는 두 번째는 도입 되었기 때문에 소개되었습니다. p 코드보다 빠르야한다고 가정했다. 이 옵션으로 컴파일 된 파일 크기가 증가했지만. 컴파일이 P 코드를 사용하는 경우 이론적으로 소스를 복원 할 수 있습니다.

어느 쪽이든 수행하기가 매우 어렵지만 부분적으로 수행 할 수 있다고 주장하는 도구가 있습니다. 내가 아는 것 (시도한 적이 없지만 시험판이 있습니다)은 VB-Decompiler입니다.http://www.vb-decompiler.org/

다른 팁

불행히도 그것은 거의 불가능합니다. 다른 기계에서 컴파일 된 VB6 코드마다 EXE 크기와 배포 요구 사항이 다릅니다.

이것이 이전 VB'ers가 코드를 컴파일하기위한 전용 기계를 가지고있는 이유입니다.

이렇게하면 이미 배포 된 항목에 도움이되지 않지만 모든 컴파일에서 개정 번호를 올리면 (자동으로이를 수행 할 프로젝트 설정이 있습니다) 버전 번호를 쉽게 비교할 수 있습니다.

내 오래된 회사는 해당 VB-Decompiler의 사본을 구입했으며 VB5/6 이전에 P 코드 추가를 생성하기 전에 언급 한 바와 같이, 해당 도구는 일부 코드를 생성했으며 "읽기"가 될 수있는 어셈블리 코드가 아닌 경우.

컴파일 된 모든 코드가 있으면 해당 코드의 CRC를 필드에 배포 된 내용과 비교할 수 있습니다. 그러나 원래 컴파일 된 코드가없는 경우 코드를 컴파일 한 방법에 따라 (기본 코드 대신 P 코드를 사용한 경우 분해 할 수 있지만 분해는 소스 코드와는 다릅니다). 나는 당신이 EXE와 함께 PDB를 배송했을지 의심하지만, 그랬다면, 당신은 그것들을 사용하여 저장소의 소스 코드와 비교할 수 있습니다.

다양한 라이브러리를 확인하고 자동으로 컴파일 할 수있는 신뢰할 수있는 컴퓨터가 있어야합니다. 읽기 전용이지만 접근 가능한 위치에 보관하십시오. 그런 다음 배포 된 사이트와 비교 사이트 간의 이진 비교를 수행하십시오.

그러나 준수 된 단위를 분해하는 논리는 확실하지 않습니다. 우리 회사와 내가 아는 대부분의 다른 장소는 빌드 컴퓨터와 단위 테스트의 조합을 사용합니다. 우리 회사에서 우리가 만든 Exe는 많은 라이브러리에 매우 얇은 껍질입니다. 예를 들어 버튼 클릭은 실제 처리를 수행하는 UI 활성 X DLL로 전달됩니다. 빌드 후 우리가하는 일은 단위 테스트 목록을 수행하는 특별한 exe를 실행합니다. 그들이 모두 통과했다면 우리는 우리의 도서관의 90%가 좋은 라이브러리를 알고 있습니다. 실제 exe에 관해서는 우리는 약 2 시간이 걸리는 손 절차가 있고 우리는 좋습니다. IIT는 EXE에서 오류가 발생하는 경우가 드 rare니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top