Viruses Revealed _ David Harley
Virus 감염(Infect)이란 바이러스가 명령들의 연결 사이에 자신을 집어넣어서 정당한 프로그램의 실행뿐만 아니라 바이러스의 실행을 유발하도록 하는 것이다.바이러스의 구조는 세가지 원형을 고려한다. 즉 주요 구성작용을 세가지로 나누어 볼수 있다. 첫째로 감염작용은 바이러스가 퍼지는 방식이나 경로들로 정의, 둘째로 피해작용은 바이러스가 복제 외에 무엇을 하느냐로 정의된다. 셋쨰로 트리거작용은 피해를 일으킬 시기를 결정하는 절차로 정의된다.피해로는 트래싱이나 부팅불가, 메모리 점유, 디스크 공간 차지, 클럭 싸이클 소모, 시스템 변경 혹은 이들의 조합으로 나타난다.스텔스 작용으로 은폐 기법을 사용하는 바이러스들은 종종 스텔스 바이러스라고 기술된다. 다형성(Polymorphism)은 자신의 생김새를 변화시..
2015.03.04
USB 자동 실행 방지
http://www.ahnlab.co.kr/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=5&seq=19730 USB 자동 실행 설정 방지하기 1. 시작을 클릭하고 검색 시작 상자에 Gpedit.msc를 입력한 다음 엔터 키를 누른다. 2. 컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소를 차례로 확장한 다음 자동 실행 정책을 클릭한다. 3. 자동 실행 사용 안 함 창에서 ‘사용’ / ‘모든 드라이브’ 선택하고 ‘적용’을 클릭한다. 이로써 자동 실행 사용 안 함 기능이 활성화된다. USB 등의 이동식 저장 매체를 이용할 경우 반드시 PC에 설치된 안티바이러스 제품으로 검사한 후 사용하는 습관이 필요하다. 그것이 조금은 불편하더라도 PC를 더 ..
2015.03.03
Del_file.py in GitHub
2015.03.02
no image
만들면서 배우는 OS #1
#boot.bin [org 0]:origin 이라함. 이 프로그램이 메모리의 몇번지에서 실행 해야하는지를 알려줌[bits 16]jmp 0x07C0:start:바로 밑의 줄의 start: 로 점프하라는 문장이다.start:mov ax, cs:cs에는 0x07c0이 들어있다.mov ds, ax:ds를 cs와 같게 해준다.mov ax,0xB800:0xb800 = 비디오 메모리의 세그먼트mov es, ax:es 레지스터에 0xb800(비디오 메모리의 세그먼트)를 넣음.mov di, 0 :제일 윗줄의 처음에 쓸 것mov ax, word [msgBack]:써야할 데이터의 주소값을 지정한다.mov cx, 0x7FF:화면 전체에 쓰기 위해선 0x7FF개의 word가 필요하다. paint:mov word [es:di],..
2015.02.27
Make Simple AutoRun
Autorun Autorun은 USB나 CD를 인식시켰을 때 내장되어있는 파일을 자동으로 실행하게 하는 간단한 명령문이다. 만드는 방법 또한 간단한데 메모장에 명령문을 입력하고 .inf 확장자로 저장을 해주면 된다.[autorun]Open=file.exe 이것이 전부이다. Exe 파일 말고도 모든파일이 실행 가능하다.응용을 생각해본다면 [autorun] Open=example.bat 라 입력을 한 후 그 폴더 안에 example.bat 파일을 만들어 자동 cmd 명령을 치게하는 것이다. 만약 bat 파일의 내용이 shutdown –s 이라면 usb나 cd를 인식 시켰을때, 자동으로 컴퓨터를 종료하게 하는 usb나 cd를 만드는 것이다.
2015.02.26
Make Simple Bat File
@echo offipconfig //원하는 명령어 or 동작pause>nullgoto exit:exit
2015.02.26
Setup.py // Py2Exe 사용법
PY2EXE py2exe를 다음 링크에서 자신이 사용하는 파이썬(Python) 버전에 맞는걸 다운로드 후 설치py2exe : [ http://sourceforge.net/projects/py2exe/files/ ] 이 프로그램을 사용하기 위해서는 기본적으로 파이썬(Python)이 PATH로 지정이 되어있어야합니다. 내컴퓨터 (또는 컴퓨터) -> 속성 -> 고급 시스템 설정 -> 환경변수 PATH 항목에 파이썬(Python)이 설치되어있는 디렉토리를 추가해줍니다. 이제 exe 파일로 만들어줄 파이썬(Python) 프로그램이 있는 디렉토리에 setup.py 파일을 작성해줍니다. #Setup.pyfrom distutils.core import setup import py2exe setup(console=['f..
2015.02.26
Steal_Path.py in GitHub
os.path는 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈.os.path.exists(path) : 해당 경로가 존재할 경우 True를 반환하며 없을 경우 False 반환 os.system(command)를 실행하며, 성공한 경우 0을 반환합니다.이것을 이용하여 파일을 복사할수도 있다. os.listdir(path)해당 경로(path)에 존재하는 파일과 디렉터리들의 리스트를 반환합니다. shutil.copy(src, dst)src라는 이름의 파일을 dst로 복사한다. 만약 dst가 디렉토리 이름이라면 src라는 파일이름으로 dst이라는 디렉토리에 복사하고 그 이름이 존재하면 덮어쓰게 된다.import shutilshutil.copyfile('smp.txt','smp_1...
2015.02.26

Virus

감염(Infect)이란 바이러스가 명령들의 연결 사이에 자신을 집어넣어서 정당한 프로그램의 실행뿐만 아니라 바이러스의 실행을 유발하도록 하는 것이다.

바이러스의 구조는 세가지 원형을 고려한다. 즉 주요 구성작용을 세가지로 나누어 볼수 있다. 첫째로 감염작용은 바이러스가 퍼지는 방식이나 경로들로 정의, 둘째로 피해작용은 바이러스가 복제 외에 무엇을 하느냐로 정의된다. 셋쨰로 트리거작용은 피해를 일으킬 시기를 결정하는 절차로 정의된다.

피해로는 트래싱이나 부팅불가, 메모리 점유, 디스크 공간 차지, 클럭 싸이클 소모, 시스템 변경 혹은 이들의 조합으로 나타난다.

스텔스 작용으로 은폐 기법을 사용하는 바이러스들은 종종 스텔스 바이러스라고 기술된다.

다형성(Polymorphism)은 자신의 생김새를 변화시켜서 자신의 존재를 탐지하기 어렵게 만들려고 한다. 다형성은 동일한 바이러스를 유지하지만 특성화된 탐색 문장을 찾는 것으로는 감염된 파일에서 찾아지지 않는 것이다. 코드는 본질적으로 동일하게 유지되지만, 표현이 달라서 같은 프로그램이 서로 다른 순서의 바이트로 나타나게 된다.

은 자기복제 프로그램을 의미한다. 그에 비해 트로이 목마는 자기복제를 하지 않는다.

 

바이러스의 역사 고찰

코어 전쟁, 임프(Imp)는 단순히 메모리 상에서 옮겨 다니며, 다니면서 위치를 덮어쓴다. 이것은 크기가 매우 작기 떄문에 임프를 찾아내고 죽이는 것은 매우 어렵다.

화면 뒤집기, 음향소리 추가등 성가신 것들도 존재한다.

  

피해

데이터 덮어쓰기, 파일 지우기, 시스템 정보 빼내기, 디스크 포멧, 보안 시스템 무력화, 소프트웨어 오염, 프로그램 프로세스제거 등을 통한 손상

바이러스와 트로이 피해로 인한 직접적 충격

유용성에 대한 공격 : 파일과 하위 디렉터리의 삭제, 파일 이름변경, 파일, 디스크, 혹은 시스템 영역의 암호화

완전성에 대한 공격 : 시스템 영역의 이동을 포함해서 임의적인, 혹은 비임의적인 디스크 쓰기에 의한 시스템 파일과 시스템영역(DOS | MBR )에 대한 오염, 데이터몰락으로 스프레드 쉬트 형식의 왜곡과 같은 대상 데이터 파일의 변경, 권한 없는 파일 쓰기에 의한 어플리케이션 파일과 데이터 파일 오염

기밀성에 대한 공격 : 비밀번호 획득과 전달, 개인적인 기밀 파일을 다른 곳으로 전달


Bomb

Logic Bomb특정 조건들이 만족될 때 실행되는 루틴이나 루틴의 집합이며, 바이러스나 트로이의 구성 요소가 될 수 있다.

Time Bomb논리 폭탄의 특수한 경우이며, 시작 조건이 특정 시간이나 날짜가 된다.

ANSI Bomb : 키보드의 키, 혹은 키들을 재정의 하는 ASNI.SYS에 의해서 번역되는 문자들의 연속이다. 그에 따라 이 키들은 일반적으로 할당된 문자 대신에 재정의 된 문자열을 보내게 된다.

   

File Virus

기존의 프로그램 코드를 덮어씌우거나 프로그램의 시작부분이나 마지막 부분에 코드를 추가하거나 정상적인 코드가 실행되는 중에 바이러스 코드가 실행될 수 있도록, 명령들의 연결 사이에 바이러스 코드를 집어 넣는다.

올리디버거를 통하여 바이러스 코드를 뒷부분에 넣은 후 맨앞에서 점프문을 통하여 그 부분으로 진행 되었다가 바이러스 코드의 가장 뒷부분에 다시 점프문을 넣어줌으로써 다른 파일에 섞일수 있다. (Prepending & Appending)

  

위험충격분석

생산성 저하-서비스 거부 비용: 감염된 시스템의 성능 저하, 손상된 어플리케이션의 신뢰 불가, 손상된 시스템의 사용 불가, 손상되거나 접근할 수 없는 데이터의 사용 불가

관찰되지 않은 영향 : 성능저하, 탐지되지 않은 데이터 피해, 어플리케이션 피해, 디스크 I/O손상, 불법 자원사용, 탐지되지 않은 증식과 이차 감염

관찰된 영향 : 심각한 성능 저하, 진단되지 않은 시스템 오류, 디스크나 데이터에 대한 장기적인 피해, 진단되지 않은 오류에 쓰여진 서비스 시간비용, 신뢰할수 없는 어플리케이션, 생산성의 손실로 인한 대체이익의 손실

 

과거의 바이러스

Jerusalem Virus : 파일 감염에 있어서 가장 많은 수의 변종을 가진 바이러스 프로그램으로 감염된 파일이 실행되면, 자신을 메모리에 인스톨 시켜서 원조 감염 프로그램이 삭제되더라도 여전히 남아 활동하게 된다. 파일에 추가된 바이러스 코드는 프로그램이 기생하게 된 이후 실행된 .exe 프로그램들을 감염시킨다. 대부분의 변종은 일종의 날짜 논리 폭탄 하중을 탑재한다.

AIDS Trojan : 하드 디스크를 암호화 후 키에 대한 요금을 청구했다. Ransomware와 비슷한 원리인것 같다.

Stoned Virus  : Stoned is the name of a boot sector computer virus created in 1987.

Michelangelo : 현재는 멸종된 바이러스로 요즘 출시되는 시스템에는 달려있지 않은 플로피디스크로만 전파되는 부트바이러스다.

AutoOpen ( or AutoStart) :

Chernobyl ( CIH.Spacefiller ) : PC에 장착된 하드디스크 안에는 새로운 파일을 저장할 때마다 공간을 지정해주는 주소록 기능을 수행하는 부분이 있는데, 이 바이러스는 바로 이곳을 파괴한다. 때문에 바이러스에 감염되면 PC가 어디에 무엇이 저장되어 있는지 파악할 수 없는 혼란에 빠져 파일을 복구할 수 없게 된다. 만약 기본 입출력 시스템(BIOS)이 감염되면 기판이나 플래시메모리칩을 교체해야 한다. 이 바이러스에 감염된 파일이 실행되면 기억장소에 상주한 뒤 윈도95에서 실행되는 파일을 계속 감염시킨다.

RootKit : 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능들을 제공하는 프로그램의 모음.


참고


트래싱(Trashing)

임프, 제록스웜,,부트섹터 바이러스, 브레인바이러스, 예루살렘바이러스, Frodo_Virus, Dark Avenger, AIDS 트로이, 미켈란젤로, 르네상스, 데키랄선라이즈, Hoax, 백오리피스, 스크립트바이러스, 멜리사, 오토런이 지원되는 usb에는 무엇이 있을까?, 확장자명 변경 바이러스, 레지스트리 변경, 원격접근(Remote-Control Software), 루트키트(RootKit), 실행 후 원본 파일을 삭제하는 프로그램, 다른 프로그램을 감염시키는, 메일을 통한 바이러스 전달, 키로거

정상적인 프로그램을 바이러스로 감지되도록 하여 백신이 차단하게끔 하는 방법

 

'Study > Book' 카테고리의 다른 글

Operating System Concepts_Chapter.1  (0) 2015.02.05
Operating Sysyem Concepts //컴퓨터 시스템의 구성  (0) 2015.02.03
정보보안개론 0x08  (0) 2015.01.24
정보보안개론 0x07  (0) 2015.01.23
정보보안개론 0x06  (0) 2015.01.23

http://www.ahnlab.co.kr/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=5&seq=19730


USB 자동 실행 설정 방지하기


1. 시작을 클릭하고 검색 시작 상자에 Gpedit.msc를 입력한 다음 엔터 키를 누른다.

 

 

2. 컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소를 차례로 확장한 다음 자동 실행 정책을 클릭한다.
 


 

3. 자동 실행 사용 안 함 창에서 ‘사용’ /  ‘모든 드라이브’ 선택하고 ‘적용’을 클릭한다. 이로써 자동 실행 사용 안 함 기능이 활성화된다.  

 

 

 

USB 등의 이동식 저장 매체를 이용할 경우 반드시 PC에 설치된 안티바이러스 제품으로 검사한 후 사용하는 습관이 필요하다. 그것이 조금은 불편하더라도 PC를 더 안전하게 사용할 수 있는 길이다.


V3를 이용하여 USB 자동 실행 방지하기

 

'USB 드라이브 자동 검사하기' 옵션은 사용자가 USB나 외장 하드를 삽입 시 V3가 자동으로 검사 및 치료하는 기능이다.


'CD/USB 드라이브 자동 실행 방지' 옵션은 이동식 저장 장치를 삽입할 때 자동 실행되지 않도록 OS 설정을 변경하는 기능이다. USB에 악성코드가 담겨있어도 자동 실행 기능이 동작하지 않으면 PC가 감염되지 않는다.

 

 

[그림3] V3 Lite, V3 365의 오토런 바이러스 감염 예방 설정
 
 
  
[그림4] IS 8.0의 오토런 바이러스 감염 예방 설정




    'Programming > Python' 카테고리의 다른 글

    if f=open('test.txt','r') == True: ||if not f=open('test.txt','r'): 은 안된다.  (0) 2015.03.05
    Key_logger.py in GitHub  (0) 2015.03.05
    Setup.py // Py2Exe 사용법  (0) 2015.02.26
    Steal_Path.py in GitHub  (0) 2015.02.26
    Memo.py in GitHub  (0) 2015.02.26



    #boot.bin


    [org 0] :origin 이라함. 이 프로그램이 메모리의 몇번지에서 실행 해야하는지를 알려줌

    [bits 16]

    jmp 0x07C0:start :바로 밑의 줄의 start: 로 점프하라는 문장이다.

    start:

    mov ax, cs :cs에는 0x07c0이 들어있다.

    mov ds, ax :ds를 cs와 같게 해준다.

    mov ax,0xB800 :0xb800 = 비디오 메모리의 세그먼트

    mov es, ax :es 레지스터에 0xb800(비디오 메모리의 세그먼트)를 넣음.

    mov di, 0 :제일 윗줄의 처음에 쓸 것

    mov ax, word [msgBack] :써야할 데이터의 주소값을 지정한다.

    mov cx, 0x7FF :화면 전체에 쓰기 위해선 0x7FF개의 word가 필요하다.


    paint:

    mov word [es:di], ax :비디오 메모리에 쓴다. (ax = word[msgBack])

    add di, 2 :한 WORD를 썻으므로 2를 더한다.

    dec cx :한 word를 썻으므로 CX의 값을 하나 줄인다.

    jnz paint :cx가 0이 아니면 paint로 점프하여 나머지를 더 쓴다.


    mov edi, 0 :제일 윗줄의 처음에 쓸것.

    mov byte[es:edi], 'A' :비디오 메모리에 쓴다.

    inc edi :한개의 byte를 썻으므로 1을 더한다.

    mov byte[es:edi], 0x06 :배경색을 쓴다.

    inc edi :한개의 byte를 썻으므로 1을 더한다.

    mov byte[es:edi], 'B' :반복 

    inc edi

    mov byte[es:edi], 0x06

    inc edi

    mov byte[es:edi], 'C'

    inc edi

    mov byte[es:edi], 0x06

    inc edi

    mov byte[es:edi], '1'

    inc edi

    mov byte[es:edi], 0x06

    inc edi

    mov byte[es:edi], '2'

    inc edi

    mov byte[es:edi], 0x06

    inc edi

    mov byte[es:edi], '3'

    inc edi

    mov byte[es:edi], 0x06

    jmp $ :여기서 무한루프를 돈다.

    msgBack db'.', 0xE7 :배경색으로 사용할 데이터

    times 510-($-$$) db 0x06:여기서부터 509번지까지 0으로 채운다.

    dw 0xAA55 :510번지에서 0xAA를, 511번지에서 0x55를 넣어둔다. 




    코드 설명




    [org 0]                         :origin 이라함. 이 프로그램이 메모리의 몇번지에서 실행 해야하는지를 알려줌. 정확하게 말하면 프로그램상에서 사용될 Offset의 기준을 마련하는 것

    [bits 16]            :이 프로그램이 16비트용으로 되어있다는 의미를 컴파일러에게 알려주기위함.

               jmp 0x07C0:start            :바로 밑의 start:로 점프하라는 명령이다.

    start:

               mov ax, cs                                          :cs에는 0x07c0이 들어있다.

               mov ds, ax                                          :ds cs와 같게 해준다.

    코드세그먼트와 데이터 세그먼트를 같은 값으로 사용하겠다는 의미. 이 두개를 같게 하는 이유는 나중에 mov ax, word[msgBack] msgBack db‘.’,0xE7과 같이 word[msgBack]이라는 식으로 세그먼트를 지정하지 않고 데이터를 사용하면 cpu는 묵시적으로 DSmsgBack과 같이 DS에 있는 값을 세그먼트로 사용하겠다는 뜻으로 받아들인다. 하지만 여기서 CS DS의 값이 다르다면 램상의 이상한 곳의 데이터를 읽거나 쓰게 된다.

     




    이 부분은 배경을 그리는 루틴이며, C언어의 FOR문을 사용하여 메모리에 값을 넣는 동작과 같다.

               mov ax,0xB800                          :0xb800 = 비디오 메모리의 세그먼트

               mov es, ax                    :es 레지스터에 0xb800(비디오 메모리의 세그먼트)를 넣음.

               mov di, 0                                            :제일 윗줄의 처음에 쓸 것

    mov ax, word [msgBack]  :써야할 데이터의 주소값을 지정한다. AX MSGBACK에 있는 값을 2바이트(워드)로 읽어 드린다.

               mov cx, 0x7FF                           :화면 전체에 쓰기 위해선 0x7FF개의 word가 필요하다.

    이를 통해 CX에 데이터를 넣을 길이를 정한다. 뒤에서 이 CX를 계속 한 개씩 줄여가며 메모리상에 다 썻는지를 확인한다.

    paint:               //이 다음이 실제로 반복할 루틴이다.

               mov word [es:di], ax        :비디오 메모리에 쓴다. (ax = word[msgBack],) 지정된 주소에 값을 쓰는 부분으로 AX에는 msgBack에 있는 값이 들어있으며, 같은 값을 루프가 도는 동안에도 계속 유지한다.

               add di, 2                                             : WORD를 썻으므로 2를 더한다.

    주소값을 2바이트(워드)씩 더한다. 이로써 ax에 있는 값을 다음 번지에도 써넣을수 있다.

               dec cx                                                : word를 썻으므로 CX의 값을 하나 줄인다. 이로써 루프는 cx에 정해진 값만큼만 돌게 된다. 이후 cx 값이 0이 되면 cpu flag 레지스터에 있는 Zero Flag(ZF) ON이 된다.

               jnz paint                                             :cx 0이 아니면 paint로 점프하여 나머지를 더 쓴다.

     

               mov edi, 0                                          :제일 윗줄의 처음에 쓸것.

    Edi 0을 넣는다. es에는 0xB800이 들어 있으므로 화면의 제일 처음부분에서 시작한다는 의미.

               mov byte[es:edi], 'A'        :비디오 메모리에 쓴다.

    화면의 첫부분에 ‘A’자를 나타낸다. 여기서 byte[] C언어의 char형과 같은 1바이트형의 포인터.

               inc edi              :한개의 byte를 썻으므로 1을 더한다. 주소를 한칸 뒤로 옮긴다.

               mov byte[es:edi], 0x06     :배경색을 쓴다. ‘A’를 갈색바탕에 검은 글씨로 나타낸다.

               inc edi                                               :한개의 byte를 썻으므로 1을 더한다. 한글자는 2바이트로 구성된다.(앞은ASCII,뒤는 색)

               mov byte[es:edi], 'B'        :반복

               inc edi

               mov byte[es:edi], 0x06

               inc edi

               mov byte[es:edi], 'C'

               inc edi

               mov byte[es:edi], 0x06

               inc edi

               mov byte[es:edi], '1'

               inc edi

               mov byte[es:edi], 0x06

               inc edi

               mov byte[es:edi], '2'

               inc edi

               mov byte[es:edi], 0x06

               inc edi

               mov byte[es:edi], '3'

               inc edi

               mov byte[es:edi], 0x06

                          jmp $                                     :여기서 무한루프를 돈다.

    $ 현재 이 명령이 있는 주소값을 나타내는 것이고, jmp $ while(1)과 같다.

               msgBack db'.', 0xE7                    :배경색으로 사용할 데이터로 위에서 jmp$로 무한루프를 돌기 떄문에 이곳이 실행되지는 않는다. 실행된다면 cpu가 이상한 동작을 할것이다.

               times 510-($-$$) db        : 0x06에서부터 509번지까지 0으로 채운다.

               dw 0xAA55                              :510번지에서 0xAA, 511번지에서 0x55를 넣어둔다.

    바이오스가 디스크의 처음 mbr부분을 복사할떄 mbr제일 끝의 한 워드에 0xAA55 값이 있으면 이곳이 MBR이 맞다고 판단하게 되므로, 이값을 꼭 써줄 필요가 있다.

     

    참고:

    리얼 모드 에서는 메모리상에 저장된 데이터의 종류에 따라 CS, DS, SS, ES 나뉘는데,  코드 세그먼트 (CS) 현재 사용중인 프로그램의 코드가 저장된 세그먼트의 주소를 가르키고, 데이터 세그먼트 (DS) 현재 프로그램이 사용중인 데이터가 저장된 세그먼트의 주소를 가르키며, 스택 세그먼트 (SS) 현재 프로그램에서 사용중인 스택이 저장된 세그먼트의 주소를 가르키고, 확장 세그먼트(EXTRA segment) (ES) 프로그래머에 의해 결정된다.

    참고:

    Real Mode: 컴퓨터에 전원이 들어온 후 cpu가 처음 움직이기 시작하면서 활동하는 모드로 한번에 한가지의 일밖에 하지 못하는 문제가 있지만 호환성의 이점으로 인하여 아직도 사용되고 있으며 모든 커널은 컴퓨터에 전원이 들어온 후 리얼 모드에서 여러 가지 하드웨어적인 세팅을 마친후 프로텍티드 모드로 CPU를 전환한다.

    Protected Mode: 모든 프로그램이 동시에 동작할수 있다. 이 모드에서는 유저모드와 커널모드의 두가지로 다시 나뉘어지는데, 인터럽트를 통하여 다중프로그래밍처럼 보여지게 할수 있다.

    세그먼트와 오프셋: 앞에서 만든 프로그램의 맨 마지막에 디스크의 첫 512바이트를 램으로 읽어들인다는 이야기를 했다. 이 과정에서 바이오스 프로그램은 디스크에 있는 프로그램을 램의 0X07C00번저에 복사한다. 여기서 0X07C00번지를 물리주소라 부르고 0X07C0:0000 등을 논리 주소라한다.

    물리주소는 CPU와 램의 연결선인 어드레스 버스에 실제로 나타나는 전기신호이다. 논리주소는 프로그래머가 소스를 작성할 때와 컴파일러가 소스를 기계어로 컴파일 했을 떄의 결과물인 기계어에 사용된다. 이 기계어가 실행될때 CPU의 하드웨어적인 펌웨어가 논리주소를 물리주소로 변환시켜 사용한다. 변환 시킬떄에는 세그먼트에 있는 값에 16을 곱하여 거기에 오프셋을 더한다.

    따라서 0X07C0:005은 다음과 같이 계산할수 있다.

    0X7C00+0X0005 = 0X7C05 (자릿수를 맞추기 위하여=>) 0X07C05 

    지금 설명한 것은 Real Mode에서의 주소 지정방식이다.

    참고: Memory Map



    참고:

    #Disasm_boot.txt

    00000000  EA0500C007        jmp word 0x7c0:0x5 :첫번째 칸의 숫자 00000000은 프로그램 기계어 코드의 실제 번지수이다. 두번째EA0500C007 은 프로그램의 실제 기계어이며 세번째 칸의 문장은 방금 전에 우리가 작성한 어셈블리어 프로그램이다.

    00000005  8CC8              mov ax,cs 0x05에서 시작하는 이유는 위에서 4개의 오프셋을 차지하였기 때문이다.

    00000007  8ED8              mov ds,ax

    00000009  B800B8            mov ax,0xb800

    0000000C  8EC0              mov es,ax

    0000000E  BF0000            mov di,0x0

    00000011  A17A00            mov ax,[0x7a]

    00000014  B9FF07            mov cx,0x7ff

    00000017  268905            mov [es:di],ax

    0000001A  83C702            add di,byte +0x2

    0000001D  49                dec cx

    0000001E  75F7              jnz 0x17

    00000020  66BF00000000      mov edi,0x0

    00000026  2667C60741        mov byte [es:edi],0x41

    0000002B  6647              inc edi

    0000002D  2667C60706        mov byte [es:edi],0x6

    00000032  6647              inc edi

    00000034  2667C60742        mov byte [es:edi],0x42

    00000039  6647              inc edi

    0000003B  2667C60706        mov byte [es:edi],0x6

    00000040  6647              inc edi

    00000042  2667C60743        mov byte [es:edi],0x43

    00000047  6647              inc edi

    00000049  2667C60706        mov byte [es:edi],0x6

    0000004E  6647              inc edi

    00000050  2667C60731        mov byte [es:edi],0x31

    00000055  6647              inc edi

    00000057  2667C60706        mov byte [es:edi],0x6

    0000005C  6647              inc edi

    0000005E  2667C60732        mov byte [es:edi],0x32

    00000063  6647              inc edi

    00000065  2667C60706        mov byte [es:edi],0x6

    0000006A  6647              inc edi

    0000006C  2667C60733        mov byte [es:edi],0x33

    00000071  6647              inc edi

    00000073  2667C60706        mov byte [es:edi],0x6

    00000078  EBFE              jmp short 0x78

    0000007A  2EE700            cs out 0x0,ax

    0000007D  0000              add [bx+si],al

    0000007F  0000              add [bx+si],al

    00000081  0000              add [bx+si],al

    00000083  0000              add [bx+si],al

    00000085  0000              add [bx+si],al

    00000087  0000              add [bx+si],al

    00000089  0000              add [bx+si],al

    0000008B  0000              add [bx+si],al

    0000008D  0000              add [bx+si],al

    0000008F  0000              add [bx+si],al

    00000091  0000              add [bx+si],al

    00000093  0000              add [bx+si],al

    00000095  0000              add [bx+si],al

    00000097  0000              add [bx+si],al

    00000099  0000              add [bx+si],al

    0000009B  0000              add [bx+si],al

    0000009D  0000              add [bx+si],al

    0000009F  0000              add [bx+si],al

    000000A1  0000              add [bx+si],al

    000000A3  0000              add [bx+si],al

    000000A5  0000              add [bx+si],al

    000000A7  0000              add [bx+si],al

    000000A9  0000              add [bx+si],al

    000000AB  0000              add [bx+si],al

    000000AD  0000              add [bx+si],al

    000000AF  0000              add [bx+si],al

    000000B1  0000              add [bx+si],al

    000000B3  0000              add [bx+si],al

    000000B5  0000              add [bx+si],al

    000000B7  0000              add [bx+si],al

    000000B9  0000              add [bx+si],al

    000000BB  0000              add [bx+si],al

    000000BD  0000              add [bx+si],al

    000000BF  0000              add [bx+si],al

    000000C1  0000              add [bx+si],al

    000000C3  0000              add [bx+si],al

    000000C5  0000              add [bx+si],al

    000000C7  0000              add [bx+si],al

    000000C9  0000              add [bx+si],al

    000000CB  0000              add [bx+si],al

    000000CD  0000              add [bx+si],al

    000000CF  0000              add [bx+si],al

    000000D1  0000              add [bx+si],al

    000000D3  0000              add [bx+si],al

    000000D5  0000              add [bx+si],al

    000000D7  0000              add [bx+si],al

    000000D9  0000              add [bx+si],al

    000000DB  0000              add [bx+si],al

    000000DD  0000              add [bx+si],al

    000000DF  0000              add [bx+si],al

    000000E1  0000              add [bx+si],al

    000000E3  0000              add [bx+si],al

    000000E5  0000              add [bx+si],al

    000000E7  0000              add [bx+si],al

    000000E9  0000              add [bx+si],al

    000000EB  0000              add [bx+si],al

    000000ED  0000              add [bx+si],al

    000000EF  0000              add [bx+si],al

    000000F1  0000              add [bx+si],al

    000000F3  0000              add [bx+si],al

    000000F5  0000              add [bx+si],al

    000000F7  0000              add [bx+si],al

    000000F9  0000              add [bx+si],al

    000000FB  0000              add [bx+si],al

    000000FD  0000              add [bx+si],al

    000000FF  0000              add [bx+si],al

    00000101  0000              add [bx+si],al

    00000103  0000              add [bx+si],al

    00000105  0000              add [bx+si],al

    00000107  0000              add [bx+si],al

    00000109  0000              add [bx+si],al

    0000010B  0000              add [bx+si],al

    0000010D  0000              add [bx+si],al

    0000010F  0000              add [bx+si],al

    00000111  0000              add [bx+si],al

    00000113  0000              add [bx+si],al

    00000115  0000              add [bx+si],al

    00000117  0000              add [bx+si],al

    00000119  0000              add [bx+si],al

    0000011B  0000              add [bx+si],al

    0000011D  0000              add [bx+si],al

    0000011F  0000              add [bx+si],al

    00000121  0000              add [bx+si],al

    00000123  0000              add [bx+si],al

    00000125  0000              add [bx+si],al

    00000127  0000              add [bx+si],al

    00000129  0000              add [bx+si],al

    0000012B  0000              add [bx+si],al

    0000012D  0000              add [bx+si],al

    0000012F  0000              add [bx+si],al

    00000131  0000              add [bx+si],al

    00000133  0000              add [bx+si],al

    00000135  0000              add [bx+si],al

    00000137  0000              add [bx+si],al

    00000139  0000              add [bx+si],al

    0000013B  0000              add [bx+si],al

    0000013D  0000              add [bx+si],al

    0000013F  0000              add [bx+si],al

    00000141  0000              add [bx+si],al

    00000143  0000              add [bx+si],al

    00000145  0000              add [bx+si],al

    00000147  0000              add [bx+si],al

    00000149  0000              add [bx+si],al

    0000014B  0000              add [bx+si],al

    0000014D  0000              add [bx+si],al

    0000014F  0000              add [bx+si],al

    00000151  0000              add [bx+si],al

    00000153  0000              add [bx+si],al

    00000155  0000              add [bx+si],al

    00000157  0000              add [bx+si],al

    00000159  0000              add [bx+si],al

    0000015B  0000              add [bx+si],al

    0000015D  0000              add [bx+si],al

    0000015F  0000              add [bx+si],al

    00000161  0000              add [bx+si],al

    00000163  0000              add [bx+si],al

    00000165  0000              add [bx+si],al

    00000167  0000              add [bx+si],al

    00000169  0000              add [bx+si],al

    0000016B  0000              add [bx+si],al

    0000016D  0000              add [bx+si],al

    0000016F  0000              add [bx+si],al

    00000171  0000              add [bx+si],al

    00000173  0000              add [bx+si],al

    00000175  0000              add [bx+si],al

    00000177  0000              add [bx+si],al

    00000179  0000              add [bx+si],al

    0000017B  0000              add [bx+si],al

    0000017D  0000              add [bx+si],al

    0000017F  0000              add [bx+si],al

    00000181  0000              add [bx+si],al

    00000183  0000              add [bx+si],al

    00000185  0000              add [bx+si],al

    00000187  0000              add [bx+si],al

    00000189  0000              add [bx+si],al

    0000018B  0000              add [bx+si],al

    0000018D  0000              add [bx+si],al

    0000018F  0000              add [bx+si],al

    00000191  0000              add [bx+si],al

    00000193  0000              add [bx+si],al

    00000195  0000              add [bx+si],al

    00000197  0000              add [bx+si],al

    00000199  0000              add [bx+si],al

    0000019B  0000              add [bx+si],al

    0000019D  0000              add [bx+si],al

    0000019F  0000              add [bx+si],al

    000001A1  0000              add [bx+si],al

    000001A3  0000              add [bx+si],al

    000001A5  0000              add [bx+si],al

    000001A7  0000              add [bx+si],al

    000001A9  0000              add [bx+si],al

    000001AB  0000              add [bx+si],al

    000001AD  0000              add [bx+si],al

    000001AF  0000              add [bx+si],al

    000001B1  0000              add [bx+si],al

    000001B3  0000              add [bx+si],al

    000001B5  0000              add [bx+si],al

    000001B7  0000              add [bx+si],al

    000001B9  0000              add [bx+si],al

    000001BB  0000              add [bx+si],al

    000001BD  0000              add [bx+si],al

    000001BF  0000              add [bx+si],al

    000001C1  0000              add [bx+si],al

    000001C3  0000              add [bx+si],al

    000001C5  0000              add [bx+si],al

    000001C7  0000              add [bx+si],al

    000001C9  0000              add [bx+si],al

    000001CB  0000              add [bx+si],al

    000001CD  0000              add [bx+si],al

    000001CF  0000              add [bx+si],al

    000001D1  0000              add [bx+si],al

    000001D3  0000              add [bx+si],al

    000001D5  0000              add [bx+si],al

    000001D7  0000              add [bx+si],al

    000001D9  0000              add [bx+si],al

    000001DB  0000              add [bx+si],al

    000001DD  0000              add [bx+si],al

    000001DF  0000              add [bx+si],al

    000001E1  0000              add [bx+si],al

    000001E3  0000              add [bx+si],al

    000001E5  0000              add [bx+si],al

    000001E7  0000              add [bx+si],al

    000001E9  0000              add [bx+si],al

    000001EB  0000              add [bx+si],al

    000001ED  0000              add [bx+si],al

    000001EF  0000              add [bx+si],al

    000001F1  0000              add [bx+si],al

    000001F3  0000              add [bx+si],al

    000001F5  0000              add [bx+si],al

    000001F7  0000              add [bx+si],al

    000001F9  0000              add [bx+si],al

    000001FB  0000              add [bx+si],al

    000001FD  0055AA            add [di-0x56],dl





    Make Simple AutoRun

    Kail-KM
    |2015. 2. 26. 14:24

    Autorun

     

    Autorun USB CD를 인식시켰을 때 내장되어있는 파일을 자동으로 실행하게 하는 간단한 명령문이다. 만드는 방법 또한 간단한데 메모장에 명령문을 입력하고 .inf 확장자로 저장을 해주면 된다.

    [autorun]

    Open=file.exe

     

    이것이 전부이다. Exe 파일 말고도 모든파일이 실행 가능하다.

    응용을 생각해본다면

    [autorun]

    Open=example.bat        라 입력을 한 후 그 폴더 안에 example.bat 파일을 만들어 자동 cmd 명령을 치게하는 것이다. 만약 bat 파일의 내용이 shutdown –s 이라면 usb cd를 인식 시켰을때, 자동으로 컴퓨터를 종료하게 하는 usb cd를 만드는 것이다.

    'Programming > C' 카테고리의 다른 글

    getaddr.c  (0) 2015.05.06
    EggShell.c  (0) 2015.05.06
    MsgBox.dll  (1) 2015.03.22
    Make Simple Bat File  (0) 2015.02.26
    C언어 요약정리  (0) 2015.01.10

    Make Simple Bat File

    Kail-KM
    |2015. 2. 26. 14:21


    @echo off

    ipconfig    //원하는 명령어 or 동작

    pause>null

    goto exit

    :exit



    'Programming > C' 카테고리의 다른 글

    getaddr.c  (0) 2015.05.06
    EggShell.c  (0) 2015.05.06
    MsgBox.dll  (1) 2015.03.22
    Make Simple AutoRun  (0) 2015.02.26
    C언어 요약정리  (0) 2015.01.10

    PY2EXE


     

    py2exe를 다음 링크에서 자신이 사용하는 파이썬(Python) 버전에 맞는걸 다운로드  후 설치

    py2exe : [ http://sourceforge.net/projects/py2exe/files/ ]



    이 프로그램을 사용하기 위해서는 기본적으로 파이썬(Python)이 PATH로 지정이 되어있어야합니다.

    내컴퓨터 (또는 컴퓨터) -> 속성 -> 고급 시스템 설정 -> 환경변수



    PATH 항목에 파이썬(Python)이 설치되어있는 디렉토리를 추가해줍니다.

    이제 exe 파일로 만들어줄 파이썬(Python) 프로그램이 있는 디렉토리에
    setup.py 파일을 작성해줍니다.

    #Setup.py

    from distutils.core import setup
    import py2exe

    setup(console=['filename.py'],)


    위와 같이 작성을 완료 하였다면 밑에와 같이 명령을 입력합니다.

    c:\변환하고자하는 프로그램경로>python setup.py py2exe




    CMD창에 이미지처럼 실행이 되면서 build dist 디렉토리가 생성이 됩니다.

    dist 디렉토리에 가보시면 변환이 완료된 파일들이 있는데 그 파일들중에서 밑의 것외에 다른 파일은 지워도 상관이 없습니다.

    python27.dll
    library.zip
    filename.exe






    'Programming > Python' 카테고리의 다른 글

    Key_logger.py in GitHub  (0) 2015.03.05
    Del_file.py in GitHub  (0) 2015.03.02
    Steal_Path.py in GitHub  (0) 2015.02.26
    Memo.py in GitHub  (0) 2015.02.26
    Simple memo(Jump2Python)  (0) 2015.02.02



    os.path는 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈.

    os.path.exists(path) : 해당 경로가 존재할 경우 True를 반환하며 없을 경우 False 반환


    os.system(command)

    <command>를 실행하며, 성공한 경우 0을 반환합니다.

    이것을 이용하여 파일을 복사할수도 있다.


    os.listdir(path)

    해당 경로(path)에 존재하는 파일과 디렉터리들의 리스트를 반환합니다.


    shutil.copy(src, dst)

    src라는 이름의 파일을 dst로 복사한다. 만약 dst가 디렉토리 이름이라면 src라는 파일이름으로 dst이라는 디렉토리에 복사하고 그 이름이 존재하면 덮어쓰게 된다.

    import shutil

    shutil.copyfile('smp.txt','smp_1.txt')


    glob(pathname)

    glob모듈은 해당 디렉토리내의 파일들을 읽어서 리스트로 돌려준다. *, ?등의 메타문자를 써서 원하는 파일만을 읽어들일 수도 있다.

    다음은 C:/Python이란 디렉토리에 있는 파일중 이름이 Q문자로 시작하는 파일들을 모두 찾아서 리스트로 돌려준 예이다.

    >>> import glob 

    >>> glob.glob("C:/Python/Q*") 

    ['C:\Python\quiz.py', 'C:\Python\quiz.py.bak']     

    >>>


    참고 https://wikidocs.net/33

    'Programming > Python' 카테고리의 다른 글

    Key_logger.py in GitHub  (0) 2015.03.05
    Del_file.py in GitHub  (0) 2015.03.02
    Setup.py // Py2Exe 사용법  (0) 2015.02.26
    Memo.py in GitHub  (0) 2015.02.26
    Simple memo(Jump2Python)  (0) 2015.02.02