리버싱

[IDA] idapython 코드 수정을 통해 원하는 함수 추가.

dladbru 2016. 1. 20. 10:33

리버싱을 하다보면 hexray 기능이 원하는 대로 동작이 않거나 

원하는 코드로 패치해야하는 경우가있다. 이때 ida가 파일을 열어둔 상태에서는 hex 에디터로 변경이 되지않으므로

ida를 종료하고 수정해야하는 단점이 존재한다.

그래서 "idapython을 내 입맛대로 수정해서 사용할 수 없을까?" 로 시작하게 됬으나 구글에 검색이 잘 될 정도로 간단했다.

ida 폴더내에 python\idc.py 파일을 수정하면 아이다를 켰을때 명령 커맨드에서 실행할 수 있다.

아래 소스는 중간 지점에 추가해주어도 되고, idc.py를 붙여넣어도 된다.


[ Source ]

def memcpy(ea, value):
    global bkpoint
    global bkdata
    bkpoint=ea
    bkdata=""
    for i in range(0,len(value)):
        bkdata+=chr(Byte(ea+i))
        PatchByte(ea+i,ord(value[i]))
    
    

def unmemcpy():
    for i in range(0,len(bkdata)):
        PatchByte(bkpoint+i,ord(bkdata[i]))


idc.py 이 파일을 python 디렉토리에 붙여넣기해도 같은 동작을 한다.


IDA 초기 화면


memcpy(0x00401000,"\x90\x90\x90\x90") 를 실행한 코드


unmemcpy() 를 통하여 가장 최근에 적용한 memcpy를 되돌릴 수 있다.


반응형