[FASM] CopyMem 11-29-2016, 09:54 PM
#1
Here's an example on how you can move bytes to memory instead of using the normal WinAPI.
Code:
include 'win32ax.inc'
buf db 0x3A, 0x9C, 0x00, 0xE6, 0xB5, 0xE6, 0xE1, 0xE7, 0xFC, 0xFB, 0xF2, 0xB5,\
0xE2, 0xF4, 0xE6, 0xB5, 0xF0, 0xFB, 0xF6, 0xE7, 0xEC, 0xE5, 0xE1, 0xF0,\
0xF1, 0xB5, 0xF7, 0xF0, 0xF3, 0xFA, 0xE7, 0xF0, 0x95
buflen = $ - buf
Dst rb buflen; Give Dst the space it needs
main:
stdcall XorStr, buf, buflen, 0xfc9d9a6e
stdcall CopyMem,Dst,buf,buflen
invoke MessageBox,0,Dst,'CopyMem',MB_OK
invoke ExitProcess,0
.end main
proc CopyMem lpDest:DWORD, lpSrc:DWORD, lpLen:DWORD
mov esi, [lpSrc]
mov edi, [lpDest]
mov ecx, [lpLen]
rep movsb
ret
endp
proc XorStr Start, Size, Key
pushad
mov esi,[Start]
mov eax,[Key]
mov ecx,[Size]
@@: xor dword [esi],eax
inc esi
loop @B
popad
leave
retn
endp