elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 08:31  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  [VB+ASM][SRC] PUTMEMx - PUTMEM1,2,4,8,... [ASM inline]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [VB+ASM][SRC] PUTMEMx - PUTMEM1,2,4,8,... [ASM inline]  (Leído 537 veces)
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
[VB+ASM][SRC] PUTMEMx - PUTMEM1,2,4,8,... [ASM inline]
« en: 9 Diciembre 2011, 01:24 »

Como prometi aqui hice codigo muy util que utiliza la tecnica :)
Agradecimientos a:
   Karcrack
   Cobein

Si no hubiera sido por ayudarme a entender como funciona no hubiera podido lograrlo :)
la funcion es un putmem x bytes, lo que hace es insertar X bytes a una posicion de memoria indicada, esta funcion que hice
es identica a las funciones:

Declare Sub PutMem1 Lib "msvbvm60" (Ptr As Any, ByVal NewVal As Byte)
Declare Sub PutMem2 Lib "msvbvm60" (Ptr As Any, ByVal NewVal As Integer)
Declare Sub PutMem4 Lib "msvbvm60" (Ptr As Any, ByVal NewVal As Long)
Declare Sub PutMem8 Lib "msvbvm60" (Ptr As Any, ByVal NewVal As Currency)

salvo que esta se pueden insertar cualquier cantidad de bytes, que es el tercer parametro el numero de bytes que uno debe
de indicar a insertar, tambien hay que tomar en cuenta como estan almacenados los bytes en la memoria eso es si es microprocesador de uno es little o big...


Código
Option Explicit
Private Declare Function CallWindowProc Lib "USER32" Alias "CallWindowProcW" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
 
Private Sub Form_Load()
   ' By RHL no quitar texto
   Dim test As String: test = "Test de XXXXXX en inline asm!"
   Dim newp As String:         newp = "PUTMEM"
 
   Dim A As Long:A = &H101010
   Dim B As Byte:B = &H20
 
   Call vASM_PUTMEMx(VarPtr(A), VarPtr(B), 1)
   MsgBox A
 
   Call vASM_PUTMEMx(StrPtr(test) + 16, StrPtr(newp), 12)
   MsgBox test
 
End Sub
 
'Declare Sub PutMemx Lib "msvbvm60" (ptr As Any, ByVal newval As Byte)
Private Sub vASM_PUTMEMx(ByVal ptr As Long, ByVal newval As Long, ByVal nB As Long)
   Dim Acode(25)   As Byte: Acode(25) = &HC3
 
   Acode(17) = &H8A: Acode(18) = &H10: Acode(19) = &H88: Acode(20) = &H17
   Acode(21) = &H40: Acode(22) = &H47: Acode(23) = &HE2: Acode(24) = &HF8
 
   Dim i           As Long
 
   '       MOV EAX,OFFSET newval
   '       MOV EDI,OFFSET ptr
   '       XOR ECX,ECX
   '       MOV ECX,nB
   'INI:   MOV DL,[EAX]
   '       MOV [EDI], DL
   '       INC EAX
   '       INC EDI
   '       LOOP INI
   
 
   Acode(0) = &HB8
   i = LongToByte(newval, Acode(), i + 1)
 
   Acode(5) = &HBF
 
   i = LongToByte(ptr, Acode(), i + 1)
   Acode(10) = &H33: Acode(11) = &HC9
 
   Acode(12) = &HB9
   i = LongToByte(nB, Acode(), i + 3)
 
   Call CallWindowProc(ByVal VarPtr(Acode(0)), 0&, 0&, 0&, 0&)
End Sub
 
'by BlackZeroX
Private Function LongToByte(ByVal lLong As Long, ByRef bReturn() As Byte, Optional i As Integer = 0) As Long
   bReturn(i) = lLong And &HFF
   bReturn(i + 1) = (lLong And &HFF00&) \ &H100
   bReturn(i + 2) = (lLong And &HFF0000) \ &H10000
   bReturn(i + 3) = (lLong And &HFF000000) \ &H1000000
   LongToByte = i + 4
End Function
' By RHL no quitar texto

en vb los caracteres estan en unicode osea dos bytes por caracteres



« Última modificación: 9 Diciembre 2011, 04:09 por RHL » En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [VB+ASM][SRC] PUTMEMx - PUTMEM1,2,4,8,... [ASM inline]
« Respuesta #1 en: 10 Diciembre 2011, 20:19 »

yo diria que es un Copymemory... en lugar de un PutMem.

Dulces Lunas!¡.


En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: [VB+ASM][SRC] PUTMEMx - PUTMEM1,2,4,8,... [ASM inline]
« Respuesta #2 en: 10 Diciembre 2011, 23:45 »

si asi es, se comporta casi igual que la copymem...
pero a mi se me vino a la idea por la funcion de vb :xD por eso le puse asi :xD
por eso no le puse alternativa aunque indirectamente si lo es :P pero bueno
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Gas Inline con Síntaxis Intel
ASM
farresito 3 2,429 Último mensaje 1 Julio 2011, 00:27
por farresito
[?] funciones inline y returns
Programación C/C++
oxydec 1 1,067 Último mensaje 8 Abril 2011, 08:45
por Akai
Usar Putmem1 con cadenas?
Programación Visual Basic
RHL 12 806 Último mensaje 18 Septiembre 2011, 02:47
por RHL
Alguien me enseña Asm inline :)
Programación Visual Basic
RHL 9 1,284 Último mensaje 20 Noviembre 2011, 09:52
por Karcrack
ASM INLINE GCC
Programación C/C++
HaX991 0 155 Último mensaje 11 Mayo 2012, 19:50
por HaX991
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines