Yo hice una tool parecida pero que soloi transforma a hexadecimal un string
dejo el codigo
format pe console
entry start
include 'win32ax.inc'
.code
start:
invoke printf,Logo
invoke printf,"Ingrese la string"
invoke printf,n
invoke scanf,"%s",dBuffer
stdcall StringToHex ,dBuffer ,<invoke lstrlen,dBuffer >,dBuffer2
invoke printf,"La string en hexadecimal es:"
invoke printf,n
invoke printf,"0x%s",dBuffer2
invoke system,"pause>>NULL"
invoke ExitProcess,0
;Descripción: Convierte un dato a hexadecimal
; by YST
proc StringToHex,cPuntero,cCantidad,cBuffer
pushad
mov esi,[cPuntero]
mov edi,[cBuffer]
.bucle:
cmp [cCantidad],0
je .salir
xor edx,edx
movzx eax,byte[esi]
mov ebx,16
div ebx
mov bl, byte[numeros+eax]
mov byte[edi],bl
mov bl, byte[numeros+edx]
mov byte[edi+1],bl
add edi,2
inc esi
dec [cCantidad]
jmp .bucle
.salir:
popad
ret
numeros db '0123456789ABCDEF',0
endp
.data
Logo db ' ===================================',13,10 ; LOGO PRINCIPAL
db ' = StringToHex by YST =',13,10
db ' ===================================',13,10,13,10,13,10,0
dBuffer2 rb MAX_PATH*2
dBuffer rb MAX_PATH
n db 13,10,0
section '.idata' import data readable writeable
library kernel32,'kernel32.dll',msvcrt,'msvcrt.dll'
include 'api/kernel32.inc'
import msvcrt,printf,"printf",system,"system",scanf,'scanf'
section '.reloc' fixups data discardable