I started using computers when I was 4 in 1999; I had learned to speak in the same year. Still in 99', my first computer was something like a Compaq Presario (Windows 3.1). I had fun by just clicking things on the window manager, however I soon graduated to playing video games like Doom I/II and GTA 1/2 (and HL1 on our 32-bit PC.) My father always had plenty of computer junk (separate phone line for just the internet), and often had me take apart things ranging from power supplies to old VCRs; so I was in the right hands as far as learning is concerned. I eventually got a computer running Windows 95; despite BSoDing every hour or so, this was (and to this date) my favorite OS. I learned my way around the OS, despite not knowing what things like WinZIP or IE5 actually did.
I soon started playing online games when I was in the 5th grade, and became interested in cheating my way through the games. Video game trainers (ie memory editors) and video game bots simply astounded me because they could complete what I had been trying to do for hours on end. At age 10, I attempted to learn C/C++ in order to make a 'trainer' for MineSweeper (it simply stopped the MineSweeper timer using WriteProcessMemory.) I didn't know it back then, but I was on the verge of my largest hobby. I couldn't learn C/C++ well enough because I had the patience of a 10 yr old, however.
I started attempting to learn Java around the time I was 11 and was even more confused than I was with C/C++. Part of the reason is because the C/C++ IDE Dev-CPP was simply amazing for learning as a kid, and all of the Java IDEs were simply too complex. I also didn't understand OOP yet, which Java revolves around. I'll never, ever go back to Java for reasons I won't discuss here.
Since I was interested in cheating in video games, a offshoot of my interests lied in computer security. I soon started watching YouTube tutorials on things like DoS attacks. This soon graduated to exploits. I was watching a video on a VBulletin Denial of Service 'exploit' which could take down any forum running a specific version of VBulletin. The 'exploit' created hundreds of users on the forum per minute, thus flooding the SQL database with connections. The exploit (as were most at the time) was coded in Perl. This is where I found the first love of my life, Perl.
Since I was interested in security, I soon became interested in Linux, as Windows doesn't suffice for some security tools. I remember putting Debian on a old laptop with a 5GB HDD, and was simply astounded that there was no window manager. I didn't get very far, as I had the patience of a 12 year old!
By the time I was 13, I had created my first webpage with PHP+MySQL. It was a simple website hosted at home running XAMPP. The website was simply a photo-uploading website, which also supported user registration. It was during this time that I became more interested in topics like SQL injection and buffer overflows. MetaSploit became reliable on Windows at the time, and provided me with the best security tool I had used to date. I remember when a new exploit for SMB had been released which targeted Windows XP SP1. I was simply amazed, too much for words at what resulted. I put my brother's LAN IP in the tool and selected a reverse VNC client, and hilarity ensued. The fact that you could control someone mouse/keyboard/screen, simply by pointing this tool at a machine running vulnerable softare astounded me. I had no idea that things like this were possible.
Soon, the amount of Perl and PHP projects I had were too many to count. I soon started to realize that I was coding things that were actually useful, and not just 10 PRINT X; : GOTO 10. I attempted to learn C again, and had a much easier time that go around. I soon coded small projects which did things I didn't know were possible, like disabling Windows Task Manager via registry.
So where does the 6502 come in? Since I was interested in anything and everything computers, retro computers also fascinated me, if not more than newer computers. New computers work so fast that you can't see it doing the actual work; whereas, you can sometimes see retro computers do work, "instruction by instruction." I soon learned that the Commodore 64 was the undeniably top selling computer model of all time. I downloaded VICE and started toying around. I coded some small programs in BASIC, but they just weren't useful enough. I wanted to know how things like GEOS could run on a system with 64K and 1MHz! It was then I realized that small power means big power in the right hands. Thus, I became interested in 6502 assembly. I had coded VERY POORLY in 16-bit x86 with a small "create your own OS" guide I found on the internet using emu8086. 16-bit x86 is probably the worst assembly language to start learning with, as stuff like segments and whatnot are just.. No.
I was particularly fond of the 6502 because of the lack of instructions, which was a feature of the processor (re: price.) Division and multiplication wasn't done by the processor's die, it was done by the programmer. How do you use a 16-bit int in 8-bit assembly? How do you use an index with more than 256 bytes? How does bank switching work? I found Jim Butterfield's Machine Language for the Commodore 64 and other Commodore Computers and Jim instantly became my hero. I soon coded small routines using the PLUS/4 & C=128's monitor.
I soon graduated (or downstepped, depending on how you look at it) to using cc65 to code some programs. I was amazed that a C program could run on these machines, and I still am. The fact that you can run C code in these machines is simply mind boggling to me. Although cc65 produces some "interesting" assembly, it still works and is useful where assembly is sometimes just a bit too complicated.
For some reason, I always had problems using ANY 65xx assembler. I loved using the monitor on the machines, but monitors don't support labels or macros, and you can't save your work as easily. This was probably one of the largest challenges I faced with 65xx assembly, just getting a darn assembler to work! After trying a large number of assemblers, none of them worked, and none of them followed a syntax that I considered likable. Recently, I re-discovered cc65 and learned that ca65 was included. cl65 made compiling assembly programs SO simple, and ca65's syntax was exactly what I had been looking for all those years.
And that's how I'm here now. I'm in my Sophomore year in college, majoring in Computer Science. I am still very interested in security (I promise you I'm on the good side,) but performance is a very close second. Third is privacy in the digital age. I run a Tor exit relay (sector4) and I am a firm believer in that "Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety."
|