파이썬에서는 블록을 들여쓰기해서 표현한다. 중괄호X for문범위지정 - for x in range(범위) 리스트에서 - for x in list:*이중for문 - for x in list: print (x) for y in list: print (y) if else문elif 18.5
전용뷰어 보기 정수 - 숫자를 그대로 씀문자열 - ‘ 또는 “로 감싼다실수 - 소수점을 붙여서 숫자를 쓴다.부울 - 참 또는 거짓리스트(사전,튜플,셋) - 콤마구분자로 나열된 데이터를 []로 감싼다. 리스트 - 정수,실수,문자열 관계없이 저장가능. list = [2, 3.14, ‘abcd’], 빈리스트는 []리스트에서 인덱스접근 - list[0] 첫번째 , list[-1] 뒤에서 첫번째append(값) - 제일뒤에 데이터 추가insert(위치,값) - 지정한 위치에 데이터 추가pop(위치) - 지정한 위치의 데이터 삭제remove(값) - 지정한 값을 리스트에서 삭제extend(리스트) - 리스트뒤에 지정한리스트를 추가시킴 ex) lista.extend(listb)list[x:y] - x부터 y직전의 요..
표준 템플릿 라이브러리(STL, Standard Template Library)l 컨테이너(contatiner) : 객체들을 담아둘 수 있는 객체를 말한다. 예를들면 배열과 유사한 vector이 있다.l 반복자(iterator) : 컨테이너와 알고리즘 사이에서 이를 연결해 주는 역할을 한다. 반복자는 컨테이너가 관리하는 요소에 접근할 수 있게 해 주는 추상화된 개념으로서, 프로그램을 하는 데 있어 반복적인 작업에 이름을 붙여서 프로그래머가 반복적인 작업을 할 때 사용하는 패턴 중 하나다. 반복자를 통해 컨테이너 내의 요소들을 다양한 방법으로 다룰 수 있기 때문에 알고리즘과 컨테이너를 연결하는 매체가 된다. 컨테이너에 알고리즘을 적용하려면 반복자가 꼭 필요하다.l 알고리즘(algorithm) : 자료들을 ..
완전 가상함수의 형식 : Vitrual 반환형 함수명() = 0 추상클래스 : 완전가상함수를 한 개 이상 포함한 클래스로, 객체를 생성할 수 없다. 기반클래스 역할을 한다. 정적 바인딩 – 컴파일할 때 미리 호출될 함수를 결정 컴파일시점에서는 선언된 포인터 변수의 자료형에 대한 정보만 있다. 동적 바인딩 - 실행시점에 호출할 멤버함수를 결정한다. 동적바인딩할 함수의 기반클래스에 가서 virtual을 앞에 붙이면된다. 메모리를 많이 차지하고 실행 속도면에서 ↓ 템플릿함수함수의 정의부 위에 템플릿 선언을 해주어야한다.template T myabs(T num){ … } 템플릿클래스클래스를 정의할 때 위에 템플릿 선언을 해준다. Template 각각의 멤버함수를 정의할 때 위에 템플릿 선언을 해주어야하고, 멤버..
소프트 브레이크포인트 소프트 브레이크포인트(Soft Breakpoint)는 명령을 실행하는 CPU를 일시 중지시키는데 사용되며 애플리케이션을 디버깅할 때 가장 흔하게 사용되는 형태의 브레이크포인트다. 소프트 브레이크포인트는 한 바이트 명령을 사용해 디버깅 대상 프로세스의 실행을 중지시킨다. 프로세스의 실행이 중지되면 디버거의 브레이크포인트 예외 핸들러가 제어권을 전달받는다. 이 작업이 어떻게 수행되는지 이해하려면 x86 어셈블리 언어에서의 명령과 opcode의 차이점을 이해하고 있어야 한다. 어셈블리 명령은 CPU를 실행시키기 위한 명령을 하이레벨 수준으로 표현한 것이다. 예를 들면 다음과 같다. MOV EAX, EBX 이 명령은 CPU가 EBX 레지스터에 있는 값을 EAX 레지스터에 저장하라는 의미로,..
스택프레임EBP(베이스 포인터)레지스터를 사용하여 스택 내의 로컬 변수, 파라미터 ,복귀 주소에 접근하는 기법 ESP레지스터의 값은 프로그램 안에서 수시로 변경되기 때문에 스택에 저장된 변수, 파라미터에 접근하고자 할 때ESP 값을 기준으로 하면 프로그램을 만들기 힘들고, CPU가 정확한 위치를 참고할 때 어려움이 있다. 따라서 어떤 기준 시점(함수시작)의 ESP 값을 EBP 에 저장하고 이를 함수 내에서 유지해주면, ESP 값이 아무리 변하더라도 EBP를 기준으로 안전하게 해당 함수의 변수, 파라미터, 복귀 주소에 접근할 수 있다. 이것이 바로 EBP 레지스터의 베이스 포인터 역할이다. 스택프레임의 구조PUSH EBP ;함수시작(현재 EBP를 스택에 저장)MOV EBP, ESP ;현재의 ESP(스택포인..
1. PE 구조 개요Microsoft의 운영 체제 Windows 3.1부터 지원되는 실행파일의 구조를 말한다. 다양한 운영 체제에서의 이식성을 보여준다는 뜻에서 이식이 가능한 실행 형식(Portable Executable)이라는 이름을 붙였다. PE 파일의 종류는 다음과 같다.•실행 파일 계열 : EXE, SCR(Screen Saver)•라이브러리 계열 : DLL, OCX(Active X)•드라이브 계열 : SYS•오브젝트 파일 계열 : OBJ 사용할 툴 : HxD분석대상 : Notepad.exe 전체적인 PE 파일의 구조는 다음과 같다. 2. DOS_Header (PE Header > DOS_Header) "4D 5A"로 시작하는 부분부터 64Byte까지가 Image_Dos_Header 부분이다. 이 ..
1. 함수 호출 규약 개요함수 호출 규약(Calling Convention)이란, 함수를 호출하는 방식에 대한 약속이다. 함수 호출 규약은 인자 전달 방법, 인자 전달 순서, Stack Frame을 정리하는 방법에 따라 그 종류를 구분한다. 예시 코드를 분석해 각 호출 규약의 특징과 진행 과정을 알아본다. ▶Stack Frame함수를 호출 할 때 상위에서 진행하던 함수의 정보를 저장하고 인자를 전달하기 위해 Stack Frame이라는 구조를 사용한다. Stack Frame은 함수의 호출 과정에서 호출되는 함수가 사용하기 위해 할당되는 Stack의 공간을 의미한다.프로그램이 실행되면 가장 먼저 Main 함수의 Stack Frame을 할당한다. Main함수가 A 함수를 호출하면서 A의 Stack Frame을..
Luuzun IT Security | luuzun http://luuzun.blog.me/50189443217 1. 2진수, 8진수, 10진수, 16진수2진수는 0,1 이라는 두 개의 기호로 데이터를 표현한다.8진수는 0~7 까지의 8개의 기호를 이용해 데이터를 표현하고,10진수는 0~9 까지 10개의 기호를 이용해 데이터를 표현하며,16진수는 0~10, A, B, C, D, E 총 16개의 기호로 데이터를 표현한다. 10진수2진수8진수16진수11112102231133410044510155611066711177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F1610000201017100012111 ▲ [표 2-1 : 자릿수가 증..
Luuzun IT Security | luuzun http://luuzun.blog.me/50189313319 1. 리버싱이란?리버싱이란 파일을 소스코드 상태로 되돌리는 것을 말한다. 바이너리(2진수 기계어)로 된 파일을 기계어와 1:1로 대응되는 어셈블리어로 복원하는 것을 말하며, 컴파일과 반대되는 과정이다.리버싱의 목적은 다음과 같다. ▶완성된 프로그램을 거꾸로 분석하여 설계도를 축출한다.▶완성된 시스템을 역추적한다.▶소프트웨어를 유지 보수한다.▶프로그램의 동작을 변경한다.▶복제프로그램 개발한다.▶향상된 프로그램을 개발한다.▶악성코드를 분석한다. 2. 바이너리 디버거리버싱에 주로 사용되는 툴들은 다음과 같다.▶OllyDBG (올리 디버거)http://ollydbg.de ▶IDA Prohttp://he..
베이스캠프 설정1) Goto – 주소로 이동후 F42) BreakPoint설치 - BP지정 후 F93) 주석달아놓기(;) – Search for - Comment4) 레이블 붙여놓기(:) – Search for - lable 원하는코드 빨리 찾기1) 하나하나 실행하며 찾기(짧을경우)2) 문자열 검색 – Search for – All referenced text strings3) 호출 코드 검색 – Search for – All intermodular calls4) API코드에 직접 BP – Search for – Name in all modules (실행파일압축시) 문자열 패치1) 문자열 버퍼를 직접 수정 – 뒤의 메모리 훼손 조심2) 새로운 문자열을 생성후 주소 전달 스택의 역할1) 함수 내의 로컬변수..