
Collare는 프로젝트 중 하나 이상을 사용해야하는 팀이 별도의 위치에서 파일을 공유 할 필요없이 협업 할 수있는 팀이 공동 작업을 수행 할 수 있도록하는 공동 리버스 엔지니어링을위한 도구입니다. 또한 매우 간단한 사용자 관리가 포함되어 있으며 다른 팀이 다른 프로젝트에서 작업하는 다중 프로젝트 서버에 사용할 수 있습니다. 이 도구의 백엔드는 Docker에서 nginx 실행되는 간단한 Flask app 으로, 관련 데이터를 보유하는 파일 및 JSON 기반 매니페스트로 작동하는 Docker에서 실행됩니다. 프론트 엔드는 프로젝트를 관리하고 바이너리 파일 및 해당 리버스 엔지니어링 데이터베이스로 작업 할 수있는 간단한 인터페이스가있는 PYQT 기반 GUI 도구입니다. 현재이 도구는 Binary Ninja , Cutter (Rizin) , Ghidra , Hopper Dissassembler , IDA , JEB 및 Android Studio (Decompiled by JADX) 지원합니다. 구현은 API 변경 문제를 피하기 위해 가능한 한 이러한 도구의 내부 작업에서 추상화되므로 플러그인 형태로 해당 도구에 직접 통합되지 않습니다 (아래 설명 된 데이터 마이그레이션 플러그인 제외). 이 작업은 순전히 이러한 도구로 생성 된 파일 (문자 그대로 잘 알려진 파일 확장) 및 간단한 SVN 스타일 check-out 및 check-in 작업을 기반으로합니다.
이 저장소에서 최신 바이너리 릴리스를 잡거나 저장소를 복제하고 sudo python3 setup.py install 실행하거나 Windows에서 명령 줄을 사용하고 python3 setup.py install 실행하십시오. Linux에서는이 도구를 PATH 에 설치하고 collare 명령으로 간단히 실행할 수 있습니다. Windows에서는 파일을 C:Users<USERNAME>AppDataLocalProgramsPython<PYTHON_VERSION>Scriptscollare.exe (Python을 설치하는 방법에 따라 다름)에 파일을 넣습니다.
그놈 기반 데스크탑 UI의 경우 다음 데스크탑 파일을 사용할 수 있습니다 (파일 경로는 Collare 및 Python 버전에 따라 다를 수 있음) :
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=CollaRE
Exec=/usr/local/bin/collare
Icon=/usr/local/lib/python3.8/dist-packages/collare-1.2-py3.8.egg/collare/icons/collare.png
Terminal=false
커터를 지원하려면 파일 Cutter 경로에 추가합니다 ( cmd / terminal 쓰기 Cutter 열 때 응용 프로그램이 시작됩니다). Cutter (Rizin) 프로젝트를 저장할 때 .rzdb 수동으로 추가해야합니다. 파일에 이미 가지고있는 확장자 ( exe : so )를 제거하지 마십시오.
바이너리 닌자를 지원하려면 경로에 파일 binaryninja 추가하십시오 ( cmd / terminal 쓰기를 열 때 binaryninja 응용 프로그램을 시작해야합니다). 바이너리 닌자는 기본적으로 파일 확장을 제거하고 있지만 도구는이를 설명하므로 원본 파일 확장을 수동으로 다시 넣을 필요가 없습니다. 기본 경로에있는대로 프로젝트를 저장하면 로컬 bndb 데이터베이스를 성공적으로 푸시 할 수 있습니다.
Hopper cmd terminal Hopper 호퍼는 기본적으로 파일 확장을 제거하고 있지만 도구는이를 설명하므로 원본 파일 확장을 수동으로 다시 넣을 필요가 없습니다. Ctrl+S 로 단순히 프로젝트를 저장하는 것만으로는 로컬 hop 데이터베이스를 성공적으로 푸시 할 수 있습니다.
JEB를 지원하려면 파일 jeb 경로에 추가합니다 ( cmd / terminal 쓰기를 열 때 jeb 응용 프로그램을 시작해야합니다). 이는 OS의 기본 러너 스크립트 파일을 jeb 로 바꾸면 수행 할 수 있습니다 (Windows의 경우 실제로 jeb.bat ).
IDA 도구를 지원하려면 파일 ida64 및 ida 경로에 추가하십시오 ( cmd / terminal 쓰기 ida64 / ida 응용 프로그램을 시작해야합니다).
이 도구를 지원하려면 파일 ghidraRun 및 analyzeHeadless ( .bat 용 .BAT)를 경로에 추가하십시오 ( cmd / terminal 쓰기를 열 때 ghidraRun 응용 프로그램을 시작해야 함). analyzeHeadless 는 GHIDRA 루트 디렉토리의 support 폴더에 있으므로 두 파일을 수용하도록 PATH 조정하십시오. GHIDRA가 프로젝트를 작성하지 않고 파일을 처리 할 방법이 없기 때문에 GHIDRA로 데이터베이스를 초기화하는 프로세스는 조금 더 복잡합니다. 따라서 GHIDRA 데이터베이스 ( ghdb 라고 함)를 푸시하려면 자동 처리가 실패 할 때마다 (기본적으로 처리 파일이 ELF/PE가 아닐 때마다) gpr 파일로의 경로를 지정할 때마다 프로젝트를 생성하라는 메시지가 표시됩니다.
역 엔지니어링 노력 중에 APK 및 JAR 파일이 종종 발생하므로 Collare 도구는 이러한 유형의 파일 작업도 지원합니다. 이러한 도구를 지원하려면 파일 android-studio 및 jadx 가 모두 경로에 있는지 확인해야합니다 ( cmd / terminal 쓰기 android-studio / jadx 응용 프로그램을 시작해야 함). JADX 도구는 JAR/APK 파일의 해석을 수행하는 데 사용되며 Android Studio는 결과 파일을 여는 데 사용됩니다. Android Studio를 사용하는 것은 android-studio Command (Intellij Idea)에 따라 Gradle 프로젝트를 처리하는 다른 도구를 별칭 할 수 있으므로 선택 사항입니다.
자체 readme 파일에 언급 된대로 서버 측을 배포 한 후 사용 된 인증서 파일을 응용 프로그램의 모든 사용자에게 배포하고 admin 암호로 기본 admin 계정을 사용하여 다른 사용자 계정을 만들어 Admin 탭을 통해 admin 사용자의 비밀번호를 변경하는 것을 잊지 마십시오. 사용자가 구성되면 누구나 자신의 프로젝트를 만들고 도구 자체로 작업을 시작할 수 있습니다.
프로젝트를 만들려면 사용자는 우선 URL, 자격 증명을 입력하고 서버 아이덴티티를 검증하기위한 인증서를 제공하여 원격 서버에 먼저 인증해야합니다. 그 후 상태는 Connected 로 변경되며 기존 프로젝트를 선택하거나 삭제하거나 단순히 이름을 입력하고 (영숫자 문자 및 _ 만 해당) 프로젝트에 참여할 사용자를 선택하여 ( Admin 탭에서 나중에 변경할 수 있음) 기존 프로젝트를 선택하거나 삭제하거나 새 프로젝트를 만들 수 있습니다. 프로젝트를 작성하는 사용자는 사용자 목록에 자동으로 추가되므로 자신을 선택할 필요가 없습니다.

Project View 탭에 있으면 새 폴더 (영숫자 문자 및 _ 전용, 미안함)를 만들고 드래그 앤 드롭을 사용하여 파일 (또는 폴더)을 업로드 할 수 있습니다.

도구에는 현재 프로젝트를 저장할 때 자동 업로드를 허용하는 플러그인 또는 기본 후크가 없으므로 원하는 데이터베이스를 작성한 후 로컬 DB 파일 푸시가 수동으로 트리거되어야합니다. 업로드 된 바이너리 파일을 마우스 오른쪽 버튼으로 클릭하고 바이너리를 처리하려는 도구를 선택하여 수행 할 수 있습니다. 기본 분석을 수행 할 수는 있지만 아무 것도 변경하지 않고 파일을 저장하는 것이 좋습니다 (절단기의 rzdb 추가하고 GHIDRA의 완전히 다른 프로세스를 제외하고). 경로와 파일 이름을 변경하지 마십시오 . 이 작업 Push Local DBs 수행하고 Disassemb 이렇게하면 로컬 데이터베이스를 업로드하고 지금부터 Check-out 수행하는 데 필요한 DB 파일로 작업하려는 경우 지금부터. 각 바이너리는 모든 도구에서 개별적으로 처리 될 수 있지만 이진 및 도구 당 하나의 DB 파일 만 존재할 수 있습니다.

파일 만 검사하려면 원하는 DB 파일을 마우스 오른쪽 버튼으로 클릭하고 옵션 Open File (또는 두 번 클릭)을 선택할 수 있습니다. 파일을 확인하면 로컬 파일이 열리고 DB 파일을 자유롭게 수행 할 수 있습니다. 완료되면 (또는 단순히 변경을 눌러야 할 때) Check-in 옵션을 선택할 수 있습니다. 그러면 서버에 대한 변경 사항을 업로드하고 추가 변경 사항을 확인하려면 파일을 체크 아웃할지 여부를 제기합니다. 로컬 변경 사항을 폐기하려면 상황에 맞는 메뉴에서 Undo Check-out 옵션을 선택하십시오. 이렇게하면 변경 사항을 폐기하고 서버에서 파일을 계속할 수 있습니다. Check-out 작업을 수행하지 않고 파일을 열면 먼저 파일을 열면 가짜 읽기 전용 모드로 열립니다 (DB 파일을 변경할 수 있지만 다음에 체크 아웃하거나 파일을 열면 손실됩니다).

이 도구는 또한 모든 Check-in 동작이 새로운 버전의 DB 파일로 계산되는 방식으로 DB 파일 버전을 지원합니다. 해당 버전에 적용되는 변경 사항에 더 많은 컨텍스트를 제공하는 데 사용되는 버전에 대한 주석을 삽입하라는 메시지가 표시됩니다. 그런 다음 이전 버전의 파일을 열거 나 체크 아웃하고이를 수행 할 수 있습니다.

이 저장소 내의 플러그인 폴더에는 지원되는 도구 용 플러그인이 포함되어있어 여러 도구를 사용하여 하나의 바이너리에서 작업 할 경우 도구간에 주석 및 기능 이름을 공유 할 수 있습니다. 관심있는 도구의 표준 플러그인 설치 지침을 따르십시오. 각 플러그인은 Import 및 Export 기능을 제공합니다. 도구간에 데이터를 공유 할 계획이라면 항상 다른 사람이 이름을 바꾸는 이름 변경 기능을 피하기 위해 항상 데이터를 Import 해야합니다. 플러그인에 일부 캐치가 제공되면 주어진 플러그인의 readme 파일에 언급되어 있습니다. 플러그인은 여러 사람의 동시 공동 작업을 위해 데이터를 다른 도구로 마이그레이션하기위한 것입니다.
