Study/IDA 5

[PyQt4] Example

IDA 플러그인 작성을 위해선 PyQt도 꼭 필요합니다. 저는 조사당시 Python 2.7을 사용하고 있어서 PyQt4를 기준으로 문서를 작성하였습니다. 1. 위젯 사용하기 from PyQt4.QtGui import * class MyDialog(QDialog): def __init__(self): QDialog.__init__(self) lblName = QLabel("Name") editName = QLineEdit() btnOk = QPushButton("OK") layout = QVBoxLayout() layout.addWidget(lblName) layout.addWidget(editName) layout.addWidget(btnOk) self.setLayout(layout) app = QApp..

Study/IDA 2021.03.28

IDA 간단한 팝업창 만들기

액션은 처음에 먼저 등록이 되어야 한다 한 번 등록한 액션은 계속 사용할 수 있다 등록된 액션은 메뉴, 툴바, 팝업창 등에 연결시킬 수 있다 액션은 핸들러를 가지고 있는 데 activate, update 의 두 가지 콜백 함수를 가진다. → Activate 는 액션이 실행될 때 호출되며, update 는 현재 액션이 사용 가능한지 아닌지를 알려 줄 수 있게 해 준다 1. 액션 만들기 idaapi.action_desc_t(고유이름, 설명, 핸들러, 단축키, 메뉴와툴바의툴팁, 아이콘) load_custom_icon() 으로 사용자 지정 아이콘을 등록할 수 있다. ACTION_TEST = "testplugin:actiontest" class PopupActionHandler(idaapi.action_handl..

Study/IDA 2021.03.22

IDA Python Plugin

1. 플러그인 로딩 IDA세션 시작은 IDA시작시 이뤄짐. 사용자 입력을 받기 전과 대기 상태에 들어가기 전에 신규 바이너리를 분석 하거나 또는 기존 DB를 분석. 그 동안 플러그인이 로딩 된다 2. 플러그인이 로딩되는 경우 DB로딩과 관계없이 IDA시작시에 로딩될 수 있다. PLUGIN.flags의 PLUGIN_FIX 비트의 설정여부에 달려있다 프로세서 모듈 실행 후 즉시 플러그인이 로딩된다. 프로세서 모듈이 언로드 될때까지 로딩된 상태로 남아있는다. PLUGIN.flags의 PLUGIN_PROC 비트에 달려있다 위에서 언급한 플래그 비트가 없다면 DB가 열릴때마다 플러그인 로딩환경을 만들어준다 3. 플러그인 로딩 과정 기본적으로 PLUGIN.init 함수로 플러그인을 로딩하는데 이 때 위의 3가지 상..

Study/IDA 2021.03.11

IDAPython API 정리 2

1. 바이트 검색 idc.find_binary(주소, flag, 검색 바이트) : 해당 주소에서부터 조건에 따라 바이트를 검색해 준다 flag 목록 SEARCH_UP = 0 SEARCH_DOWN = 1 # 위 또는 아래 방향 SEARCH_NEXT = 2 # 다음 찾기 SEARCH_CASE = 4 # 대소문자 구별 여부 SEARCH_REGEX = 8 SEARCH_NOBRK = 16 SEARCH_NOSHOW = 32 SEARCH_UNICODE = 64 ** SEARCH_IDENT = 128 ** SEARCH_BRK = 256 ** **은 ida 옛날버전은 지원 X 2.문자열 찾기 idc.find_text(주소, flag, y, x, 검색 문자열) : flag 의 조건에 따라 주소에서 부터 문자열을 검색 해 ..

Study/IDA 2021.01.19

IDAPython API 정리

1. 주소 리턴 Idc.here(), idc.ScreenEA() : 현재 위치의 주소를 리턴해 준다 Idc.MinEA(), idc.MaxEA() : 최대, 최소 주소를 리턴해 준다 2. 세그먼트 값 리턴 Idc.SegName(주소), idc.SegStart(주소), idc.SegEnd(주소): 주소에 대한 세그먼트 이름,시작, 마지막 주소 리턴 3. 함수 정보 리턴 Idc.GetFunctionName(주소) : 입력 주소의 함수 이름을 리턴 Idautils.Functions(시작 주소, 마지막 주소) : 함수 목록을 리스트 형태로 리턴 Funcltems (주소) : 지정한 함수 주소에서 모든 주소를 리턴해 준다, 리턴 값이 iterator 이다 Names : 이름을 가지고 있는 주소를 리턴해 준다, 리턴..

Study/IDA 2021.01.12