본문 바로가기

모의해킹/리버싱

리버싱 기본명령어

728x90

• 명령어 실습 

Nope.exe 파일 실행

- jmp [ADDR] 

해당 주소로 EIP 변화 (해당 주소를 점프함)

00401004 주소에서 00401007 주소로 EIP 변경

 

F7로 한 줄씩 실행시키면 00401006 주소를 안 지나감

 

- push [REG] : REG값을 스택에 채움

push 100 명령을 사용하면 스택 공간에 쌓인다.

 

- pop [REG] : 스택에서 값을 빼서 REG에 채움

스택에 쌓여있던 100이 EAX에 넣어준다.

 

- call [ADDR] : 현재 EIP를 스택에 Push 하고, 피연산자로 EIP 변화

call 명령어를 실행시키면 스택에 call 명령어 실행이 끝나면 00401016 주소 밑에 있는 0040101B 주소로 return 할 수 있게 스택에 쌓인다.

 

- ret : 스택의 값을 빼서 EIP 변화

ret 명령어가 실행이 되면서 스택에 쌓여있던 return 주소로 EIP를 변화시켜준다.

 

- mov dst, src : Source에서 Destination으로 데이터를 복사

mov eax,1 명령어는 값을 eax 레지스터에 복사한다는 의미이다.

mov ebx,1 명령어는 값을 ebx 레지스터에 복사한다는 의미이다.

ex) mov eax, ecx : ecx 레지스터에 저장된 값을 eax 레지스터에 복사

mov eax, word ptr [num] : num의 주소가 가리키는 2바이트[dword] 값이 eax에 저장

mov eax, byte ptr [num] : num의 주소가 가리키는 1바이트[dword] 값이 eax에 저장

mov al, byte ptr ds:[esi] : esi의 주소값이 가리키는 reversing값 중 1바이트인 r을 eax에 저장

mov bl, byte ptr ds:[edi] : edi의 주소값이 가리키는 reversing값 중 1바이트인 r을 ebx에 저장

 

 

- lea [REG], src : REG에 우변의 주소값을 저장

lea esi, dword ptr ds:[40 A150] : 40A150의 주소가 가리키는 4바이트(dword) 값이 esi에 저장한다는 의미이다.

lea edi, dword ptr ds:[40A200] : 40A200의 주소가 가리키는 4바이트(dword) 값이 edi에 저장한다는 의미이다.

 

40 A150, 40A200 주소에 저장된 값 확인 

 

- cmp [REG], [REG] : 두 개의 레지스터값을 비교

cmp eax, ebx : 두개의 레지스터에 저장된 값을 비교를 한다

je 0x401043 : ZF(제로 플래그) 값이 1이면 401043 주소로 EIP 변한해 준다. 

 

*ZF(제로 플래그) : 연산의 결과가 0과 같을 경우 1로 설정되고, 그 외는 0으로 설정된다.

* jnz : ZF가 0이면 점프

* je : ZF가 1이면 점프

*jne : 비교한 값이 다를 경우 점프

 

'모의해킹 > 리버싱' 카테고리의 다른 글

Doom2(핵 만들기)  (0) 2023.07.11
레지스터 (Register)  (0) 2023.07.08
Stack (스택)  (0) 2023.07.04
Code Engn (Basic RCE L01)  (0) 2023.06.28
Deep Dive Reversing  (0) 2023.06.27