Idacode를 사용하면 Visual Studio 코드를 남기지 않고 IDA 환경에서 Python 스크립트를 쉽게 실행하고 디버깅 할 수 있습니다. VS 코드 확장은 시장에서 찾을 수 있습니다.
Idacode는 여전히 매우 초기 상태이며 버그가 예상됩니다. 문제가 발생하면 새로운 문제를여십시오.
debugpy 사용하므로 출력 창을 VS 코드의 출력 패널과 자연스럽게 동기화합니다.Idacode는 Python 2와 Python 3을 모두 지원합니다!
IDA 플러그인 실행의 종속성을 설정하려면 :
# make sure to use the correct Python version
# IDACode supports the latest debugpy as of version 3.0.0, make sure to upgrade!
python -m pip install --user debugpy tornado 이 저장소를 복제하거나 여기에서 릴리스 패키지를 다운로드하십시오. ida.zip 은이 저장소에서 ida 폴더의 내용을 반영합니다. 모든 파일을 IDAS 플러그인 디렉토리에 복사하십시오.
다음 단계는 환경과 일치하도록 설정을 구성하는 것입니다. idacode_utils/settings.py 편집 : 그에 따라 :
HOST : 이것은 호스트 주소입니다. 원격 위치에서 액세스 할 수 없다면 항상 127.0.0.1 입니다. 이 플러그인은 인증을 사용하지 않습니다.PORT : 이것은 Ida가 듣기를 원하는 포트입니다. 이는 IDA와 VS 코드 간의 WebSocket 통신에 사용됩니다.DEBUG_PORT : 이것은 디버그 세션을 위해 듣고 싶은 포트입니다.PYTHON : 이것은 IDA 설정이 사용하는 파이썬 분포에 대한 절대 경로입니다.LOGGING : 디버거가 파일에 로그인 해야하는지 여부를 결정합니다. 이것은 Idacode에서 문제가 발생할 때 특히 유용합니다. 찾은 경우 새로운 문제를 제출하십시오. 파일은 항상 임시 디렉토리 (예 : Windows : %TEMP% )에 있습니다. 파일을 debugpy.*.log . 이제 플러그인 메뉴에서 IDACode 클릭하여 플러그인을 시작할 수 있습니다.
VS 코드 확장은 시장에서 사용할 수 있습니다. 확장자를 구성하려면 확장자의 readme를 참조하십시오.
플러그인 메뉴에서 IDACode 누르십시오. 다음 텍스트로 인사해야합니다.
IDACode listening on 127.0.0.1:7065
버전 0.2.0 기준 Idacode는 기본적으로 활성화 된 "Save On Save"를 지원합니다. VS 코드는 현재 문서 (예 : CTRL+S)를 저장하자마자 IDA에서 스크립트를 자동으로 실행합니다. 이 동작은 설정에서 비활성화 될 수 있습니다.
귀하의 처분에는 4 개의 명령이 있습니다.

폴더가 열리면 스크립트를 넣으려는 폴더가 열리면 (대 코드가 요청할 때 폴더를 지정 해야합니다 !) IDA에 연결할 준비가되었습니다. Connect to IDA Connect and attach a debugger to IDA 그렇게 할 수 있습니다. IDA를 다시 시작할 때까지 디버그 세션이 영구적임을 명심하십시오. 디버거가 시작되면 작업 공간 폴더를 변경할 수 없습니다.
작업 공간 폴더가 기본 스크립트에있는 폴더인지 확인하십시오.
연결되면 Execute script in IDA 선택할 수 있습니다.
Idacode는 vs Code의 원격 디버거를 사용하여 IDA에 연결합니다. 모든 대 코드 기능이 지원됩니다. 그러나 Python 내장 기능 : breakpoint 를 사용하여 스크립트 EntryPoint를 지정해야합니다. 이 명령어는 디버거가 실행을 일시 중지하도록 지시합니다. 디버거가 없으면 기능을 무시합니다. Idacode는 dbg 라는 도우미 패키지 bp 가져옵니다 breakpoint 이 기능은 로깅 및 조건부를 지원합니다.
name = idc . get_segm_name ( segment )
dbg . bp ( name == ".text" , f"found { name } at { segment } " ) 또한 파일 끝에서 breakpoint() 호출은 절대로 발생하지 않아야합니다. 코드의 다음 명령어에서 깨지기 때문에 항상 다른 코드 줄 앞에 있어야합니다. 또한 dbg 패키지를 사용하기로 결정한 경우 일반 IDA 스크립트로 실행하기 전에 모든 참조를 제거하거나 변수 __idacode__ 조건부로 사용해야합니다.
디버거를 부착하면 새로운 디버거 인스턴스가 생성되는 것도 중요합니다. 대부분의 경우 이것은 당신이 원하는 것이 아닙니다. 디버거를 사용하여 Code의 원격 디버거를 사용하여 다시 연결하십시오.
