Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Karcrack

#851
Si, es lo que estamos hablando, trabajar con numeros/bits en vez de con cadenas... el codigo que te he puesto trabaja con bits...
#852
Cita de: Silici0 en 10 Agosto 2010, 12:44 PM
Creo que deberían banear a la gente que hiciera eso continuamente.
No creo que sea molesto hacer referencia a lo que estas respondiendo... sin duda es molesto ver 200 citas una dentro de otra...
#853
    Dim a As Integer
    Dim b As Integer
     
    a = &H2345
    b = a And &HFF
     
    MsgBox Hex$(a)
    MsgBox Hex$(b)

No se si es esto lo que pides.... Este codigo lo que hace es obtener el LoByte de un Word... es decir... si el Integer es 0xBEBA devuelve 0xBA...
#854
Cita de: Silici0 en 10 Agosto 2010, 11:19 AM
Yo creo que hacen un bien a la humanidad molestando a los que desconocen que hay un botón de responder y que no hace falta citar absolutamente a todo el mundo que respondas ;)
Creo que si que es necesario citar a quien respondes... si no puede haber confusiones :D
#855
Simplemente estuve mirando que hacian las funciones exportadas, para ver si alguna permitia ejecutar algun puntero o algo similar... primero encontre __vbaGosubReturn, pero destrozaba gran parte del stack... asi que decidi seguir buscando... y Zombie_AddRef como podras ver en el codigo de ASM hace una llamada a partir de un parametro... luego cree las estructuras para que las distancias encajasen y leyese la direccion sin problemas...
#856
Cita de: LeandroA en  9 Agosto 2010, 18:20 PM
Grosisimo Karcrack  ;-) , me gustan tus funciones.

Saludos.
Muchas gracias Leandro :)
#857
Si entiendes algo de ASM esto te lo aclarara todo respecto a las estructuras:

Zombie_AddRef@MSVBVM60:
Código (asm) [Seleccionar]

MOV     EAX, DWORD PTR SS:[ESP+4]                      ;  EAX = &Zombie_STRUCT1.cCurrent
MOV     EAX, DWORD PTR DS:[EAX+8]                      ;  EAX = Zombie_STRUCT1.ppS2
PUSH    EAX
MOV     ECX, DWORD PTR DS:[EAX]                        ;  ECX = &Zombie_STRUCT2.lNull
CALL    NEAR DWORD PTR DS:[ECX+4]                      ;  ECX + 4 = Zombie_STRUCT2.lAddr
RET     4


Saludos :)
#858
Cita de: Komodo en  9 Agosto 2010, 14:08 PM
Esta interesante pero este S1 ¿?¿?

Invoke = Zombie_AddRef(S1)

lo demás si que lo he entendido por encima.
S1 es la estructura Zombie_STRUCT1

Nota:Todas las estructuras que hay en el codigo las he creado yo
#859
 >:D >:D

Despues de debuggear durante horas el MSVBVM60.DLL descubrí una función que permitía llamar a un puntero (sin destrozar mucho el stack :D) esta se llama Zombie_AddRef y VB6 la utiliza para cargar clases e interfaces :)

Si alguien quiere mas explicación sobre lo que hace esa función y como lo he aprovechado para llamar codigo que pregunte ;)

Despues de esta breve explicacion aqui teneis el code:
http://www.cobein.com/wp/?p=567


Saludos ::)
#860
La forma mas sencilla de comprobarlo es intentandolo... >:D
Es decir que con CreateFile podrias intentar abrir el fichero con los FLAGS que quieras comprobar...

He hecho esta pequeña funcion, me encantan las funciones :P :
Código (vb) [Seleccionar]
'KERNEL32
Private Declare Function CloseHandle Lib "KERNEL32" (ByVal hObject As Long) As Long
Private Declare Function CreateFile Lib "KERNEL32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Private Const INVALID_HANDLE_VALUE As Long = (-1)
Private Const OPEN_EXISTING As Long = 3
Private Const FILE_FLAG_BACKUP_SEMANTICS As Long = &H2000000
Private Const FILE_SHARE_READ As Long = &H1
Private Const FILE_SHARE_WRITE As Long = &H2

Public Enum AccessType
   GENERIC_READ = &H80000000
   GENERIC_WRITE = &H40000000
   GENERIC_READWRITE = &HC0000000
End Enum

Public Function CheckAccess(ByVal sPath As String, ByVal dwDesiredAccess As AccessType) As Boolean
   Dim lRet        As Long
   
   lRet = CreateFile(sPath, dwDesiredAccess, FILE_SHARE_READ + FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)
   CheckAccess = (lRet <> INVALID_HANDLE_VALUE)
   Call CloseHandle(lRet)
End Function

Private Sub Form_Load()
   Debug.Print CheckAccess("C:\bit.bin", GENERIC_READWRITE), Err.LastDllError
   Debug.Print CheckAccess("F:\", GENERIC_READWRITE), Err.LastDllError
   Debug.Print CheckAccess("C:\", GENERIC_READWRITE), Err.LastDllError
   Debug.Print CheckAccess("F:\", GENERIC_WRITE), Err.LastDllError
   Debug.Print CheckAccess("F:\", GENERIC_READ), Err.LastDllError
End Sub


Funciona a la perfeccion ;D ;D ;D