TokigunStudio obfuscation collection

"Hello, World!" 프로그램 (Whirl 버전)

0과 1 두 개의 명령으로 이루어진 Whirl로 만든 아주 간단한 "Hello, World!" 프로그램입니다. :) 예전에 올라 왔던 프로그램은 30KB에 가까웠지만 이 프로그램은 1,350바이트 밖에 안 됩니다 :) (개인적으로 Hello, World 프로그램은 1000바이트 안팎에서 가장 작게 만들 수 있다고 보고 있습니다.)

코드

110011100111000001111100000001000011111000011111100000000010
000011001111100001100010000010011111000100000000000001001111
100000111110001000000000000000001000111110010000001100001111
100011000000000100111110011100111000111000001000111000001111
100000111110010000011111000110011111100001111000001111000001
110011111100001111000110011100000111000100011111000001111100
100000110000000111000001110001111100011111000111000001000001
000011000111110001000001000000011100000111001000111110001111
000001111000011111100001111110000011110000000000000000011110
000011100111000011110011111000111110001111100000100000000000
000000000000111110001110000001110000011100011100111110001000
100000000011100001111100110000000010011111000111100000111100
111100010011100000111110000011111001100111100010001111000000
000001000111110010000010011110011001110001000111110001100000
100011111000011110011100111111000111100000111100011111000000
011110000011100100001111000100011111001100011111000111100000
111001110001100111100100000000000000011111000001111100010010
000011100001111100100000100011100000111000110011110001001111
110001100000111100011111000111100000111001000011110001001111
100000111110000000011110000011110000000000000000111000001110
000011000001100000111000111000001100111110000111111001001110
000011111000001100011000001001111110000011100110011111000000
000111000001110000111100001100 -- by Kang Seonghoon 2005.1.7

다음은 위 파일을 만드는 데 사용된 Whirl 명령 목록입니다. (아주 제한적인 어셈블리라고 보셔도 되겠습니다) m.은 Math Ring, o.는 Operation Ring에 있는 명령을 의미하며, 기울인 글씨는 원래 없어도 될 걸 코드 용량을 줄이기 위해서 일부러 집어 넣은 명령을 의미합니다.

o.one     m.add     o.store   m.add     m.add     m.store   m.eq      m.add
m.add     m.mult    m.store   o.dadd    m.store   o.store   m.add     o.store
m.store   m.add     m.add     m.add     m.store   o.dadd    m.store   m.add
m.add     m.add     m.add     m.store   o.dadd    m.load    o.dadd    m.load
o.store   m.load    m.add     m.add     m.store   o.dadd    m.neg     o.load
m.store   o.load    m.load    o.dadd    m.load    o.one     m.load    o.dadd
o.dadd    m.div     o.store   m.neg     o.store   m.add     o.store   m.neg
o.store   m.store   o.ascio   m.store   o.dadd    o.load    o.dadd    m.load
o.one     m.load    o.dadd    m.store   o.dadd    o.dadd    o.load    o.dadd
m.div     o.one     m.store   o.one     m.add     o.one     m.store   o.one
o.dadd    m.load    o.dadd    o.dadd    o.load    o.dadd    m.neg     o.one
m.add     o.one     m.neg     o.one     m.div     o.one     m.neg     o.one
m.add     o.one     m.add     o.one     m.add     o.one     m.add     o.one
m.neg     o.one     m.store   o.ascio   m.store   o.dadd    m.lt      m.store
m.add     m.add     m.add     m.add     m.add     m.add     o.dadd    o.dadd
o.load    o.dadd    m.add     m.store   o.ascio   m.store   o.ascio   m.store
o.one     m.store   o.dadd    o.dadd    o.dadd    m.neg     m.add     m.neg
o.load    o.dadd    o.one     o.dadd    m.store   o.ascio   m.load    o.dadd
m.load    o.dadd    m.load    o.dadd    m.store   m.add     m.store   o.load
o.dadd    m.load    o.one     m.neg     o.one     o.dadd    o.ascio   m.add
o.store   m.neg     o.store   m.add     m.add     m.neg     m.store   o.ascio
m.store   o.dadd    m.load    m.neg     o.dadd    m.add     o.dadd    o.load
m.store   m.add     m.add     m.add     m.add     o.store   m.add     m.store
o.ascio   m.store   o.one     m.store   o.dadd    m.load    o.dadd    m.store
o.load    m.store   o.dadd    o.ascio   m.load    o.store   m.neg     o.store
m.add     m.neg     m.store   o.ascio   m.store   o.dadd    m.load    o.one
m.load    o.dadd    m.load    o.dadd    m.load    o.ascio   m.load    o.dadd
m.load    o.dadd    m.load    o.dadd    m.load    o.dadd    m.load    o.load
m.load    o.dadd    m.load    o.store   m.load    o.dadd    m.load    o.load
m.mult    o.load    m.store   o.ascio   m.store   o.store   m.load    o.one
m.load    o.dadd    m.load    o.store   m.add     o.store   m.store   o.ascio
m.store   o.one     o.dadd    o.dadd    o.load    o.dadd    o.ascio   o.exit

사용법

일단 공식 인터프리터(C++)제가 만든 인터프리터(C)를 받아서 컴파일한 후 (윈도우즈 환경이라면 실행 파일을 바로 받아서 사용하세요) 다음과 같이 실행합니다.

$ whirl helloworld.wr
Hello, World!

지금은 글을 남길 수 없고 이미 남겨진 걸 볼 수만 있습니다.

Copyright © 2004-2005, Kang Seonghoon (Tokigun). All Rights Reserved.
Permanent Link: http://page.tokigun.net/obfuscation/_/whello.php
Last updated on January 08, 2005. Valid XHTML 1.1 Valid CSS 2