본문 바로가기
리버싱

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

by dladbru 2016. 1. 20.

리버싱을 하다보면 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를 되돌릴 수 있다.


반응형

'리버싱' 카테고리의 다른 글

[IDA] ida sig 리버싱을 편하게 할래 - FLIRT 기능!  (0) 2016.01.20
[GDB] GDB Find 명령어  (6) 2016.01.20
[IDA] IDA에 스킨을 입혀봤다  (0) 2016.01.19
[IOS] 넥슨 모바일 게임 1위 HIT 분석  (1) 2016.01.07
IOS App 분석  (0) 2016.01.07

댓글