DriverBuddyReloaded 폴더와 DriverBuddyReloaded.py 스크립트 파일을 IDA 플러그인 폴더에 복사하십시오.
%APPDATA%Hex-RaysIDA PropluginsC:Program FilesIDA Pro 7.6plugins~/.idapro/plugins/ Python v. 3.x를 사용하는 경우 idapyswitch.exe 바이너리 (IDA 폴더에 위치)를 관리 명령 프롬프트에서 실행하십시오.
참고 : 이 스크립트가 실행하려면 IDA SDK> V.7.5가 필요합니다.
자동 분석 기능을 사용하려면 :
Edit -> Plugins -> Driver Buddy Reloaded 또는 CTRL+ALT+A 눌러 자동 분석을 시작하십시오.<DRIVER_NAME>.sys-YYYY-MM-DD-TIME_STAMP-DriverBuddyReloaded_autoanalysis.txt 파일은 IDA의 DB 디렉토리에 작성됩니다.IOCTL을 해독하려면 :
Driver Buddy Reloaded -> Decode IOCTL 선택하십시오. 또는 CTRL+ALT+D 바로 가기를 누릅니다.함수 내의 모든 IOCTL을 해독하려면 다음과 같습니다.
DispatchDeviceControl , DispatchInternalDeviceControl , Possible_DispatchDeviceControl_# )의 첫 번째 명령에 마우스 커서를 놓습니다.Driver Buddy Reloaded -> Decode ALL IOCTLs in Function 선택하십시오. 또는 CTRL+ALT+F 지름길을 누릅니다.DriverName.sys-2021-12-10-TIME_STAMP-IOCTLs.txt / DriverName.sys-2021-12-10-TIME_STAMP-IOCTLs.txt_dumb.txt 파일은 IDA의 dB 디렉토리에 따라 작성됩니다. volnerable_function_lists 디렉토리에는 잠재적으로 위험한/문제가있는 함수, Windows API 및 Opcodes 목록이 포함되어 있습니다. 특정 기능/API가 나열된 이유에 대한 간단한 설명이 제공됩니다. 운전자의 특정 기능을 포함하여 custom 목록을 편집 할 수 있습니다.
참고 : winapi_function_prefixes 기능 이름의 시작과 부분 일치합니다 (예 : Zw ZwClose , ZwCommitComplete 등과 일치 함) 반면 winapi_functions 정확히 일치 만 수행합니다.
find_opcodes.py에서 find_opcode_data 옵션은 운전자 버디가 다시로드되어 데이터 섹션에서 opcodes를 찾을 수 없습니다. True 로 전환하면이 라인을 따라 무언가를 인쇄 할 것입니다. Found jnz short loc_15862 in sub_15820 at 0x00015852 코드가 검색 된 Opcode를 다시 가져 오기 때문에 선택을 다시 정의합니다.
조심하십시오 : 그것을 True 로 전환하면 더 많은 오 탐지가 생성됩니다!
Driver Buddy Reloaded는 일부 지루한 Windows 커널 드라이버 역 엔지니어링 작업을 자동화하는 데 도움이되는 IDA Pro Python 플러그인입니다. 다음과 같은 편리한 기능이 여러 가지가 있습니다.
DispatchDeviceControl / DispatchInternalDeviceControl 함수 찾기WDF 및 WDM 드라이버를위한 공통 구조를 채우는 것IRP 및 IO_STACK_LOCATION 와 같은 구조를 식별하고 레이블링하려는 시도WDF 기능에 대한 레이블 호출DeviceName 찾기Pooltags 
이 도구는 DispatchDeviceControl 루틴을 자동으로 찾아서 식별 할 수 있습니다. 이 기능은 모든 들어오는 모든 DeviceIoControl 코드를 해당 코드와 관련된 특정 드라이버 기능으로 라우팅하는 데 사용됩니다. 이 기능을 자동으로 식별하면 각 드라이버에 대한 유효한 DeviceIoControl 를 찾을 수 있습니다. 또한 충돌로 인해 드라이버에서 가능한 취약점을 조사 할 때이 기능의 위치를 아는 것은 충돌 DeviceIoControl 코드와 관련된 특정 기능 호출에 초점을 좁히는 데 도움이됩니다.
분석이 성공하면 일부 잠수함은 다음과 같이 이름이 바뀔 것입니다.
DriverEntry : 운전자가로드 된 후 호출되는 최초의 첫 번째 드라이버 지원 루틴. 드라이버를 초기화 할 책임이 있습니다.Real_Driver_Entry : 일반적으로 DriverEntry 의 실행이 전송 된 기능. 일반적으로 DeviceName 초기화되는 곳입니다.DispatchDeviceControl / DispatchInternalDeviceControl : 공구가 특정 오프셋에서 함수를 복구 할 수 있으면 함수의 이름이 적절한 이름으로 바뀝니다.Possible_DispatchDeviceControl_# : 도구가 DispatchDeviceControl 또는 DispatchInternalDeviceControl 복구 할 수없는 경우 실험 흐름에 따라 실험 검색을 사용하고 기능이 알려진 IO_STACK_LOCATION & IRP 주소를로드하는 경우를 점검합니다. 함수가 DispatchDeviceControl 일 수 있음을 나타냅니다. 휴리스틱을 기반으로하기 때문에 하나 이상의 결과를 반환 할 수 있으며, 잘못된 긍정적 인 긍정적 인 것으로 나타납니다. 
모든 WDM / WDF 드라이버 중 여러 운전자 구조가 공유됩니다. 이 도구는 IO_STACK_LOCATION , IRP 및 DeviceObject 구조와 같은 이러한 구조를 자동으로 식별 할 수 있으며 역 엔지니어링 프로세스 중에 시간을 절약하고 이러한 기능이 사용되는 드라이버 영역에 컨텍스트를 제공 할 수 있습니다.

드라이버를 역전 시키지만 분석의 일부로 IOCTL 코드를 만나는 것이 일반적입니다. 이 코드는 디코딩 될 때 유용한 정보를 공개하고 취약성이 존재할 가능성이 높은 운전자의 특정 부분에 초점을 맞출 수 있습니다.
잠재적 인 IOCTL 코드를 마우스 오른쪽 버튼으로 클릭하면 컨텍스트 메뉴 옵션이 제시되고 (대안으로 커서가 의심되는 IOCTL 코드가 포함 된 줄에있을 때 Ctrl+Alt+D 바로 가기를 사용하여) 값을 해독하는 데 사용할 수 있습니다. 이렇게하면 모든 디코딩 된 IOCTL 코드가있는 테이블이 인쇄됩니다. 디코딩 된 IOCTL 코드를 마우스 오른쪽 버튼으로 클릭하면 분해보기에서 유효하지 않은 것으로 표시 할 수 있습니다. 이것은 비 IOCTL 주석을 그대로 유지합니다.
Ctrl+Alt+F 바로 가기를 사용하여 마우스 오른쪽 버튼을 클릭하면 IOCTL 디스패처 ( DispatchDeviceControl , DispatchInternalDeviceControl , Possible_DispatchDeviceControl_# )라고 생각하는 기능의 첫 번째 명령에 따라 " DECODE 옵션"옵션이 모두 나타납니다. 기능. 이것은 약간 해킹되지만 대부분의 경우 속도를 높일 수 있습니다.
DriverName.sys-2021-12-10-TIME_STAMP-IOCTLs.txt / DriverName.sys-2021-12-10-TIME_STAMP-IOCTLs.txt_dumb.txt 파일은 IDA의 dB 디렉토리에 따라 작성됩니다. 

Driver Buddy Reloaded에는 일반적으로 취약하거나 버퍼 오버 플로우 조건을 용이하게 할 수있는 C/C ++ 기능, Opcodes 및 Windows API (Doxnerable_Function_Lists 디렉토리에 정의 됨) 목록이 있습니다. 발견 된 모든 인스턴스는 자동 분석 중에 다시보고되며 민감한 기능에 도달 할 수있는 사용자 제어 코드 경로를 찾는 동안 도움이 될 수 있습니다.

이 도구는 이진 내부의 유니 코드 문자열을 보면서 경로를 찾을 수없는 드라이버 등록 장치 경로 ( DeviceName )를 자동으로 찾으려고 시도합니다. 그러면 분석가는 난독 화 된 경로를 찾기 위해 Madiant의 치실을 수동으로 사용하려고 시도 할 수 있습니다.

자동 분석 중에이 도구는 이진에서 사용하는 Pooltags pooltags.txt 와 함께 작동하는 형식으로 덤프합니다. 그런 다음 출력은 파일 끝에서 복사하여 복사 할 수 있고 나중에 WindBG에 의해 픽업 될 수 있습니다.
DriverName.sys-2021-12-10-TIME_STAMP-pooltags.txt 파일은 덤프 된 풀 테그를 모두 포함하는 IDA의 DB 디렉토리에 작성됩니다. 
0x10000 만 자동으로 디코딩되므로 많은 수의 잘못된 양성을 방지합니다. 이슈 #15DispatchDeviceControl 검색은 X64 드라이버에 대해서만 작동합니다find_opcode_data 옵션은 운전자 버디가 다시로드되어 데이터 섹션에서 opcodes를 찾을 수 없습니다. True 로 전환하면이 라인을 따라 무언가를 인쇄 할 것입니다. Found jnz short loc_15862 in sub_15820 at 0x00015852 코드가 검색 된 Opcode를 다시 가져 오기 때문에 선택을 다시 정의합니다. 조심하십시오 : 그것은 잘못된 긍정적 인 것으로 나타납니다!