: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

X86의 어셈플리 구문은 아래 두 가지 문법을 가장 많이 사용한다.

1. INTEL 구문

- 레지스터와 리터럴 상수를 구분하지 않는다.

- MASM(마이크로소프트), TASM(볼랜드터보), NASM(넷와이드) 등에서 사용

- 나열 순서는 [연산자] [대상 오퍼랜드] [소스 오퍼랜드]

   (ex : ADD EAX, 0x8)

 

2. AT&T 구문

- 레지스터 명 앞에 '%' 표기, 리터럴 상수 앞에 '$'표기

- Gas (GUN), gcc, gdb 등에서 사용

- 나열 순서는 [연산자] [소프 오퍼랜드] [대상 오퍼랜드]

   (ex: ADD $0x8 %EAX)

+ Recent posts