1. test.cpp의 코드 내용
2. test.cpp의 어셈블리어
3. test.cpp문자형
4. 위의 코드 어셈블리어
MOV EAX,DWORD PTR DS:[405030] //데이터의 값을 레지스터인 EAX에 저장
MOV DWORD PTR SS:[EBP-8],EAX //EAX레지스터 값을 스택에 저장
DWORD PTR SS:[EBP-8]가 배열의 시작주소
MOV ECX,DWORD PTR DS:[405034] //405034데이터의 값을 ECX에 저장
MOV DWORD PTR SS:[EBP-4],ECX //ECX레지스터의 값을 스택에 저장
char str1[] = "Reverse";
MOV EDX,DWORD PTR DS:[405038] //405038데이터의 값을 EDX에 저장
MOV DWORD PTR SS:[EBP-18],EDX //EDX레지스터의 값을 스택에 저장
MOV EAX,DWORD PTR DS:[40503C] //40503C데이터의 값을 EAX에 저장
MOV DWORD PTR SS:[EBP-14],EAX //EAX의 값을 스택에 저장
MOV ECX,DWORD PTR DS:[405040] //405040데이터의 값을 ECX에 저장
MOV DWORD PTR SS:[EBP-10],ECX //ECX의 값을 스택에 저장
char str2[] = "Enginerring";
XOR EDX,EDX
//null문자 생성 char str2[16] = "Engineering" 즉,[16]이라는 공간을 지정한후 남은 바이트를 null==0으로채운다.
MOV DWORD PTR SS:[EBP-C],EDX //null문자를 스택에 저장
char str2[16] = "Engineering";
5. test.cpp 포인터
6. 어셈블리어
PUSH ESI
PUSH EDI
ESI와 EDI를 백업하기 위해 저장
MOV ESI,405030 //출발지 주소를 저장 즉 Reverse Engineering값을 넣기 위해 저장
LEA EDI,DWORD PTR SS:[EBP-1C] //EBP-1C의 결과를 EDI에 저장
REP 는 ECX의 값만큼 반복한다.
REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
ES:[EDI] == 스택 주소
DS:[ESI] == 데이터 주소
ESI가 가진 4바이트 데이터를 EDI에 저장 // 이작업을 5번동안 한다.
XOR EAX,EAX
MOV DWORD PTR SS:[EBP-8],EAX
이 두문장을 통해서 첨자가 있는 배열임을 알게된다.
LEA ECX,DWORD PTR SS:[EBP-1C] //EBP -1C 의값을 ECX에 저장
MOV DWORD PTR SS:[EBP-4],ECX //ECX의 주소를 EBP-4에 저장
char * p = str;
MOV EDX,DWORD PTR SS:[EBP-4] //EBP-4의 값을 EDX에 저장
p
MOVSX EAX,BYTE PTR DS:[EDX+5]
//EDX값에 5를 더한다. 그값을 EAX에 저장 MOV연산자에 [ ]가 있을 시 포인터 이다.
//0012FF64 + 5 == 0012FF69 ==EAX == 0012FF69
*(p+5)
MOV DWORD PTR SS:[EBP-20],EAX //0012FF69에 있는 데이터 1바이트를 저장
int n = *(p+5);
7. 구조체 코드
8. 어셈블리어
SUB ESP,0C
지역변수가 12바이트이다.
MOV DWORD PTR SS:[EBP-C],0A
int n1 =10;
MOV DWORD PTR SS:[EBP-8],14
int n2 = 20;
같은 공간을 쓰는 것을 의미하므로, 아래 문장을 통해 구조체인 것을 알 수있다.
MOV BYTE PTR SS:[EBP-4],61
char ch1 = 0x61;
MOV BYTE PTR SS:[EBP-3],41
char ch2 = 0x41;
'악성코드 분석' 카테고리의 다른 글
패스워드 알아내기 (0) | 2019.06.04 |
---|---|
quiz를 통해 익숙해지기 (0) | 2019.05.22 |
Debugger사용법, 간단한test.exe파일을 통해 분석 (0) | 2019.05.17 |
기초지식(스택) (0) | 2019.05.16 |
기초지식 (레지스터와 어셈블리어) (1) | 2019.05.15 |