리버싱 기초
1. sysinternals suite 다운
2. 7z 다운
3.practical malware 샘플 다운로드
4.pestudio 다운
5. hxd 다운
올리디버거 관리자권한 실행
1. option ->add to explorer -> add -> done
2.option -> appearance
리버싱은
리버싱엔지니어링
역공학 이라고도 한다
어떤 프로그램의 소스코드로 돌려서 분석하는방법
c -> 10110 (M.C 머신코드 컴퓨터언어 ) -> 어셈블리
이렇게바꾸는건 컴파일과정 이렇게바꾸는건 디스어셈블
CPU 는 복잡하게 이런식으로돌린다. (어셈블리)
c언어에서는 그냥 냉장고를 연다 열었으면 냉장고에 물을 꺼내먹는다
이런느낌이기 때문에 복잡하게돌린다는 것
02 어셈블리의 명령 포멧
IA-32 는 intel 32bit 를 주로 사용
기본형태는 명령어(옵코드, opcode) + 인자(오퍼랜드, operand 1~2)
쉽게생각해서
push 337 337을 넣다는뜻
mov 옮긴다. 1을 eax 에 전달하는데 eax는 cpu변수입니다.
그래서 operand 2에서 operand 1으로 데이터를 보내는데
1-> eax 의 형태로 전달을 한다생각하면된다.
===============================================
CPU가 연산할때는 레지스터에 넣어놓고 연산을 하게된다.
값을 리턴하는 개념이없기떄문이다.
EAX는
mov eax, 3
retn
을 하게되면
return 3; 이런식으로 된다고생각하면된다.
리턴값을 저장하기 때문에
CPU가 연산할때는 레지스터에 넣어놓고 연산을 하게된다.
값을 리턴하는 개념이없고
====================================================
edx,ecx,ebx는
int temp
temp에 아무거나 저장하는것처럼
거기에 넣는다고생각하면된다.
==================================================
esi 와 edi는
esi와 edi가
어떤 데이터가 esi가 들어가있으면 +1씩 되면서
데이터를 d -> a -> t->a 로 순차적으로 edi로 옮긴다.
그리고 마지막은 null값이 나오고 데이터 복사를 끝냅니다.
esi 와 edi가 같이나온다면
데이터를 복사하거나 반복데이터를 처리하고나 메모리를 옮기는 여러작업이라고 생각하면됩니다.
============================================================
ESP EBP는
1->2->3을 아무리 넣어도
소비자가 먹을떄는 마지막에 들어온 3번 부터 꺼낼수 밖에없다고 하면 이해가쉽다
stack 쌓다
push pop
값을 넣을때는 push 를 사용하고 데이터를 거꾸로 넣게되는데
소비자는 거꾸로 꺼내게된다
그것을 pop이라 하고
first in 처음들어간게
last out 마지막에 나온다
========================================================
EBP 는 스팩에 가장 아랫단 1번이라고 생각하면됩니다 케이스의 시작부분
ESP 데이터가 차있는 가장윗부분 만약 데이터가 하나더들어오면 다음껄로 올라가서 가르킴
그이유가 가장윗 부분을 가르키니까 들어오면 가장윗부분은 들어온것이기떄문
ESP 와 EBP 가 나오면 스택을 가르키는부분이구나 라고하면됩니다.
==============================================================
EIP는 지시를 내리는 포인터
이러한 코드가 있을떄 가장첫번쨰 코드부터 실행이될것입니다
그럼 EIP는 첫번째를 가르키고있게되고
CPU 가 다음에 실행시킬(가장먼저 실행시킬) 명령어를 가르킨다
1번을 실행하면 2번을 가르키고
2번실행하면 3번가르키고 그런것
==============================================================
32 bit를 먼저배우고 가능하면 많이바뀌지는 않습니다
EAX 0~31부터여서 32비트
64비트에서는 EAX가아니라 VAX 입니다.
'악성코드 및 포렌식' 카테고리의 다른 글
리버싱 기초 -함수 호출 규약 (0) | 2021.03.06 |
---|---|
리버싱 기초 -어셈블리 명령어와 함수 호출 구조 (0) | 2021.03.05 |
시스템 포렌식 - NTFS (0) | 2021.02.09 |
시스템 포렌식 - FAT32 파일시스템 분석 및 복구 (0) | 2021.02.09 |
시스템 포렌식 - 다운로드 기록 찾기 (0) | 2021.02.09 |