Statistics

Members: 1925
News: 291
Web Links: 1
Visitors: 3542844

Who's Online

We have 1 guest online
Damn Vulnerable LinuxDamn Vulnerable Linux (DVL) is a Linux-based (modified Damn Small Linux) tool for IT-Security & IT-Anti- Security and Attack & Defense. [CLICK HERE FOR MORE INFOS! ]

Featured Conference Video

T16-Recon2006-Joe_Stewart-OllyBonE.gif OllyBone - Semi-Automatic Unpacking on IA-32. View the conference video here!
Home arrow Articles - Programming arrow Assembly Programming Journalarrow Issue 1 (1998-2001)
Issue 1 (1998-2001)

::/ ::::::.
:/___:::::::.
/| ::::::::.
:| _/:::::::::.
:| _| ::::::::::.

:::_____:::::::::::..............................................INTRODUCTION
by mammon_

Welcome to the first issue of Assembly Programming Journal. Assembly language has become of renewed interest to a lot of programmers, in what must be a backlash to the surge of poor-quality RAD-developed programs (from Delphi, VB, etc) released as free/shareware over the past few years. Assembly language code is tight, fast, and often well-coded -- you tend to find fewer inexperienced coders writing in assembly language than you do writing in, say, Visual Basic.

The selection of articles is somewhat eclectic and should demonstrate the focus of this magazine: i.e., it targets the assembly-language programming community, not any particular type of coding such as Win32, virus, or demo programmimg. As the magazine is newly born and much of its purpose may seem unclear, I will devote the rest of this column to the most common questions I have received via email regarding the mag.

How often will an issue be released?


Barring hazard, an issue will be released every other month.

What types of articles will be accepted?


Anything to do with assembly language. Obviously repeats of previously presented material are not necessary unless they enhance or clarify the earlier material. The focus will be on Intel x86 instruction sets; however coding for other processors is acceptable (though out of courtesy it would be good point to an x86 emulator for the processor you write on).

Personally I am looking for articles on the areas of asembly language that interest me: code optimization, demo/graphics programming, virus coding, unix and other-OS asm coding, and OS-internals.

Demos (with source) and quality ASCII art (for issue covers, column logos, etc) are especially welcome.

For what level of coding experience is the mag intended?


The magazine is intended to appeal to asm coders of all levels. Each issue will contain mostly beginner and intermediate level code/techniques, as these will by nature be of the greatest demand; however one of the goals of APJ is to include enough advanced material to make the magazine appeal to "pros" as well.

How will the mag be distributed?


Assembly Programming Journal has its own web page at http://asmjournal.freeservers.com">http://asmjournal.freeservers.com; which will contain the current issue and an archive of previous issues. The page also contains a guestbook and a disucssion board for article writers and readers.

An email subscription may be obtained by sending an email to asmjournal@mailcity.com">asmjournal@mailcity.com with the subject "SUBSCRIBE"; starting with the next issue, Assembly Programming Journal will be emailed to the address you sent the mail from.

Wrap-up


That's the bulk of the "faq". Enjoy the mag!

Win32 ASM: The Basics
Win32 ASM: The Basics

MASM 6.1x comes with two essential tools: ml.exe and link.exe. ml.exe is the assembler. It takes in the assembly source code (.asm) and produces an object file (.obj) . An object file is an intermediate file between the source code and the executable file. It needs some address fixups which are the services provided by link.exe. Link.exe makes an object file into an executable file by several means such as adding the codes from other modules to the object files or providing the address f...
Read More >>


VGA Programming in Mode 13h
VGA Programming in Mode 13h

This article will describe how to program VGA graphics Mode 13h using assembly language. Mode 13h is the 320x200x256 graphics mode, and is fast and very convenient from a programmer's perspective. The video buffer begins at address A000:0000 and ends at address A000:F9FF. This means the buffer is 64000 bytes long and that each pixel in mode 13h is represented by one byte.


Read More >>

SMC Techniques: The Basics
SMC Techniques: The Basics

One of the benefits of coding in assembly language is that you have the option to be as tricky as you like: the binary gymnastics of viral code demonstrate this above all else. One of the viral "tricks" that has made its way into standard protection schemes is SMC: self-modifying code.

In this article I will not be discussing polymorphic viruses or mutation engines; I will not go into any specific software protection scheme, or cover any anti-debugger/anti-disassembler tric...
Read More >>


Going Ring0 in Windows 9x
Going Ring0 in Windows 9x

This article gives a short overview over two ways to go Ring0 in Windows 9x in an undocumented way, exploiting the fact that none of the important system tables in Win9x are on pages which are protected from low-privilege access.

A basic knowledge of Protected Mode and OS Internals are required, refer to your Assembly Book for that :-) The techniques presented here are in no way a good/clean way to get to a higher privilege level, but since they require only a minimal coding effort, ...
Read More >>


MessageBox Display
MessageBox Display

We will create a fully functional Windows program that displays a message box saying "Win32 assembly is great!".

Windows prepares a wealth of resources for use by Windows programs. Central to this is the Windows API (Application Programming Interface). Windows API is a huge collection of very useful functions that resides in Windows itself, ready to be used by any Windows programs.


Read More >>

x86 ASM Programming for Linux
x86 ASM Programming for Linux

Essentially this article is an excuse to combine two of my favorite coding interests: the Linux operating system and assembly language programming. Both of these need (or should need) no introduction; like Win32 assembly, Linux assembly runs in 32-bit protected mode...however it has the distinct advantage of allowing you to call the C standard library functions as well as any of the usual Linux "shared" library functions. I have begun with a brief introduction on compiling asse...
Read More >>


The _itoa, _ltoa and _ultoa functions
The _itoa, _ltoa and _ultoa functions

ATTENTION I:
This is based on Borland's C++ 4.02. Whenever possible I've checked it with any other library / program containing the specific functions, but differences may exist between this and your version of C. Also this is strictly 32-bit code, Windows compiler. No DOS or UNIX.]

ATTENTION II:
Size comparisons are extremely easy to do. Speed comparison's aren't. The differences in speed I give are based on RDTSC timings, but they DON'T take into account extr...
Read More >>


Write an 11-byte program that displays its command line.
Write an 11-byte program that displays its command line.
Before saying that these programs won't work, try them. Some of them work only fter you've run them twice. Anyway, they' ve been tested both under Windows and plain DOS and they work. Believe it or not, these are the first programs 've ever written in DOS, so I just tried various ideas until some worked, even hought I thought they wouldn't... :) The command line in DOS is found in the PSP (Program Segment Prefix) which in COM files occupies the first 100h bytes in the seg...
Read More >>