1. 메모리 쓰는 방법과 레지스터 쓰는 방법
2. EIP, ESP, EBP는 항상 목적에 맞게 사용해야 한다.
3. 컴퓨터가 메모리를 어떻게 사용하는지 달달 외우고 있어야 한다.
4. 어셈블리어를 C언어로 고치는 연습방법
-
리눅스에서 C언어 작성 후 Compile 후 GDB를 이용하여 디버깅
gcc -o test test.c -m32 -mpreferred-stack-boundary=2 -fno-stack-protector
gdb ./test -
리눅스에서 C언어 작성 후 어셈블리어로 변경하여 코드 비교
gcc -S test.c
cat test.s -
코드 분석 시 중요한 것이 변수명과 함수명인데… 어셈에서는 이름을 알기 어려움
-
인자면 a 라는 변수로 치환
-
지역변수면 v 라는 변수로 치환
-
전역변수면 g 라는 변수로 치환
-
EBP를 기준으로 – 한 값 : EBP-0x4는 v4, EBP-0x8은 v8
-
EBP를 기준으로 + 한 값 : EBP+0x4는 a1, EBP+0x8은 a2,
-
ESP를 기준으로 한 값은 아래에 Call문이 나오며, 함수로 전달되는 파라미터(순서는 역순)
-
leave : 지역변수가 있으면 leave로 끝나고 없으면 지역변수가 없으면 pop으로 끝남
-
첫부분에 stack에서 sub를 하는 경우 : 지역변수가 있는 경우
-
//esp를 기준으로 위치가 나오면 call까지 잘라서 함수로 변경
-
//괄호가 있을 경우는 v4이지만 mov로 바꾸면서 괄호를 바꾸면 v4가 아님
-
// 맨 마지막까지 변경이 안되는 부분은 C 문법적으로 맞춰준다.
-
// lea가 붙으면 변수값을 가져온다고 보면 된다.
-
// 프롤로그와 변수정의는 변경 후 삭제
-
// 어셈의 표현이 남아있으면 남겨 둔다.
-
// lea는 mov로 변경 후 괄호 삭제
-
// 괄호의 값은 포인터값
-
// 어셈적 표현이 없을 때만 지워나간다.
-
// 함수가 끝날 때는 eax에 값이 남아있는지 항상 확인하여 return되는 값이 있는지 체크
-
// 이게 뭐하는 프로그램인지는 C로 바꾸고 나서 생각할 것
-
// @plt는 다른 라이브러리에 있는 함수를 import한 함수다. ex) printf("%d", a1)
-
// 메모리 덤프를 확인하여 변경
728x90
반응형
'⑥ IT 자격증 > 정보보안기사' 카테고리의 다른 글
[정보보안기사 실기] 시스템보안③ (0) | 2016.04.18 |
---|---|
[정보보안기사 실기] 시스템보안② (0) | 2016.04.17 |
[정보보안기사 실기] 시스템보안① (0) | 2016.04.16 |
gdb 명령어 (0) | 2014.12.10 |
ASM to C (1) (0) | 2014.12.10 |