tags:

views:

2126

answers:

6

The other day I came across a site by the name http://securityxploded.com/enumheaps.php. On this site the author was able to understand and analyze the Windows assembly code generated. Which book can I follow to grab the knowledge of understanding Windows assembly code?

A: 

Assembly code is CPU specific, not OS specifc.

John Nolan
This is true, but irrelevant. Windows only runs on Intel platform. Windows assembly code has very distinct characteristics, and there are people who can read it. Felix Kasza would be one of them. I don't think he read about about it, though.
cdonner
Sorry for the typos. It's this EEE keyboard ...
cdonner
Waah! a downvote. I'm fairly ignorant on the subject so thanks for the comments.
John Nolan
+4  A: 

There are lots of books available to learn x86 assembly. A good, but perhaps a tad outdated one is called Art of Assembly Language and is available free online.

Of course as others have pointed out, assembly language is specific to the processor rather than the operating system, but you clearly intend to learn x86 assembly.

Dan Olson
Outdated? How much has X86 assembly language changed?
Jim Anderson
Quite a bit since the 286/386 days when the book was first written. I haven't kept tabs on how up to date it's been kept.
Dan Olson
+4  A: 

Windows is going to be running on an Intel processor, so it's going to be x86 assembly language. As someone who has written for several processors at assembly level I'd have to suggest that you'd need a really good reason to need to do so in today's world.

If you are merely interested then I'd just surf the web for x86 assembly language information and pick up what you can. If you have a definite need to learn x86 assembly for work or a project then I'd probably start with the Intel Programmers References

Lazarus
X86, X64, or Itanium. The latter one is _really_ different.
MSalters
+1  A: 

Jeff Duntmann's "Assembly Step by Step" is easy to follow.

Jim Anderson
+7  A: 

A great introduction to x86 assembly language that is still relevant is the two part series by Matt Pietrek in the old Microsoft Systems Journal magazine:

dpp
yes, this is the kind of article i was looking for. just jump start!!
coolcake
+1  A: 

Iczelion's tutorials are a good place to start, even if a bit old now:

http://win32assembly.online.fr/

You may also want to have a look at the following:

http://www.asmcommunity.net/

http://en.wikibooks.org/wiki/X86_Assembly

Also, as pointed out by Lazarus, Intel's documentation is very useful.

If you want to get a feel for it, it may be easier to start by playing with ASM blocks in a higher level language, - one used to be able to do that in e.g. MS C++. Also the built-in assembler (BASM) of Codegear's Delphi if pretty powerful (Delphi 2009 supports up to SSE4.2 instruction sets). This frees you from having to write complete programs in assembly (that is, e.g. MASM, - ML.exe [or ML64.exe] - nowadays available with Microsoft's driver development kit)

PhiS