
IDA Pro용 IPython 콘솔 통합
= IPyIDA
IPyIDA는 IDA Pro에 IPython 콘솔을 추가하기 위한 순수 Python 솔루션입니다.
<Shift-.>를 사용하여 내장된 Qt console 창을 열 수 있습니다. 그러면
IPython의 자동 완성, 온라인 도움말, 고정폭 글꼴 입력 필드, 그래프 등의
기능을 사용할 수 있습니다.
또한 ipython console --existing을 사용하여 IDA 외부에서 커널에 연결할 수 있습니다.
image::ipyida-screenshot.png[IPyIDA screenshot,width=100%]
== 설치
IPyIDA는 Windows, OS X, Linux에서 IDA 6.6 이상과 호환되어야 합니다. IDA 9.2까지 테스트되었습니다.
=== 빠르고 쉬운 설치
IDA 콘솔에서 IPyIDA와 해당 종속성을 자동으로 설치하는 스크립트가 제공됩니다. IDA 콘솔에 다음 줄을 복사하기만 하면 됩니다.
macOS에서 Python3.framework는 신뢰할 수 있는 CA 파일을 제공하지 않습니다.
시스템 전체 파일인 /etc/ssl/cert.pem을 사용할 수 있습니다.
스크립트는 다음을 수행합니다:
pip가 아직 설치되지 않은 경우 설치합니다.ipyida 패키지를 설치합니다.ipyida_plugin_stub.py를 사용자의 plugins 디렉터리로 복사합니다.정확히 어떤 작업을 수행하는지 확인하려면 link:install_from_ida.py[] 스크립트를 살펴볼 수 있습니다.
==== 업그레이드
설치 스크립트를 다시 실행하여 최신 버전으로 업데이트한 다음 IDA를 다시 시작하세요.
=== IDA 방식으로 설치
종속성과 업데이트를 직접 관리하고 싶다면 ipyida_plugin_stub.py와
ipyida 디렉터리를 IDA의 plugins 디렉터리 안에
복사하면 됩니다.
이 방법은 종속성을 직접 관리해야 합니다. IPyIDA는 ipykernel 및 qtconsole
패키지가 필요하며, ipykernel 버전 5 이상을 사용하는 경우 qasync
패키지도 필요합니다.
== Jupyter Notebook 통합
IPyIDA에는 IPyIDA에 연결된 노트북을 브라우저에서 열기 위한 매직 명령어
%open_notebook이 포함되어 있습니다. 이 명령어는 첫 실행 시 종속성을 설치하고,
이미 실행 중인 서버가 없는 경우 Notebook 서버를 시작합니다.
추가 옵션은 명령어 도움말(%open_notebook? 입력)을 확인하세요.
== IPython 콘솔 사용자 지정
기본적으로 콘솔에는 사용 가능한 전역 변수가 없습니다. 콘솔이 열리기 전에
모듈을 가져오려면 IPyIDA가 IDA 사용자 디렉터리(idaapi.get_user_idadir())에서
ipyidarc.py 파일을 읽습니다. 이 파일에서 가져온 모든 것은
IPython 콘솔에서 사용할 수 있습니다.
이는 idapythonrc.py 파일과 유사합니다.
=== 다크 모드
IDA Pro에서 다크 테마를 사용하는 경우 IPython 콘솔에서도 다크 테마를
사용하는 것이 더 편리합니다. qtconsole에 내장된 다크 테마를 활성화하려면
ipyidarc.py에 다음을 추가하세요:
== IDE 통합
iPyIDA의 주목할 만한 기능 중 하나는 PyCharm IDE와 통합할 수 있다는 것입니다. 이를 통해 코드 단계별 실행, 구문 강조, Github CoPilot 통합 등의 기능을 사용할 수 있습니다. 이 기능을 사용하려면 IDA를 실행하고 데이터베이스를 연 다음 PyCharm에서 Jupyter Notebook을 만들고 코드를 추가한 후 실행을 클릭하면 됩니다. IPyIDA가 모든 작업을 백그라운드에서 처리합니다.
image::pycharm-screenshot.png[IPyIDA screenshot,width=100%]
== 주의사항
=== IDA 창이 너무 오랫동안 백그라운드에 있으면 외부 콘솔이 응답하지 않음
이 문제는 OS X 10.9 이상의 App Nap 기능과 관련이 있습니다. 실행 중일 때 IDA Pro에서 App Nap을 비활성화하면 문제가 해결되는 것 같지만, 지금으로서는 꼼수에 불과하며 노트북에서 더 많은 배터리를 사용하게 되므로 더 나은 해결책을 찾아야 합니다.
IDA Pro에서 App Nap을 비활성화하는 방법은 다음과 같습니다:
== 유사한 작업
@james91b도 IDA에 IPython 커널을 성공적으로 통합했습니다. 비 Windows IDA 사용자로서 저는 크로스 플랫폼 솔루션이 필요했고, 순수 Python 방식으로 구현했습니다. 구현 아이디어 중 일부는 그 프로젝트에서 나왔지만 IPyIDA는 처음부터 작성되었습니다. @james91b와 모든 IDA_IPython 기여자에게 감사를 표합니다. IDA_IPython은 Github의 https://github.com/james91b/ida_ipython에서 확인할 수 있습니다.