티스토리 뷰
이 블로그는 단지 제 개인 공부를 정리해둔 것입니다.
제가 올린 내용 중 잘못된 부분이 있으면 지적해주시면 감사하겠습니다.
꾸벅
기본적인 어셈블리어 공부
어셈블리는 한 번에 한가지 동작 밖에 못 한다.
어셈블리의 명령 포맷은 명령어 + 인자 로 구성이 되는데, 명령어를 다른 말로 하면 옵코드(Opcode)라 하며 인자는 오퍼랜드(Operand)라 한다.
만약 인자가 즉 오퍼랜드가 두개가 나오면 먼저 나온 오퍼랜드가 목적지, 나중에 나오는 오퍼랜드가 출발지가 된다.
즉 mov eax, ebx 면 ebx(출발지)를 eax(목적지)로 옮기라는 의미가 된다.
어셈블리어의 기본 명령어
push, pop : 스택에 값을 넣는 것이 push, 그리고 스택에 있는 값을 가져오는 것이 pop
mov : 단지 값을 넣는 역할
lea : 주소를 가지고 오라는 명령어. 예를 들면 lea eax, dword ptr ss:[esp+8] -> [ ]안에 있는 스택에 eax에 스택의 주소를 가지고 옴
add : 값을 더하라는 명령어
sub : 빼라는 명령어
int : 인터럽트를 일으키는 명령어. 리버스 엔지니어링을 하다 보면 가장 많이 만나는 것은 int3명령어로 옵코드가 0xCC인 DebugBreak() 정도.
call : 함수를 호출하는 명령어. call뒤에는 오퍼랜드로 번지가 붙음. 해당 번지를 호출하고 작업이 끝나면 call 다음 번지로 되돌아 옴.
inc, dec : inc은 i++;이고, dex는 i--;이라 생각하면 됨.
and, or, xor : 기본적인 수학 연산자.
nop : 아무것도 하지 말아라!!!
cmp, jmp : 비교해서 점프하는 명령어
'Reversing > Reverse Engineering' 카테고리의 다른 글
abex’ crackme #1 (0) | 2015.12.26 |
---|---|
OllyDbg를 이용한 스택 공부하기 (0) | 2015.12.23 |
PACKING (0) | 2015.12.21 |
함수의 호출 규약 (0) | 2015.12.21 |
레지스터, 단지 변수이다. (0) | 2015.08.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 헤더
- Omok
- 와이어샤크
- 오일러 프로젝트 10본
- 2의 1000승
- 서버
- 패킷
- CBrush
- tipssoft
- 오일러 프로젝트 16번
- TIPS강좌
- 오일러 프로젝트 14번
- tipsoft
- 키보드 메시지 이벤트
- arp
- 허프만 알고리즘
- 화투이미지맞추기
- 이미지게임
- MFC
- 팁스강좌
- 실행 압축
- 오일러 프로젝트 8번
- 약수 500개
- 오일러 프로젝트 11번
- Tips
- 오일러
- tipsr강좌
- 오일러 프로젝트 12번
- 비손실 압축
- 오일러 프로젝트 13
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함