전체 분류 보기 497

3) hello world disassemble

Hello world Disassemble 1. 환경 - Cent OS Linux release 7.3.1611 (Core) -64 bit 2. 소스 #include int main(int argc, const char *argv[]) { printf("hellow world\n"); return 0; }3. 목표 - 메모리의 hello world 찾기 4. gdb를 이용한 disassemble - main부터 보기 위해 main에 break 걸기 [root@client basic]# gdb main(gdb) b mainBreakpoint 1 at 0x40053c: file main.c, line 5. (gdb) rThe program being debugged has been started alread..

disassemble 2017.03.18

2) gdb 출력 형식 지정

gdb 출력 형식 지정[변수 값 출력] p/[format] $보고자하는것 p/t // 2진수 p/o // 8진수 p/d // 10진수 (int) p/u // 부호없는 10진수 (unsigned int) p/x // 16진수 //주소를 보기위해 가장 많이 쓴다. p/c // 문자형 출력 (크기가 4byte 이상인 변수는 처음 1바이트를 출력한다.) p/f // 부동 소수점 값 형식으로 출력 p/a // 가장 가까운 심볼의 오프셋을 출력 (p/a 0x0801295 를 입력하면, 0x0801295와 가장 가까운 어셈블리 명령어줄의 offset을 출력) [메모리 출력] x 명령어는 메모리 특정 범위의 값들을 확인하는데 사용하는 명령어다. x/[범위][출력format][단위] x/[범위][단위][출력format]..

disassemble 2017.03.18

1) stack frame에대한 정리

stack frame에대한 정리stack이란 무엇인가? - 메모리의 스택 영역을 말한다. frame이란 무엇인가? - 힌 함수에서 사용되는 스택의 범위라고 할수 있다. - 아래는 gdb를 사용해서 core파일을 stack frame 정보를 본것이다. 총 3개의 stack frame이 존재한다.(#0,#1,#2 가 frame 번호를 의미한다) - frame 번호가 높을수록 상위 frame이라고한다. - stack frame을 통해서 함수의 호출 순서를 알 수 있다. gdb main core.2424(gdb) bt#0 0x0000003a48c47dec in vfprintf () from /lib64/libc.so.6#1 0x0000003a48c4f14a in printf () from /lib64/libc...

disassemble 2017.03.11

0) disassemble의 종류 GAS / NASM

[Assemble] GAS vs NASM 1. 정의 - GAS(GNU Assembler) - NASM(Netwide Assembler) 2. 사용처 - 대표적 사용 : Linux(GAS) ,Window(NASM) - GAS : GNU 프로젝트에서 사용됨 - NASM : 인텔 x86아키텍쳐용 어셈블러/디스어셈블러에서 사용됨 3. 사용 문법 - GAS : AT&T 문법 사용 - NASM : 인텔 어셈블리 문법의 변형된 형태를 사용 4. Operand 비교 1) src와 dest의 순서 - GAS : movl $4, %eax ( mov src dst) - NASM: mov eax, 4 ( mov dst src) 2) immdediate operator의 형식 - GAS : pushl $4 - NASM: pus..

disassemble 2017.03.11

5장 동기

5장 동기 책의 저자는 동기를 내제적 동기와 외제적 동기로 나누었다. 내제적 동기는 스스로하는 동기, 외제적 동기는 외부의 영향으로인해 하는 동기를 말한다.무엇이든지 지속적으로 하기위해서는 내제적 동기가 필요하다고 말한다. 그런데 이런 내제적 동기를 상실 하게 되면, 외제적 동기로 강력한 자극을 주어 내제적 동기를 꺠워야 한다고말하다. 또한 내 제적 동기를 유지 시켜주는 것중 하나로써 자율성을 말한다. 자율성과 선택 할수 있는 권리가 부여 주어지면 내제먹 동기는 유지 된다고말한다. 5장은 결론은 다음과 같다. 외제적 동기로 강력하게 내 제적 동기를 일깨우고 자율성을 통하여 내제적 동기를 유지시킨다.

책- 정리/완공 2017.02.06

[윈도우] FindFirstFileA를 사용한 MBCS 문자열 탐지

FindFirstFileA를 사용한 MBCS 문자열 탐지 표준 C프로그래밍과 Window 프로그래밍을 섞어서 사용할때 발생하는 디렉토링 리스팅 해결 방법 FindFirstFileA 를 사용하면 char형 배열로 찾아쓸수 있다. FindFirstFileW 또는 FindFirstFile 를 사용시 Unicode로 되기때문에 사용할수 없다. int Check_File_Name(const char *sDir) { WIN32_FIND_DATA fdFile; HANDLE hFind = NULL; char sPath[2048]; char fine_name[2048]; //Specify a file mask. *.* = We want everything! memset(sPath, '\0', sizeof(sPath));..

[윈도우] window 프로그래밍에서 표준 C/C++를 동시에 하용할 시 발생하는 문자열 문제점 해결

출처: http://icartsh.tistory.com/13 1. 유니코드 -> 멀티바이트 wchar_t strUnicode[256] = {0,}; char strMultibyte[256] = {0,}; wcscpy_s(strUnicode,256,L"유니코드"); int len = WideCharToMultiByte( CP_ACP, 0, strUnicode, -1, NULL, 0, NULL, NULL ); WideCharToMultiByte( CP_ACP, 0, strUnicode, -1, strMultibyte, len, NULL, NULL ); STL이용 wstring strUni = L"유니코드"; int len = WideCharToMultiByte( CP_ACP, 0, &strUni[0], -1..

[윈도우] 문자열의 Encoding 방식

윈도우에서 제공하는 문자열의 Encoding 방식 출처 : http://eunchul.com/database/board/cat.php?data=Win32_API&board_group=D45ef8ac8c01d4 C++ 문법을 배우고 Win32 프로그래밍을 시작 할 때, 가장 어려운 것중 하나는 엄청난 수의 Win32 DataType들과 생소한 Macro들이었다. 생전 처음 보는 그 녀석들을 이해하려면 상당한 범위를 돌아다녀야 했고, 이해하기 보다는 대충 이렇게 쓰면 오류없이 컴파일 되더라 정도로 사용하는게 현실이었다. 그 중에서도 문자열부분은 꽤나 두통을 유발하는 것들인데 유니코드고 멀티바이트고 신경안쓰고 대충 만들고 싶어도 어디에서건 꼭 발목을 잡히게 된다. 그렇다고 아주 해결이 안되는것도 아닌데, 그 ..

4장 목표

4장 목표 이번 장에서 말하는 내용은 핵심은 딱하나이다. 원대한 계획을 세워라, 그리고 그 계획을 세부적으로 나눠라 마지막으로 시간계획을 세워 그것을 실천해라 사람은 언제나 너무 큰 목표를 보게되면 아.. 저걸 어떻게 하지 라고 할것이다. 그러나. 그 큰 목표를 세부적으로 나눠서 보면 별거 아닐 것이다. 책의 저자는 언제나, 박사 시절의 이야기를 통해서 계획의 중요성과 시간관리의 중요성을 말한다. 나역시 프로그래머써로 계회의 중요성과 시간관리의 중요성을 요즘에 뼈저리게 느끼고 있다. 회사에서 프로젝트를 하다보면 시간이 터무니 없이 촉박 할수있다. 그러면 이때 어떻게 하면 좋을까??? 내 생각은 다음과 같다. 우선 최대한 불만을 토론해라. 이렇게 하지 않으면 회사에서 당신이 얼마나 힘든일은 하는지 알지 못..

책- 정리/완공 2017.02.01