전체 글
-
calling conventionwindows system 2013. 12. 22. 20:35
공통 : 인자는 스택에 역순으로 push,return 값은 eax에 __stdcall – WIN32 표준 인자 스택은 함수가 정리한다.윈도우 API는 대부분 이 방식을 사용하는 것으로 보인다. push 10 push 20 call stdcall_func ※ 명령어 : retn 10h | c2 10 00 __cdecl 인자 스택은 호출자가 정리한다.linux system call은 대부분 이 방식을 사용하는 것으로 보인다. push 1 push 4 call cdecl_func add esp, 8 ※ 명령어 : retn | c3 fastcall 첫번째, 두번째 인자만 ecx, edx에 넣고 나머진 스택에.. thiscall c++에서 this 호출시 사용. ecx
-
PE File 구조체windows system 2013. 12. 22. 17:17
IMAGE_DOS_HEADER e_magic : DOS signature (4D5A => ASCII값 "MZ") e_lfanew : NT header의 offset을 표시 *DOS stub : 코드(어셈블리어)와 데이터의 혼합으로 이루어져 있다. IMAGE_NT_HEADER signatures는 PE (0x00004550) IMAGE_NT_HEADER - IMAGE_FILE_HEADER Machine 해당 실행 파일이 실행될 수 있는 시스템을 나타낸다. NumberOfSections 각 색션에 대한 설명은 IMAGE_SECTION_HEADER부분에서 볼 수 있다. 위 캡쳐에서는 .textbss, .text, .rdata, .data, .idata, .rsrc, .reloc 7개의 section이 있다. ..
-
encapsulationNetwork 2013. 12. 21. 00:30
ethernet u_char ether_dhost[6] destionation의 Mac address (6bytes) u_char ether_shost[6] source의 Mac address (6bytes) u_short ether_type 패킷 타입 ID(2bytes) Big-endian방식으로 버퍼에 저장됨 /* Ethernet protocol ID's */ #define ETHERTYPE_PUP 0x0200 #define ETHERTYPE_IP 0x0800 /* 헤더 다음에 오는 데이터가 IP주소를 가지고 있다. */ #define ETHERTYPE_ARP 0x0806 /* Address resolution - MAC을 요청 */ #define ETHERTYPE_REVARP 0x8035 /* Re..
-
vim 환경 세팅Programming 2013. 11. 9. 00:26
whitespace, 80 column, tab size 포함! set autoindent set cindent set smartindentset smarttab set wrap set nowrapscan set nobackup set visualbell set ruler "tab설정set tabstop=4 set shiftwidth=4set expandtab set number set bs=2 set nocpset expandtab "여분의 space를 빨간색으로 표시해줌highlight ExtraWhitespace ctermbg = red guibg=redmatch ExtraWhitespace /\s\+$/ "색표시syntax on set csto=0set cstset nocsverb vi ~/.vi..
-
gdb명령어linux system 2013. 11. 9. 00:26
gdb는 표준 입력을 받지 않는다. input값을 아래와 같이 넣어주어야 한다. $ python ex.py > list$ gdb ./test(gdb) run < list 1. 컴파일 시에 디버깅 정보를 담아야 한다. gcc -g -o [프로그램명] [소스파일명] 디버깅 옵션인 -g 으로 컴파일하며, 최적화 옵션인 -O 은 주지 않도록 한다. -s : 어셈블리 파일을 만든다. -c : 오브젝트 파일을 만든다. -W -Wall : 오모한 문법, 코딩에 대한 엄격한 경고 메시지 -o : 이름 지정 가능. -g : gdb를 사용하여 디버깅하기 위해서는 컴파일 할때 -g 옵션을 붙여야 한다. -g옵션을 붙이게 되면 컴파일되는 실행 파일에 여러 디버깅 정보가 삽입된다. 2. 실행방법 gdb [프로그램명] gdb [..
-
IDA, olly, windbg shortcuttool 2013. 7. 25. 23:25
특정 주소로 이동하기 IDA : 소문자 g olly : Ctrl + g string검색 IDA : Alt + t IDA IDA Demo 6.3\cfg 폴더의 idagui.cfg 파일이 단축키 설정이 있다고 함 F5 view상태에서 right>copy to assembly 를 누르면 assem과 c 함께 보이도록 해준다. d : data로 부시기 c : code로 합치기 함수에 y누르면 함수원형 변경가능. alt+k : stack point value변경가능. 어셈코드 수정 : Alt+F2 혹은 edit -> Other -> Manual Intruction ○ Stack frame 보기 코드상에 변수에 마우스 더블클릭!! ○ Ctrl + P 로 함수 리스트 볼 수 있음 (마우스 클릭으로 해당 코드로 이동 ..
-
[Linux] shared memoryProgramming/system programming 2013. 6. 19. 18:40
#include #include int shmget(key_t key, size_t size, int shmflg) 공유 메모리를 생성하는 함수. 또한 공유메모리를 생성하기 전에 이미 만들어져 있나 확인할 때 사용함. 성공시 반환값 : 공유 메모리 식별자 실패시 반환값 : -1 key_t key 공유 메모리를 구별하는 식별번호(공유 메모리의 고유 값으로 사용자가 임의 설정) size_t size 공유 메모리 크기 int shmflg 동작 옵션 IPC_CREATE : key에 해당하는 공유 메모리가 없다면 생성한다. 만약 있다면 무시하며 생성을 위해 접근 권한을 저정해 주어야 한다. IPC_EXCL: 공유 메모리가 이미 있다면 실패로 반환하며 공유 메모리에 접근하지 못한다. void* shmat(int s..
-
server / client 데이터송수신과정Network 2013. 6. 14. 23:36
출처 : http://blog.naver.com/shw20319/20149329949 server측 [연결 준비 단계] 1. 소켓 생성(socket) : 네트워크 통신을 위해 소켓을 생성한다. s = socket(PF_INET, SOCKDGRM, 0); socket 연결 기본 함수domain 소켓이 사용할 프로토콜 체계(Protocol Family)정보 전달 type소켓의 데이터 전송방식에 대한 정보 전달protocol두 컴퓨터 간 통신에 사용되는 프로토콜 정보 전달IPPROTO_TCP : tcp 소켓IPPROTO_UDP : udp 소켓첫번째, 두 번째 인자로 전달된 정보를 통해서 소켓의 프로토콜이 사실상 결정되기 때문에 세 번째 인자로 0을 전달해도 된다. 2. 연결할 주소 준비 : 클라이언트로부터 서..