본문 바로가기

AC3LuCiFer52

[Reversing]Input and Output ▣ 입력과 출력 - 로우레벨 계층의 I/O 시스템 : 하드웨어 등과의 통신 담당 - 하이레벨 계층의 Win32 서브시스템 : GUI를 구현하고 사용자 입력 처리 작업 담당 ● I/O 시스템 - 시스템에서 동작하는 디바이스 드라이버를 관리 - App과 디바이스 드라이버 간의 통신 담당 커널 컴포넌트들로 구성됨 - App의 디바이스 드라이버에 대한 요청을 전달하는 작업을 담당함 - 계층 구조로 이루어짐(각 디바이스에 대해 여러 개의 디바이스 드라이버가 스택구조로 존재할 수 있음 : 드라이버와 App 간이나 두 드라이버 간의 통신을 모니터링하거나 변경하기 위한 필터 드라이버 추가에 적합) - 각 드라이버 간의 연결을 책임지고 담당 ● Win32 서브시스템 - 윈도우 사용자 인터페이스의 모든 부분을 담당하는 .. 2010. 5. 10.
[Reversing]실행 포멧 ▣ 실행 포맷 윈도우 실행파일 포맷인 PE(Portable Executable)의 기본적인 구조 이해 ● 기본 개념 - 실행파인은 재배치 될 수 있음(로드될 때마다 다른 가상 메모리 주소에 로드될 수 있음) - OS는 각 프로세서마다 고유한 주소 공간을 제공하지만 주소 공간에는 여러 개의 실행 바이너리들이 로드됨 - 프로그램은 자신의 주소 공간에 실행파일뿐만 아니라 DLL과 같은 추가적인 실행 모듈들을 로드함 - 기존에 사용하고 있는 주소에 다른 프로그램이 해당 주소를 사용하려고 하는 경우 다른 주소에 로딩해야 되는데 이때 재배치 작업을 수행함 MOV EAX, DWORD PTR [pGlobalVariable] 위 코드는 전역변수에 접근하는 전형적인 코드 컴파일러와 링커가 pGlobalVariable에 대.. 2010. 5. 8.
[연합뉴스]美조폐국 웹사이트 해킹으로 폐쇄 해킹 당한 URL 목록(외국 싸이트에서 퍼옴) --> BEP.gov, BEP.treas.gov, Moneyfactory.gov, Moneyfactory.com 출처 : http://news.mk.co.kr/newsRead.php?sc=30000017&cm=%EA%B8%B0%EC%97%85%C2%B7%EA%B2%BD%EC%98%81%20%EC%A3%BC%EC%9A%94%EA%B8%B0%EC%82%AC&year=2010&no=230770&selFlag=&relatedcode=&wonNo=&sID=501 미국 재무부의 조폐국(BEP) 웹사이트가 해킹 공격을 받아 4일 폐쇄됐다. 클라우디아 디킨스 미 조폐국 대변인은 "BEP의 (웹사이트) 운영 업체가 (해커) 침입을 받아 수많은 웹사이트가 감염됐다"면서 3일 .. 2010. 5. 6.
[Reversing]API ▣ Application Programming Interface(API) - API는 OS가 App과 통신하기 위해서 제공하는 함수 모음 ■ Win32 API - 로우레벨 프로그래밍 인터페이스 → 향후 하이레벨 인터페이스로 개발됨 - 계층적 구조 : 프로그래머들에게는 프로그래밍하기에 친숙하지만, OS는 모든 호출이 상위계층을 거치므로 다소 성능이 저하됨 - 윈도우에서 핵심적인 Win32 API는 약2,000개 [Win32 인터페이스 DLL과 커널 컴포넌트와의 관계] ● Kernel API - Based API라고도 불리움 - KERNEL32.DLL 모듈 안에 구현되어 있음 - GUI와 관련되지 않은 서비스들, 즉 파일I/O, 메모리 관리, 객체 관리, 프로세스와 스레드 관리 등 - NTDLL.DLL의 네.. 2010. 5. 4.
[Reversing]프로세스 동기화, 초기화 과정 ▣ 동기화 객체 - 멀티 쓰레드 소프트웨어 설계에서 가장 중요한 측면은 데이터 구조체와 데이터의 유효성을 보증하기 위한 동기화 메커니즘을 설계하는 방법임 - 스케줄러는 쓰레드의 대기 상태 조건이 언제 만족되고 그 때 어느 쓰레드가 실행되어야 하는지 알기 위해서 동기화 객체가 존재하는지 알아야만 함 Kernel mode 이벤트 · true, false 상태를 갖는 간단한 Boolean 동기화 객체 · 이벤트 객체를 대기하기 위해서 WaitForSingleObject, WaitForMultipleObject 사용) 뮤텍스 · 어느 한 시점에서 하나의 쓰레드만이 점유할 수 있는 객체 → 이미 점유된 뮤텍스를 다른 쓰레드가 점유하고 자 한다면, 해당 쓰레드가 종료되거나 해제할 때 까지 대기해야 함 → 대기하고 .. 2010. 5. 4.
[Reversing]프로세스와 쓰레드 ▣ 프로세스와 쓰레드 ● 프로세스(process) - 윈도우 기본 요소 - 프로세스 메모리 주소 공간 : · 프로그램을 실행시키기 위해 사용 · 각 프로그램은 자신만의 고유한 주소 공간에서 실행되는 것을 보장하기 위한 것 · 시스템은 프로세스 주소공간 안에 코드 모듈을 로드 · 실행되는 프로세스는 반드시 최소 하나 이상의 쓰레드를 가져야 함 ● 쓰레드(thread) - 가장 기본적인 코드 실행 유닛 - 매 순간마다 프로세스는 항상 쓰레드를 실행 시킴(즉, 실행코드를 실행함) - 쓰레드가 마지막으로 실행됐을 때의 프로세스 상태를 시스템에게 알려주는 CONTEXT Data 구조체와 스택공간으로 사용된 하나 또는 두개의 메모리 공간이 결합된 데이터 구조체일 뿐 - 유저모드코드와 커널모드커널을 번갈아 가면서 실.. 2010. 5. 4.