VBKiller 사용 지침
Killer는 VB 지원 역분석 도구입니다. 우선, VB 프로그램을 VB 소스 코드로 디컴파일하는 데는 도움이 되지 않는다는 점을 말씀드리고 싶습니다. 이는 VB 프로그램의 디스어셈블리를 VB 코드에 더 가깝게 만들 수 있을 뿐입니다.
IDA를 사용하면 VB 프로그램의 거의 모든 클래스 구조, 메소드 테이블, 함수 본문을 생성할 수 있으며 VB 프로그램에서 참조하는 COM의 CLSID를 식별하고 ProgID를 사용하여 이름을 지정할 수 있습니다. 모든 COM 프로그램(VB가 아닌 경우에도 메서드 테이블과 함수 본문을 컴파일하고 메서드 테이블 구조를 만들 수 있습니다. 이러한 구조는 분석할 VB 프로그램에서 사용할 수 있습니다. 이러한 과정을 거쳐 분석되는 VB 프로그램은 IDA에서 매우 표준화된 수많은 클래스와 메소드를 형성하게 되는데, 이는 소스코드를 리버스 엔지니어링하는 것과 크게 다르지 않습니다.
그것을 사용하는 방법:
찾아보기 버튼을 클릭하여 COM 프로그램, DLL, Exe 또는 ocx를 선택합니다. VB 프로그램이 아닌 경우 "VB가 아닌 프로그램"을 선택하고 클릭하여 봅니다. 왼쪽 상자에는 선택한 프로그램의 모든 COM 인터페이스가 나열됩니다. 클래스와 열거도 보려면 "인터페이스를 제외한 모든 클래스 표시"를 선택할 수 있습니다. 인터페이스를 클릭하면 메소드 테이블의 주소와 메소드 본문의 실제 주소를 포함하여 인터페이스의 모든 메소드가 오른쪽에 표시됩니다. 처음 7개의 기본 메소드를 표시하려면 "기본 인터페이스 메소드 표시"를 선택해야 합니다. VB 프로그램이 아닌 경우 오른쪽에 이미지 기본 주소와 가상 기본 주소가 있습니다. 이미지 기본 주소는 프로그램의 ImageBase이고, 가상 기본 주소는 메모리 공간에 할당된 시작 주소입니다. 아마도 이 주소는 기본적으로 계산될 것입니다. 잘못된 경우 프로그램에서 얻은 메소드 테이블 주소가 실행 공간에 있고 이 두 기본 주소를 알고 있어야 하므로 수동으로 수정해야 합니다. 정적 파일이므로 매우 중요하므로 채울 수 없습니다. 그렇지 않으면 오류가 인식됩니다. 현재 선택된 인터페이스에 해당하는 IDC 파일을 생성하려면 IDC 생성을 클릭합니다. 클래스 및 열거형은 IDC를 생성할 수 없으며 해당 메소드 주소를 자동으로 식별하고 처리할 수 있습니다. 모든 인터페이스에 대한 IDC 파일을 생성하려면 모두 생성을 클릭합니다(동일한 파일에 저장). "구조 생성"을 선택하고 두 개의 생성 버튼을 사용하여 이 COM에 해당하는 구조 생성 스크립트를 생성합니다. 이 구조 IDC를 IDA에 로드하면 다음과 같은 해당 구조의 일괄 처리가 IDA에서 생성됩니다. 분석된 프로그램 중 하나는 데이터베이스 작업을 사용합니다. 일반적으로 ADO 및 CAPICOM의 구조 스크립트를 로드해야 합니다.
VBKiller에는 아직 완료되지 않은 COM을 검색하고 식별하는 기능도 있습니다.
같은 디렉토리에는 여러 개의 다른 c 파일이 있습니다.
그 중 header.c는 위의 IDC 파일에 포함되어 있습니다. 이것은 공용 함수 파일입니다.
vb.c는 인터넷에 떠돌고 있는 vb.idc의 수정된 버전인데, 많이 바뀌지 않은 것 같습니다. 이 스크립트는 VB 프로그램의 클래스 구조와 이벤트 테이블을 설정하는 데 사용할 수 있습니다.
vboop.c는 VB의 객체 지향 기능을 분석하는 데 도움을 주기 위해 특별히 설계된 스크립트입니다.
내부의 Do_BasicOOP 메소드는 주로 vb.c에 설정된 이벤트 테이블을 기반으로 해당 함수 본문을 처리합니다. 함수가 생성되지 않으면 함수를 생성하고 이벤트 테이블 이름과 일치하도록 함수 이름을 변경하고 생성합니다. 각 클래스를 동시에 분석합니다. 메소드 테이블 구조는 나중에 분석됩니다.
ParseAPI는 VB 내부 함수를 처리하는 데 사용됩니다. 지정된 모든 함수의 상호 참조를 검색하고, 함수에 반복 가능한 주석을 추가하고, 매개변수를 식별하고, 매개변수가 레지스터인 경우 추가 검색을 수행합니다. 주석이 포함된 레지스터 데이터의 소스입니다. 스캔된 기능과 주석은 현재 대부분의 기능이 필요에 따라 지정됩니다.
ParseNew 메서드는 모든 _vbaNew 및 _vbaNew2 상호 참조를 검색하고 해당 CLSID를 식별하는 데 사용됩니다. 식별할 수 있으면 쉽게 볼 수 있도록 해당 프로그램 이름으로 수정됩니다. 인식 기능은 내장되어 있습니다. 현재 내장된 기능은 많지 않습니다. 필요에 따라 직접 추가할 수 있습니다. 스캔이란 인식할 수 없는 CLSID가 발견되면 프로그램이 동일한 디렉터리의 UnKnown.txt에 CLSID를 기록한다는 것입니다. 이를 분석한 후 파일을 확인할 수 있습니다. 인식할 수 없는 CLSID가 발견되면 레지스트리로 이동합니다. CLSID를 입력하고 프로그램 이름을 얻은 후 프로그램의 해당 위치에 추가합니다.