Here's a list of study programs I've worked on since 1991.
They might seem small or simple, but each one helped shape me into the developer I am today.
* Not all the demos include source code.
Small Utilities
File Unlocker — Finds processes holding files and forces them to close, so you can delete locked files. Use with caution.
Running Module Lister — Displays all system processes with paths and internal modules with reference counters. Console output, redirect-friendly.
Keyboard Typer 1.0 — Types text automatically in any software; useful for DOS applications requiring step-by-step menu input.
Process Raker 1.0
프로세스들을 한번에 정리하고자 할 때 사용한다. 웜바이러스나 여러가지 이유로 알 수 없는 프로세스들이 생성되거나, 죽일 수 없는 프로세스들이 있는 경우 깔끔하게 정리할 수 있다. 단, 바이러스에 의한 프로세스를 제거하는 경우, 이것을 이용하는 것은 임시방편일 뿐이므로, 반드시 백신을 통해 레지스트리나 하드디스크에서 완전히 제거하여야 한다.
console용이며 실행하면 다음과 같은 메시지가 출력된다:
Process Raker 1.0, jhkim/GEOMania.com
usage: C:>rake.exe {authorized_process_list_file} {c|r}
C:>rake.exe list.txt c ; 현재 프로세스 목록(list.txt)을 생성한다.
C:>rake.exe list.txt r ; 인증된 프로세스목록에 포함되지 않는 모든 프로세스를 강제 종료 시킨다.
설명: LiquidNet은 TCP/IP를 지원하며 비동기로 동작하도록 설계되어 있다. 멀티 프로세서를 지원하여 효과적으로 네트웍 이벤트를 감지하도록 설계되어 있다. LiquidNet은 Win32 platform에서 동작하며, 현재 NT 5.0(Win2000) 이상의 platform 전용으로 서버용 모듈(LiquidNetHP)을 제작중이다. 이것은 NT 5.0 이상의 시스템에서 제공하는 I/O Completion Port 모델을 적용시켜 오직 시스템의 성능만이 동시접속수에 영향을 주게 된다.
C/C++ 프로그래밍시 할당한 메모리의 부적절한 해지나 실수로 해지하지 못한 상황을 발견해 주는 간단한 도구임.
기존 C/C++의 문법을 그대로 사용하실 수 있습니다. 대상 함수: new, new[], delete, delete[], malloc(), calloc(), realloc(), free() 함수들을 평소대로 사용하시면 됩니다.
어디에서 선언한 변수가 제대로 해지하지 못해 얼마만큼의 크기가 낭비되었는지를 알려주고, 적절치 못한 해지를 시도했을 경우 어디서 선언한 것을 어디서 해지하려 했으며 적절한 해지방법은 무엇이었는지, 이미 해지되거나 할당되지 않은 포인터를 해지하려 했을 때 등의 정보를 알려줍니다.
대전 엑스포에서 엑스포를 소개해주는 소프트웨어를 본적이 있다. 그것을 본 딴 것으로, 동아리에서 개최한 소프트웨어 전시회를 소개하는 안내 소프트웨어를 제작한 것이다. 프로그램을 종료할 수 없도록 만들었다. Ctrl+Alt+Del키로 웜 부팅도 할 수 없도록 만들어 놓았다. (윈도우즈에서는 종료가능)
Runtime: MS-DOS 5.0 이상, Standard VGA | Build: Turbo Pascal 6.0
고등학교때 'Future Crew'나 'Complex'등 특히 유럽인들의 활동이 두드러지는 Contest가 있었다. 그 Contest는 특수한 그래픽과 환상적인 사운드를 자랑하는 Demo 프로그램들의 대회였다. 특이한 것은 계속되어지는 특수한 그래픽화면이 모두 C나 Assembly로 작성되어진 실시간 Renderer로 만들어지고 있다는 것이었다. 사운드도 실시간인건 마찬가지다.
이 대회는 전 세계의 젊은 프로그래머들을 대상으로 자신(그룹)들의 실력을 신선하고 독창적인 아이디어와 그래픽, 사운드를 통해 마음껏 펼치는 공간이었다. 유명한 Contest에는 'Party' 시리즈와 'Assembly'가 있으며 매년 열리고 있다.
현재는 GUI가 기본인 Windows의 시대가 도래해, 많은 것이 부족했던 DOS시절에 온갖 기술들로 묘기를 부려야 했던 때와는 달라, 그런 무수한 테크닉들이 필요없게 되어 버렸지만 아직도 많은 사람들은 그때의 흥분되던 시간을 기억한다. 본인도 너무나 그것을 해보고 싶어서 부족한 실력으로 Demo를 만들어 보았다.
컴퓨터 학술동아리 '씨애랑' 정기 전시회 출품
Runtime: MS-DOS 5.0 이상, Standard VGA | Build: Turbo C++ 3.0, Turbo Pascal 7.0
External-QuickSort For A Large Data Using PVM 3.0 on ATM (155Mbps) Network 1996
1학년때 고성능 통신 연구실에서 분산처리를 실험한적이 있었다. 그 대상으로 엄청난 규모(목표 1GB)의 데이터를 정렬하는 것으로 하였다. 실제 실험은 40MB의 데이터를 가지고 했다.
FreeBSD에서 PVM을 이용해 그 당시 괜찮은 시스템이었던, Pentium 166Mhz(64Mb Mem) 두 대를 가지고 실험을 했는데, 로컬 네트웍이었지만 두 시스템간에 전송되는 자료가 너무 커 전송속도가 병목이 되었다. 병목을 없애기 위해 ATM 장비를 연결하였다. 그러나 결과는 약 120% 성능향상이 있었을 뿐이다. 실제적으로 150%를 넘기기를 기대했었다.
TinyShell 2.20 - A Shell Program For The Executables 1994
DOS 시절의 컴퓨터 초보 사용자를 위한 작은 유틸리티로써, 어디서든 'T'만 입력하면 현재 디렉토리나 지정 디렉토리의 실행 가능 파일들만 보여 주며, 그중 하나를 선택하면 프로그램을 대신 실행해 준다. 실행시 메모리를 전혀 차지 하지 않으며 실행전 자동으로 백신 프로그램을 이용해 바이러스 검색을 해주기도 한다. 인터페이스가 당시 유행하던 Norton Utility와 같아 매우 깔끔했다.
당시 본인이 알고 있는 거의 모든 기술들을 총 집합한 프로그램임. 시스템의 각종 정보 얻기, 빠른 화면 출력속도(주로 스크롤 속도)를 위한 최적화된 비디오 제어 코드, QuickSort등 각종 알고리즘 및 효과적인 자료구조 설계, 명령행과 초기화 파일 Parsing 등 알고 있는 기술들을 모두 적용했습니다.
'돋보기'는 꼭 필요한 알짜배기 기능과 몇 가지 색다른 기능을 내장한 편리하며 속도도 빠른, DIR 대체 유틸리티입니다. 특징은 이와 같습니다:
출력 속도가 빠르다. (예: CD-ROM의 1057개 파일목록 출력시 Dir은 평균 8.3초, 돋보기는 평균 1.2초)
FreeBSD에서 login 할 때마다 항상 보여지던 각종 격언들을 DOS로 그대로 porting 한 것이다. FreeBSD의 데이터를 DOS에서 그대로 사용할 수 있다. FreeBSD에서 사용되는 매우 방대한 격언이 담긴 문서를 당시의 작은 메모리 용량으로 읽어들일 수 없었기 때문에, 전체 내용에서 임의의 위치에 있는 내용을 빠르게 뽑아내어 보여주는 루틴이 중요했음.
위 사진은 아시는 분들은 다 아는 스크린 세이버다. 너무나 사실적이어서 바로 다운받았지만, 데모버전이었고 그래서 중간에서 조금 오른쪽에 있는 노란 물고기 한 마리만 화면에서 헤엄쳐 다니고 있었다. 너무 이뻐서 사고 싶었다. 그러나 약 20달러가 주머니에 없던 터라 한번 크랙을 시도해 보았다. SoftICE와 Win32 역 어셈블러 그리고 바이너리 에디터를 사용하였고, 20 달러짜리 디럭스버전으로 크랙하였다.
Lemmings 1 (unlock) 1992
Lemmings UnProtect. Key diskette protection을 우회하는 방법.
고등학교 시절에 했던 오래전 게임이라 기억하는 사람이 있을지 모르겠지만, 당시 PC용으로는 상당히 고품질의 3D 어드벤처 게임이었으며 그 시초격이었다. 상당히 아기자기하고 깔끔했던 게임이다. 이 게임에서 유리한 상황을 만들어 보고자, 저장된 바이너리 데이터 파일을 PCTOOLS를 이용해 분석하였고, 그 과정에서 찾아낸 설정값들을 쉽게 변조하고자 프로그램을 제작하였다.