http://members.home.net/w32dasm/

thats the best disassembler on the market. I have disassembled alot of things and taken the ASM out and used it in my own programs. In C++ there is a _asm scope. this method is used to make KeyGens and what not.

I have also just taken other peoples DLLs, disassembled them and rewrote them in C++, so i have thier DLLs functionality.

i love reverse engineering.

here is an example, this is something where i was just testing a function that was in a DLL to see if i nailed it right:

Code:
#include <windows.h>

char poo[1000];
void* glob = &poo[0];

void main(){
	//glob = malloc(500);

	_asm{
		mov		eax, glob
		mov		word ptr [eax + 0x00000180], 0x0000 //holds version
		mov		ecx, glob
		mov		dword ptr [ecx + 0x0000016C], 0x00000000 // tracking options
		mov		edx, glob
		mov		dword ptr [edx + 0x00000170], 0x00000000
		mov		eax, glob
		mov		dword ptr [eax + 0x00000174], 0x00000000
		mov		ecx, glob
		mov		dword ptr [ecx + 0x00000178], 0x00000000
		mov		edx, glob
		mov		dword ptr [edx + 0x0000017C], 0xFFFFFFFF //data block options
	}

	int temp = 0x0;

	_asm{ // set all the enablespys to false
		jmp		DIANE
ADDONE:
		mov		eax, temp
		add		eax, 0x00000001
		mov		temp, eax
DIANE:
		cmp		temp, 0x00000054
		jge		ANDY
		mov		ecx, temp
		mov		edx, glob
		mov		dword ptr [edx + 0x04 * ecx + 0x1C], 0x00000000
		jmp		ADDONE
	}

ANDY:
	//free(glob);
    return;
	

}