Skip to content

A minimalist HTTP server for Linux, written in x86_64 assembly

License

Notifications You must be signed in to change notification settings

jcalvinowens/asmhttpd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

asmhttpd - The tiniest webserver ever written

HOW TO BUILD:
-------------

	Just run "make". You will need NASM on your system.

HOW TO RUN:
-----------

	./asmhttpd /path/to/your/webroot
	sudo ./asmhttpd /path/to/your/webroot

If run as root, it will listen on port 80. Otherwise, it will use port 8080.

HOW TINY IS IT?
---------------

The entire text and data fit on a single 4K page:

  {0}[calvin ~] cat /proc/$(pgrep -n asmhttpd)/maps
  00401000-00402000 r-xp 00001000 00:16 2483272 asmhttpd

Each client allocates an additional 4K page and a thread while connected.

The code is written in a monolithic "branching tree" style with no functions,
and uses registers for all local variables. RAM is only used for buffering the
HTTP request, and for building structures necessary for system calls.

Because there is no stack, and the targets of all branch instructions are
constants, traditional buffer overflow exploits are impossible.

About

A minimalist HTTP server for Linux, written in x86_64 assembly

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published