목록전체 글 (542)
선릉역 1번 출구
보호되어 있는 글입니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0ob3b/btroNJNpcyV/uTRzpfMoYW7m2jqn9tHKs1/img.png)
처음 stack을 공부했을 때 stack이 메모리안에서 가지는 특성을 모르고 여기서 한참 헤맸었다. stack의 역할 1. 함수 내의 로컬 변수 임시 저장 2. 함수 호출 시 파라미터 전달 3. 복귀 주소 저장 stack의 가장 중요한 특징은 FILO 구조라는 것 exe가 메모리에 load되면 OS에 의해서 memory 영역이 할당되는데 이때 보면 stack은 맨 위에 위치한다. 그림이 좀 잘못되었는데 위에가 high이고 아래가 low이다. (아래 사진이 정확함) stack은 high address영역부터 아래로 데이터가 쌓이기 때문에 stack에 값을 PUSH하면 메모리가 낮아진다. 즉 높은 주소에서 낮은 주소 방향으로 스택이 자라남(거꾸로 자라난다고 생각하면 될듯?) =스택에 값을 입력하면 ESP는 ..
Byte ordering 컴퓨터에서 메모리에 데이터를 저장하는 방식 BIg Endian and Little Endian DWORD dw = 0x12345678일 때, 빅 엔디언은 [12][34][56][78]로 저장하고 리틀 엔디언은 [78][56][34][12]로 저장한다. 1byte씩 끊었을 때 빅 엔디언은 사람이 보는 방식과 동일하게 왼->오이고 리틀 엔디언은 역순으로 저장함 =1byte 자체는 정상적인 순서이고 2byte 이상부터 빅 엔디언은 정상, 리틀 엔디언은 역순 =문자열은 char의 1byte이기 때문에 문자열 자체는 정상적인 순서임 빅 엔디언의 경우 RISC계열의 CPU와 네트워크 프로토콜에 사용되고, 리틀 엔디언은 intel x86 cpu에 사용된다. 산술 연산과 데이터의 타입이 확장/..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cw4Bui/btroHaFIQq5/GjTlSSGmcPwXX0ZQLy2AO1/img.png)
#include "windows.h" #include "tchar.h" int _tmain(int argc, TCHAR* argv[]) { MessageBox(NULL, L"Hello World!", L"www.reversecore.com", MB_OK); return 0; } 이 코드를 visual studio에서 x86, release로 build를 해준다. 그럼 파일안에 Release라는 이름의 폴더가 생성되고 그 안의 HelloWorld.exe라는 응용 프로그램 파일이 하나 생성됨 백신이 깔려있다면 이를 악성파일로 보고 삭제하기 때문에 악성코드 분석을 진행할 때는 가상 머신에서 진행하든가 아님 백신을 잠시 꺼두자 그럼 이제 기계어를 어셈블리어로 변환해주는 디버거 유틸리티인 OllyDbg를 사용해 ..