티스토리 뷰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#-*- coding: utf-8 -*-
 
# IDAPython 라이브러리 로드 
from idaapi import *
from idautils import *
from idc import *
 
addr = MinEA() # 시작 주소
FText = "What" # 찾을 문자열
 
# ParseString 함수는 Strings 함수로 FindText 함수를 대신할 수 있게 만들어본 코드인데...흠 모르겠네요
 
def ParseString(text): # Shift + F12를 통해 확인할 수 있는 텍스트를 모두 가져와 찾고 싶은 문자열을 리스트 형태로 리턴
    StringObjList = Strings() # idautils.Strings() 함수를 통해 Strings Window에 존재하는 문자열을 리스트 형태로 리턴
    StringList = ["%x : %s" % (SOL.ea, SOL) for SOL in StringObjList] # 찾은 문자열의 주소와 텍스트를 리스트 형태로 리턴
    AddressOfFindString = [SL.split(" : ")[0for SL in StringList if text in SL] # 문자열의 주소를 리스트 형태로 리턴
    for Ref in AddressOfFindString: # 문자열의 주소를 for문으로 돌림
        CrossRefs = DataRefsTo(int(Ref, 16)) # DataRefsTo 함수로 문자열의 주소를 참조하는 값을 리스트 형태로 리턴
        for CRef in CrossRefs: # 문자열 주소의 주소를 로그로 찍고 해당 주소를 빨간색으로 변경 
            print "%08x"% CRef + "==>" + GetDisasm(CRef)
            SetColor(CRef, CIC_ITEM, 0x0000ff)
 
def FindTextAndRefsTo(address, text):
    
    while address != BADADDR:
        # 시작점(0x0)부터 SEARCH_DOWN|SEARCH_NEXT 옵션을 사용해 text(What)를 찾은 주소를 리턴
        ReturnFindTextAddress = FindText(address, SEARCH_DOWN|SEARCH_NEXT, 00, text)
 
        if list(DataRefsTo(ReturnFindTextAddress)): # DataRefsTo를 통해 찾은 문자열의 주소가 참조하는 값이 있다면
            
            cross_refs = DataRefsTo(ReturnFindTextAddress) # 참조하는 값을 리스트로 리턴 
 
            for ref in cross_refs: # 문자열 주소의 주소를 로그로 찍고 해당 주소를 빨간색으로 변경
                print "%08x"% ref + "==>" + GetDisasm(ref)
                SetColor(ref, CIC_ITEM, 0x0000ff)
    
        address = idc.NextHead(ReturnFindTextAddress) # NextHead 함수를 이용해 다음 인스트럭션 주소로 이동
 
    print 'End'    
 
if __name__ == "__main__":
    #ParseString(FText) 
    FindTextAndRefsTo(addr, FText)
 
cs


위 소스코드를 실행하면 "What"이라는 문자를 사용하는 주소를 상호참조해 빨간색으로 표시된다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함