정보보안 SUA - [정보보안공부] 2주차 과제 - Windows 데스크톱 앱 개C/C++ 언어의 다양한 개념들이 x86 어셈블리 언어로 변환 결과물
·
리버싱/리버싱 걸음마
- main 함수 - 변수의 선언/할당/사용 (문자열, 포인터, 배열 등) A. 배열 - 상수의 선언/초기화/사용 - 공용체, 구조체, 클래스의 선언/정의/사용 - 클래스의 접근제한자(private/protected/public) - 객체의 생성자/소멸자 호출 - 멤버 변수의 선언/할당/사용 멤버 함수의 선언/정의/사용 - 함수의 선언/정의/호출/반환 - loop문 (for, while, do while 등) - continue/break/goto 문 - 다양한 함수 (malloc/free/strcpy/strcmp 등) - 다양한 연산자 (new/delete 등)
정보보안 SUA - [정보보안공부] 2주차 과제 - C/C++ 언어의 다양한 개념들이 x86 어셈블리 언어로 변환
·
리버싱/리버싱 걸음마
1. 스터디 과제 C/C++ 언어의 다양한 개념들이 어떤 x86 어셈블리 언어로 변환되는지 알아보기 여기서 말하는 다양한 개념들이란 ? (변환 작업은 스터디 1주차 1-2에서 작성) - main 함수 - 변수의 선언/할당/사용 (문자열, 포인터, 배열 등) - 상수의 선언/초기화/사용 - 공용체, 구조체, 클래스의 선언/정의/사용 - 클래스의 접근제한자(private/protected/public) - 객체의 생성자/소멸자 호출 - 멤버 변수의 선언/할당/사용 멤버 함수의 선언/정의/사용 - 함수의 선언/정의/호출/반환 - loop문 (for, while, do while 등) - continue/break/goto 문 - 다양한 함수 (malloc/free/strcpy/strcmp 등) - 다양한 연산..
1. abe crackme
·
리버싱/리버싱 걸음마
GetDrvieType()함수 실행이 끝난 상태에서 레지스터 정보를 살펴보면, EAX 레지스터에는 3이 저장되어 있고 ESI 레지스터에는 0이 저장. 레지스터를 변경하는 명령어를 보면 ESI 레지스터는 모두 3만큼 증가시키고, EAX레지스터는 2만큼 감소. ESI 레지스터를 증가시키는 명령어 2개를 실행하지 않으면 EAX레지스터와 ESI레지스터의 값은 동일하게 된다. 따라서 JMP 명령어를 수정하면 쉽게 목적을 달성 할 수 있다. 우리는 00401023으로 JMP해야 하므로 00401023으로 수정해준다. 아래와 같은 결과를 얻을 수 있다.