About Bryant Keller
I am probably most recognised as the creator of the NASM32 (now NASMX) project
and author of many underground tutorials written in the late 1990's under the
alias "Synfire". I am a Georgia resident and student at Georgia Northwest Technical
College, due to graduate in May 2010. I was born on April 27th of 1981 and have
spent the majority of my life near or in front of a computer.
I have worked as a professional software engineer, a freelance application
developer, a freelance systems software developer and I am now working on and
off as an IT consultant for various small-businesses throughout north Georgia.
My technical background includes Linux system administration, Microsoft network
administration, computer and information security, and software development. I'm
currently fluent in C/C++, Intel Assembly, PERL, BASIC, and various mark-up, database,
and scripting languages.
To date, I have worked on hundreds (if not thousands) of software projects and have
kept active in the IT community by administrating and/or designing various websites,
moderating multiple technical discussion forums, and aiding in the development of
many open source projects.
For the most part, I tend to keep to myself and only involve myself in projects which
I find to be either good sources of education for myself and others or monetarily
profitable. I do, however, follow a strict code of ethics which, amongst other things,
makes me a large advocate against the piracy of software. This in itself draws much
confusion about me as I've been given a reputation as a hobbiest reverse engineer.
However, my view on the subject of reverse engineering is fairly simple. I do not
believe in removing functionality from any product and I will not add functionality
to any project without explicit permission from the author(s).
Although I may seem to be a difficult person to get along with, I am actually a fairly
friendly and loyal person. My psychological type is that of INTJ which means that I
tend to judge people based on their actions and applicable skill level, not so much on
the titles or ranks they hold. I'm not impressed by a PhD, but show me well thought-out
project you've made and I'll hold great respect for you. My years of programming has
made me a very mission critical thinker and I tend to over analyse things to the point
in which jokes and humour, short of sarcasm, seem to fly over my head at times.
I have created this site as a way for people to get to know me and the things in which I
find interesting. If you share the same interests I'm sure you'll want to bookmark this
page, however my interests are fairly specialised and tend to be on the "geeky" side so
nobody will blame you if you find this site to be a bit bland/boring. None the less, I
hope you enjoy yourself and wish that you return regularly to read any new updates I can
offer.
Regards, Bryant Keller
On The Web
I participate on many web forums and take part in many development projects
all over the Internet. Instead of discussing each one in detail, I decided
to simply give you links to each of these places and a short description
of my affiliations.
- The ASMCommunity Website
I first joined the ASMCommunity forums, while it was still going by the
name "Win32ASMCommunity", back in May of 2004 on the request of a dear
friend of mine, Homer. Since that time I've became a site moderator and
a regular contributor under the handle "Synfire".
- The Netwide Assembler
Although I've never joined the development team, I've been a large supporter
of the Netwide Assembler for many years. I've contributed various bug fixes and
initiated the development of a complex macro/include library to help expand
the user-base. More recently, with the addition of an on-host SMF forum, I've
become a forum moderator and very active user at nasm.us.
- My Radio Station
I listen to quite a lot of music while I'm on the computer. Because of this I decided
to setup my own Last.Fm Radio Station. If you want to listen to what I'm most likely
listening to, you're more welcome to visit and jam out with me. WARNING: I listen to
a lot of metal music. lol
- DynatOS
I honestly haven't done a whole lot on this site in a quite a while. I did the initial layout
for this site and Keith keeps me updated on the development of DynatOS, and I am looking forward
to being a alpha/beta tester. The project is developed and managed by Keith Kanios as a 64-bit
operating system written entirely using the Netwide Assembler.
- Donkey's Stable
Edgar Hansen is the creator of many very useful Assembly language projects which
can all be found at this website. I have supported and used his GoASM Header Project
since the early days if its creation and find its layout, which mimics that of the
Microsoft Platform SDK, to be very user friendly and makes this project stand out
above the rest.
- Jeremy Gordon's GoDev Tools
When I'm programming on Windows you can almost guarantee I'm using either NASM or this
amazing developer's kit from Jeremy Gordon. On this site you can find an include set which
I created called Win32A for simplified calling of Windows API routines. This project was
superseded by Edgar Hansen's GoASM Header Project (which I use and attempt to contribute
to when I have the time) shortly after its creation. Although Edgar Hansen's Header Project
is far more advanced, Jeremy continues to host a link to the original include set I created.
- My Facebook Page
Despite the fact that I'm not a huge fan of social networking sites, I created
a Facebook account in order to stay in contact with family and friends whom I
no longer can regularly keep in touch with. Although I'm not heavily active, only
dropping in once every few days, I welcome anyone who wishes to add me as a friend
and you are more than welcome to contact me on my wall for any off-topic conversations.
- My Store
Rather than blatently taking donations I thought I would let people have a way to contributed
to the site while getting something in return. I've posted an Assembly.ath.cx Store online at
Zazzle so you can find the product you like and the proceeds go toward helping to run this site.
Projects and Code Snippets
As I mentioned above, I wouldn't be myself if I didn't have some form of project going on. Most software
projects I work on are developed in Intel Assembly language, however I do use quite a bit of C/C++ when
time is precious. The following list contains projects and code snippets which I have created and released
to the public. Some of these projects are no longer actively developed, but most are worth a look none the less.
- The NASMX Project
I originally created the NASMX project after a discussion in a Yahoo! Chatroom on the usability
of the Netwide Assembler. The argument being made to me was that assemblers such as MASM and
TASM have grown far beyond the capabilities of NASM due to their ability to use various high
level constructs; like the .If, Invoke and Proc directives in MASM and the advanced OOP features
of TASM's STRUCT directive. As a proof of concept in the abilities of the NASM macro engine,
I developed the initial NASM32 release which simulated many of the high level features of
MASM. Over time this grew into a complete 32-bit Windows Assembly development kit. After
some time, despite the growing popularity of the project, I began to get bored with it and
felt that if the project was going to survive I should hand it off to someone more active
in its development. Keith Kanios took over the project and I worked in the background only
doing minor updates. The project grew into what's now known as NASMX and further supports 64-bit
Windows and 32-bit Linux operating systems.
- Netwide Assembler OOP Support
This is a work in progress OBJECTS.INC file I've been working on. It adds support for creating
and using classes in NASM. It now supports inheritance and virtual method overloading. There might
be a syntax change in the works for the next release.. we'll see.
- The Pelles C IDE - PoASM Wizard
As many are aware, I'm an avid Pelles C and PoASM user. Pelles C IDE has a very clean user interface
and a really nice source level debugger built into the IDE. This project was something I original
did to support automatically generating simple PoASM projects using the Pelles C IDE. This wizard supports
"Dialog As Main", Single Document Interface, Win32 Console, Dynamic Library and Static Library
templates for PoASM in Pelles C IDE. I will add more support as I find time to work on it.
- The K32Base Library
A well known trick on 32-bit windows for reducing code size is to design your program in a manner
which does not include an import table. This works by using the PEB structure located in the FS
register to access routines automatically loaded by the PE loader. The K32Base Library does
exactly that, allowing you to write very small and relocatable code to reduce your executables
size down at least 512-bytes (the minimum size of an import table). The project is no longer
developed on since it was found that, unlike practically every other 32-bit Windows OS, Windows
2000 Professional actually validates the existence of an import section, without it Windows
2000 Professional will refuse to run the program.
- GNU/Linux Assembly Examples
I was originally going to write a tutorial on Linux NASM Programming, however other things have
have come up and that project has been scratched. However, I did write quite a bit of example
code to go along with the tutorial and I thought I would post it here for people wanting to learn
to use the Netwide Assembler under GNU/Linux.
Essays, Articles and Publications
I like to try and actively write essays and articles in order to help others learn and also to
solidify my knowledge of a subject. In some cases these works get published but in my experience
that's fairly rare. Below are a list of essays, articles, and published works which I have
written and are freely available to the public.
- Identifying Malware: Common Threats Against Computer Security
This article was my first published work after taking a very long break from
writing tutorials many years ago. "Identifying Malware" attempts to clear
up the confusions that many people have in regards to what malware is, where
it came from, and how to get rid of it. Unfortunately, I was under tight
time constraints so the article was not cleanly formatted and it lacks the
"technical touch" which I have previously been known for. This article does,
however, inform the reader in a fairly short and easy to follow manner.
- Fundamentals of Development
This article is in response to the increasing number of questions regarding
optimising code through microprocessor specific "tricks" to reduce execution
time. Although, as an Assembly Language programmer, I commonly make use of
such "tricks" myself, I am a firm believer in creating optimised algorithms
first, then optimising the underlying code. I think many people are either
unaware of this or have simply forgotten the developmental process. Therefore,
this article covers the fundamental process of developing optimal, production
quality, software.
Online Resources
Whether I'm working on school, work, or hobby projects I find the Internet to be
an invaluable source of information. When I first migrated over to the Internet
from local bulletin board systems in Fall of 1994 I found the Internet to be a
strangely organised and difficult network to navigate. With the later advances in
web directory technology and advanced search engine features, the Internet became
one of my most used resources for learning, communications, and entertainment.
Below is a list of web sites which I have found particularly informative and useful
over the past sixteen years of Internet usage. I pass these along to you in hopes that
you too will find a great number of uses for them in your life.
- GALILEO
The GALILEO online research library is one of the best sources of information
for students in practically any major. Given access to this site, you can quickly
search essays, reports, news and magazine articles from accredited sources. I was
first introduced to GALILEO while attending school at Georgia Northwest Technical
College and have found it to be the first stop when researching even non-course based
information.
- Project Gutenberg
Project Gutenberg began in 1971 from the efforts of Michael Hart, inventor of the
first electronic book (or eBook). This project grew into a full fledged, FREE library
of electronic books. Much of the research I did in college required books which I
could not afford (like Ulysses and Time Machine) but were no longer under any legal
copyright restraints. Project Gutenberg offers these free LEGAL books to all people
through the use of their extensive Online Catalogue.
- Anger Fog's Homepage
Having been an Assembly language programmer for many years, I have found Agner Fog's
web site to be a great source of software and information. Although he is most widely
known for his Optimisation Reference, probably my favourite part of his web site is
his personal blog where he discusses many advancing technologies and the results of
various performance tests which he has done.
- The Linux Documentation Project
After having become a regular on the Yahoo! Chat network, a friend and I had a discussion
about the affects of going several days without sleep. Somewhere along the course of this
discussion, a bet was made that I couldn't read the entirety of the Linux Documentation
Project's collection of howto's and tutorials, one after the other, without sleeping. This
turned into a five day reading session in which I was asked questions regarding the content of
the articles which I had already read. This experience taught me two things; 1.) staying
awake while staring at a CRT for five days can only be compared to hitting yourself in the
head with a crowbar and 2.) The Linux Documentation Project is probably the most in-depth
resource for users of the Linux operating system on the Internet.
- Google
The Internet would not be what it is today without the Google Search Engine. Google
has become so popular that the site has become synonymous with Internet searches. I
was first introduced to Google during the later part of 1999 shortly after it's offical
release. At the time, the most valued part of the site was it's (nearly complete) web
directory which allowed for finding web sites based on subject AND relationship to other
web sites. This is a feature that other web directories such as Yahoo! Directory was
lacking at the time and truly revolutionised the Internet. I'm certain you probably
already know about Google, however this list would not be complete without it.
Contact Information
If contacting me by becoming a regular at the various places I hang out is
not an option for you, then you might try finding me at some of the following
locations. These are the methods of contact in which you can assure the most
immediate response from me.
- Send Me An Email
The majority of my communication is done through email. Call me old school
but there is nothing I like better than seeing, or writing, a professional
looking email. Yes, I do hang out on various real-time communication networks
on occasion, but I check my email account every single day.
- Visit My Blog
Do I really warrant my own weblog? Probably, not. But I wanted one anyway and
it gives me a place to vent my ideas and converse with my visitors.
- MSN Messenger
Most of the time Pidgin automatically loads when my computer comes on, so if
you have an MSN Messenger account, you can send me a message and most likely
get a response. The down side to this is that, when I'm busy, I won't answer
any instant messages.
|