Main Func Arguments
int argc, char *argv[], char *envp[]
argc - main 함수에 전달되는 인자의 개수
argv - 넣은 문자열의 포인터 배열
envp - 환경 변수
보통 3개의 인자를 넣고 호출하면 main 함수라는 것을 유추할 수 있음.
실행하면 이런 결과가 출력.
OllyDBG에서 main 함수 인자를 전달하려면 Debug -> Arguments에 갑 입력.
Pointer Compiled code Pattern
LEA : Source Operand의 주솟값을 Destination에 저장하라는 의미.
포인터 변수를 사용할 때 주로 사용되는 Assembly 명령어임.
레지스터에 대괄호가 쳐져 있으면 주소를 간접 참조한 값을 의미함.
AND : 두 개의 Operand에서 BOOL AND 연산을 수행하여 결과값을 Destination Operand에 저장.
선택된 비트를 Clear하고 나머지를 유지할 때 사용할 수 있음.
OR : 두 개의 Operand에서 BOOL OR 연산을 수행 후 결과값을 Destination Operand에 저장.
선택된 비트를 Set하고 다른 것을 유지할 때 사용할 수 있음.
XOR : 두 개의 Operand에서 배타적 OR연산을 수행 후 결과값을 Destination Operand에 저장. (하나만 참일 경우 참)
패리티 비트 오류 검출 방식에 사용되기도 한다.
DS : Data Segment
SS : Stack Segment
Stack에 문자열을 쌓는다. 선언 및 초기화를 해주었기 때문에,
4byte씩 6번 초기화 해주고 남은 2byte를 STOS를 이용해서 0으로 다 초기화 해준다.
그리고 0x80 - 0x58을 해주면 배열의 크기 40byte가 나온다.
'Reversing&Write up > Study' 카테고리의 다른 글
[HandRay] while문, for문 패턴, WinMain API? (0) | 2018.01.15 |
---|---|
[HandRay] if문 패턴, switch-case문 패턴 (0) | 2018.01.14 |
[HandRay] 함수 호출 패턴, 구조체 패턴, 코드 패치 (0) | 2018.01.13 |
[HandRay] OllyDbg 사용법과 Data Expression (0) | 2018.01.11 |
[HandRay] 핸드레이와 레지스터 (0) | 2018.01.09 |