y0u_bat

pintool 메뉴얼 번역(공부한것들만) 본문

System

pintool 메뉴얼 번역(공부한것들만)

유뱃 2016. 2. 18. 01:32

 PIN_InitSymbols(); // 심볼을 만들어 이용할수있다.

 IMG_RegsymHeada(IMG img) // img의 첫번째 심볼을 가져옴.

 SYM_Next(SYM x) // 다음 심볼을 보여주고 섹션에서 마지막이면 SYM_Invalid() 호출

 SYM_Prev(SYM x) //  전 심볼을 보여주고 섹션에서 처음이면 SYM_Invalid() 호출

 SYM_Invalid()  // 사용하지 않은 심볼을 나타내줌 (?) 

 SYM_Name(SYM x);  // 해당심볼이름을 가져옴

 PIN_UndecorateSymbolName(const string & symbolName, UNDECORATION style);  

- 스타일 2가지 존재 

- UNDECORATION_COMPLETF // public: char * __thiscall ccc:foo(int)

- UNDECORATION_NAME_ONLY // ccc::foo

- 반환값: 스트링으로 심볼이름을 반환

- 결론 심볼이름 가져오는데 쓰이는거

SYM_Value(SYM x); // 심볼의 값(주소)을 리턴함ㅍ

IMG_LowAddress(IMG x); // IMG에서 가장 낮은 주소나 글에서 동일한 낮은 주소를 리턴함.
RTN_FindByAddress(ADDRINT address); // 핸들러에서 해당주소를 찾음. 안찾아지면 RTN_Invalid()을 호출
RTN_Invalid() // 유효하지 않는 RTN값을 리턴함.
RNT_Valid(RTN rtn) // 만약 존재하는 rtn이라면, True   존재하지 않다면, False 리턴
RNT_Open(RTN rtn) // 해당 rtn을 오픈한다.
RNT_Close(RTN rtn) // 해당 rtn을 닫는다.
RNT_Replace(RTN replacedRtn, AFUNPTR replacementFun) 
// 해당RTN을 원하는 함수로 바꾼다. 없애고 싶은 루틴있으면 이걸로 루틴지우면 됨 ㄱㅇㄷ
// 반환값: 바꾼 함수의 시작주소

BBL은 한분기의 대한 명령어 모음
TRACE는 BBL들의  모음(분기시작 ~  비조건분기 (jmp ret) 등))

TRACE_BblHead(TRACE trace) // 추적할 첫번째 bbl를 리턴함
BBL_Valid(BBL x) // 내용이 있는지 없는지 보는거임 , 리턴값은 있으면  True 없으면 BBL_INVALID()를 호출.
BBL_Next(BBL x) // 다음 bbl를 리턴, 만약에 rtn 또는 trace의 끝이라면 BBL_INVAILD()를 호출
BBL_Prev(BBL x) // 전 bbl를 리턴, 만약에 rtn 또는 trace의 끝이라면 BBL_INVAILD()를 호출
BBL_Numlns(BBL bbl) // BBL안에 있는 INSs의 숫자를 리턴
BBL_InsHead(BBL x) // bbl의 첫번째 인스트럭션을 리턴.
BBL_Address(BBL x) // bbl의 주소를 리턴
INS_Next(INS x); // x의 다음 인스트럭션을 리턴
INS_Disassemble(INS ins) // 인스트럭션의 디스어셈블리한 내용을 리턴
INS_IsBranch(INS ins) // ins가 branch 인스트럭션이면 참을 리턴
INS_DirectBranchOrCallTargetAddress(INS ins) 
BBL_Address(BBL bbl) // 현재 bbl의 주소를 반환


 
for( SYM sym= IMG_RegsymHead(img); SYM_Valid(sym); sym = SYM_Next(sym) )


이런식으로 심볼들을 반복문을 통해 다 가져올수있음.


  // Forward pass over all bbls in a trace
  for( BBL bbl = TRACE_BblHead(trace); BBL_Valid(bbl); bbl = BBL_Next(bbl) )


이런식으로 추척할  BBL 처음부터 끝까지 가져올수있음.




'System' 카테고리의 다른 글

해킹캠프 13회 - equations 풀이  (0) 2016.02.28
Alphanumeric Shellcode (ascii shellcode) 작성  (0) 2016.02.19
pintool 간단한 문제 풀이  (2) 2016.02.17
CVE-2015-0235 GHOST 취약점  (0) 2016.02.16
SROP - Sigretrun Oriented Programming  (0) 2016.02.11
Comments