※ flow : 제어권을 넘기는 행위

 

- ordinary (정규)

  논리적 신호에 의해 순차적으로 이동하는 행위

 

- jump (점프)

  특정 조건에 정의된 위치로 이동하는 행위

 

- call (호출)

  정의된 기능으로 이동해서 기능 수행 후 다시 이동 전 위치로 복귀하는 행위

'Reverse Engineering > IDA Pro 사용기' 카테고리의 다른 글

IDA 유용한 단축키  (0) 2020.04.07
STRING 컨트롤  (0) 2020.04.07
이런 코드를 만났을 때 [02] REPNE SCASB  (0) 2020.04.07
IDA에서 개체 표기규칙  (0) 2020.04.07
이런 코드를 만났을 때 [01]  (0) 2020.04.07

- repne scasb

  흔히 반복해서 하는 작업을 나타내는 연산자로

  ECX에 반복횟수를 세팅하고 그 수만큼 루프를 돌게 된다.

  일반적으로 '문자열'을 다룰 때 많이 사용된다.

 

  REP는 반복을 의미하고

  뒤에 'N'은 NOT, 'E'는 =를 의미하고 있기 때문에

  REPNE는 ECX가 0이 아닐 때, 즉 감소하는 ECX가 0보다 큰 상태일 때를 의미한다.

 

  SCASB (Scan String byte)

  EAX의 값 중 일정 영역의 데이터와 EDI의 데이터를 비교한다.

  SCASB 는 1BYTE => AL

  SCASW 는 1Word => AX

  SCASD 는 1DWord => EAX

  값이 같으면 ZF(Zero Flag)가 '1'이 된다.

 

- REP

* stos, movs, scas 에만 쓸 수 있다.

* 반복 count는 ECX가 수행한다. (반복 시, ECX 1씩 감소)

* EDI값(주소값)을 자료형의 크기만큼 ECX감소와 동일한 횟수로 증가시킨다.

 

  REP MOVS

- ECX의 count만큼 감소하며 ESI의 값을 EDI로 넣는다.

'Reverse Engineering > IDA Pro 사용기' 카테고리의 다른 글

STRING 컨트롤  (0) 2020.04.07
IDA FLOW 타입  (0) 2020.04.07
IDA에서 개체 표기규칙  (0) 2020.04.07
이런 코드를 만났을 때 [01]  (0) 2020.04.07
SET OPCODE LIST  (0) 2020.04.07

- sub_**** : 서브루틴

 

- loc_**** : 인스트럭션

 

- byte_**** : 8bit 데이터

 

- word_**** : 16bit 데이터

 

- dword_**** : 32bit 데이터

 

- unk_**** : 알 수 없는 크기의 데이터

'Reverse Engineering > IDA Pro 사용기' 카테고리의 다른 글

STRING 컨트롤  (0) 2020.04.07
IDA FLOW 타입  (0) 2020.04.07
이런 코드를 만났을 때 [02] REPNE SCASB  (0) 2020.04.07
이런 코드를 만났을 때 [01]  (0) 2020.04.07
SET OPCODE LIST  (0) 2020.04.07

:text:0040107F mov eax, large fs:0
:text:00401085 push eax
:text:00401086 mov large fs:0, esp

 

FS : 0 (SEH 프레임)을 EAX에 저장하여 스택에 넣고 

ESP(스택포인터)에있는 내용으로 덮어 쓴다.

 

* SEH : Structured Exception Handling : Win32환경에서의 예외처리 핸들러

* FS 레지스터 : Win32 스레드 정보 블록(TIB)

 

참고 : https://en.wikipedia.org/wiki/Win32_Thread_Information_Block

'Reverse Engineering > IDA Pro 사용기' 카테고리의 다른 글

STRING 컨트롤  (0) 2020.04.07
IDA FLOW 타입  (0) 2020.04.07
이런 코드를 만났을 때 [02] REPNE SCASB  (0) 2020.04.07
IDA에서 개체 표기규칙  (0) 2020.04.07
SET OPCODE LIST  (0) 2020.04.07
  • SETAE (Set if Above or Equal) / SETNB (Set if Not Below)
    : Carry Flag (CF)가 '0'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETB (Set if Below) / SETNAE (Set if Not Above or Equal)
    : Carry Flag (CF)가 '0'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETBE (Set if Below or Equal) / SETNA (Set if Not Above)
    : Zero Flag (ZF) 또는 Carry Flag (CF)가 '1'이라면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETE (Set if Equal) / SETZ (Set if Zero)
    : Zero Flag (ZF)가 '1'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETNE (Set if Not Equal) / SETNZ (Set if Not Zero)
    : Zero Flag (ZF)가 '0'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETL (Set if Less) / SETNGE (Set if Not Greater or Equal)
    : Sign Flag (SF)와 Overflow Flag (OF)가 다르면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETGE (Set if Greater or Equal) / SETNL (Set if Not Less)
    : Sign Flag (SF)와 Overflow Flag (OF)가 같다면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETLE (Set if Less or Equal) / SETNG (Set if Not greater or Equal)
    : Zero Flag (ZF)가 '1'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETG (Set if Greater) / SETNLE (Set if Not Less or Equal)
    : Zero Flag (ZF)가 '0'이고 Sign Flag (SF)와 Overflow Flag (OF)가 같으면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETS (Set if Signed)
    : Sign Flag (SF)가 '1'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETNS (Set if Not Signed)
    : Sign Flag (SF)가 '0'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETC (Set if Carry)
    : Carry Flag (CF)가 '1'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETNC (Set if Not Carry)
    : Carry Flag (CF)가 '0'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETO (Set if Overflow)
    : Overflow Flag (OF)가 '1'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETNO (Set if Not Overflow)
    : Overflow Flag (OF)가 '0'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETP (Set if Parity) / SETPE (Set if Parity Even)
    : 패리티 플래그가 '1'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅
  • SETNP (Set if No Parity) / SETPO (Set if Parity Odd)
    : 패리티 플래그가 '0'이면 뒤에 명시된 바이트형 레지스터를 '1'로 세팅

'Reverse Engineering > IDA Pro 사용기' 카테고리의 다른 글

STRING 컨트롤  (0) 2020.04.07
IDA FLOW 타입  (0) 2020.04.07
이런 코드를 만났을 때 [02] REPNE SCASB  (0) 2020.04.07
IDA에서 개체 표기규칙  (0) 2020.04.07
이런 코드를 만났을 때 [01]  (0) 2020.04.07

+ Recent posts