elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Temas
Páginas: 1 2 3 4 [5] 6 7
41  Programación / Programación Visual Basic / USB arrival (Source) en: 20 Junio 2008, 00:00 am
Holas =), bueno nada nuevo, simplemente lo posteo para el que le interese y al que no bueno ya sabe puede ignorarlo categoricamente.

Que es? una clase para detectar el arrivo de nuevos dispositivos, en este caso se limita a los que tienen bus del tipo USB, la clase es un poco grande (unas 570 lineas) porque la idea es expandirla para soportar todos los tipos de mensajes procporcionados por el evento WM_DEVICECHANGE, es IDE safe y no tiene dependencias.

Testeada en:
  XP SP2
 
Con:
  -PNY Attache Flash Drive
  -Firefly External Hard Drive
  -Hagiwara UDRW  Flash Drive

Descarga:
  http://www.uploadsourcecode.com.ar/d/saSqPP36BmHgfw2LBNa4Z8tXIXypiDlF
42  Programación / Programación Visual Basic / IDE or EXE en: 17 Junio 2008, 20:04 pm
Hola, bueno estaba por ahi mirando codigos y me tope con aguna de estas funciones asi que las junte con algunas que conocia y usaba. Me gustaria que presenten otras maneras o simplemente comenten acerca de estas funciones para ver cual creen que es mejor y por que.

En mi opinion la numero 1 (IsEXE1) es la mejor de todas.

Código
  1. Option Explicit
  2.  
  3. Private Declare Function GetModuleHandle Lib "kernel32.dll" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
  4.  
  5. Private Sub Form_Load()
  6.    MsgBox IsEXE0
  7.    MsgBox IsEXE1
  8.    MsgBox IsEXE2
  9.    MsgBox IsEXE3
  10. End Sub
  11.  
  12. Private Function IsEXE0() As Boolean
  13.    On Error GoTo IDE
  14.    Debug.Print 1 / 0
  15.    IsEXE0 = True
  16. IDE:
  17. End Function
  18.  
  19. Private Function IsEXE1() As Boolean
  20.   Static bEXE As Boolean
  21.  
  22.   If Not bEXE Then
  23.      bEXE = True
  24.      Debug.Assert IsEXE1() Or True
  25.      IsEXE1 = bEXE
  26.   End If
  27.   bEXE = False
  28. End Function
  29.  
  30. Private Function IsEXE2() As Boolean
  31.    IsEXE2 = Not (App.EXEName = App.Title)
  32. End Function
  33.  
  34. Private Function IsEXE3() As Boolean
  35.    If GetModuleHandle("vba6") = 0 Then
  36.        IsEXE3 = True
  37.    End If
  38. End Function
  39.  
  40.  
43  Programación / Programación Visual Basic / Check-Summer (source + app) en: 10 Junio 2008, 21:43 pm
Holas =) estaba medio aburrido y me puse  hacer esta mini aplicacion que sirve para calcular el checksum, hash, digest o como les guste llamarlo de un archivo.

La aplicaciones muy simple de usar, soporta 4 algoritmos diferentes MD2, MD4, MD5 y SHA-1, puede comparar checksums, soporta Drag and Drop y es totalmente portatil.

Espero que les guste! =)

Download (Source + App): http://www.uploadsourcecode.com.ar/d/RZrSG6y45iuxZLZgkeIk2E3NIT2VkMDL

Filesize: 495 KB

Screenshot:

44  Programación / Programación Visual Basic / sockets e interpretacion de instrucciones (mini tuto?) en: 6 Junio 2008, 15:00 pm
Bueno la verdad soy MUY malo explicando asi que voy a tratar de hacer lo mejor posible.

Hay una duda y/o problema recurrente, como enviar e interpretar instrucciones usando winsock, voy a intentar mostrar una tecnica muy simple de hacerlo utilizando CallByName a ver si terminan las preguntas y PMs con respecto a este tema.

En un Form
Código
  1. Option Explicit
  2.  
  3. Private Const DELIMITER As String = "|" ' delimitador para separar instrucciones
  4.  
  5. Private Const inst_MSG  As String = "inst_MENSAJE"  'nombre de nustra instruccion
  6. Private Const inst_BEEP As String = "inst_BEEP"     'nombre de otra instruccion
  7.  
  8. Private Sub Form_Load()
  9.  
  10.    'esto es simplemente para imitar el arrivo de datos
  11.    TestDataArival inst_MSG & DELIMITER & "Hello"
  12.    TestDataArival inst_BEEP
  13.    TestDataArival inst_MSG & DELIMITER & "Bye Bye"
  14.  
  15. End Sub
  16.  
  17. 'sData seria la variable con los datos que llegaron del socket
  18. Private Sub TestDataArival(sData As String)
  19.    Dim cInstInt    As New cInstructionInterpreter
  20.  
  21.    'Vemos si la funcion tiene o no parametros
  22.    If UBound(Split(sData, DELIMITER)) > 0 Then
  23.        'llamamos a la funcion con parametros
  24.        CallByName cInstInt, Split(sData, DELIMITER)(0), VbMethod, sData
  25.    Else
  26.        'llamamos una funcion sin parametros
  27.        CallByName cInstInt, Split(sData, DELIMITER)(0), VbMethod
  28.    End If
  29. End Sub
  30.  

bueno en el primer code lo que vemos es muy simple tenemos 3 llamadas a TestDataArival pasandole unos parametros que en este caso serian nustras instrucciones  o comandos a ejecutar. la estructura del mensaje es simple [instruccion/delimitador/dato/.../delimitador/dato] en este caso los declare como constantes para  evitar errores y facilitar su modificacion (nada misterioso hasta aca)

en la funcion TestDataArival, lo primero que vemos es [ Dim cInstInt    As New cInstructionInterpreter] simplemente creamos una instancia de nuestra clase, luego un simple if que va a llamar a CallByName de 2 maneras diferentes dependiendo de si tenemos o no datos para pasarle a la instruccion

En una clase (yo la llame cInstructionInterpreter)
Código
  1. Option Explicit
  2.  
  3. Private Const DELIMITER As String = "|"
  4.  
  5. Public Sub inst_MENSAJE(ByVal sData As String)
  6.    Dim svData() As String
  7.  
  8.    If SplitData(sData, 1, svData) Then
  9.        MsgBox svData(1)
  10.    End If
  11.  
  12. End Sub
  13.  
  14. Public Sub inst_BEEP()
  15.    Call Beep
  16. End Sub
  17.  
  18. 'funcion generica para dividir y validar los datos
  19. Private Function SplitData( _
  20.    ByVal sData As String, _
  21.    ByVal lExpectedParams As Long, _
  22.    ByRef svData() As String) As Boolean
  23.  
  24.    svData = Split(sData, DELIMITER)
  25.  
  26.    If UBound(svData) >= lExpectedParams Then
  27.        SplitData = True
  28.    End If
  29.  
  30. End Function
  31.  

Bueno la clase en si tampoco tiene mucho, 2 funciones declaradas como publicas que son nustros comandos, los nombres de estas funciones tienen que coincidir con los que utilizamos para llamarlar  y una tercera que es privada simplemente para dividir y validar los datos.

bueno para los que no tienen idea de como usar CallByName aca les dejo unos links

http://msdn.microsoft.com/en-us/library/chsc1tx6(VS.80).aspx

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/153-callbyname.htm
 
Si alguno quiere agregar algo para hacer esto mas claro que lo haga sin problemas se que puede ser un poco confusa mi explicacion.

Espero que sea util.
45  Programación / Programación Visual Basic / Run EXE from memory (Source) en: 1 Junio 2008, 04:54 am
Holas =), bueno viendo el post que dejo SERBice me diron ganas de entender bien como funcionaba el code etc, asi que decidi reescribirlo a mi gusto y agregarle unas cositas. Que es esto? un modulo para ejecutar un PE desde un byte array, calculo que puede ser util para un joiner o packager.

Que ventajas tiene, bueno la primera y principal que es poder correr un exe desde un byte array esto es bueno si se esta corriendo el programa desde un CD por ejemplo, otra cosa buena es que podemos "imitar" procesos, al usar un host para lanzar nuestra alpicacion esta va a aparecer como el host en la lista de procesos del administrador de tareas.

Bueno usen la imaginacion!

Descarga: http://www.uploadsourcecode.com.ar/d/hVAPGKNaFO2zRW9QmmDt9SEttwqKNHu8
46  Programación / Programación Visual Basic / Protect Apps (Source) en: 28 Mayo 2008, 15:16 pm
Bueno, estaba aburrido y se me ocurrio hacer este code, es para proteger las aplicaciones, no es infalible pero seguramente va a molestar bastante a un debugger.

Espero que les guste y aprendan algo del code =)

Descarga
http://www.uploadsourcecode.com.ar/d/I0LDiGZnKy25FwuwoMJm408wEN1SIkkT
47  Programación / Programación Visual Basic / Drive Space Format (snippet) en: 28 Mayo 2008, 13:14 pm
Aca les dejo un snippet que muestra como obtener el espacio libre, total y disponible de una unidad y formatearlo.

Código
  1. Option Explicit
  2.  
  3. Private Declare Function SHGetDiskFreeSpace Lib "shell32" Alias "SHGetDiskFreeSpaceA" (ByVal pszVolume As String, pqwFreeCaller As Currency, pqwTot As Currency, pqwFree As Currency) As Long
  4. Private Declare Function StrFormatByteSize64A Lib "SHLWAPI.DLL" (ByVal qdw As Currency, ByVal pszBuf As String, ByVal uiBufSize As Long) As Long
  5. Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
  6.  
  7. Private Sub Form_Load()
  8.    Dim cFreeCaller As Currency
  9.    Dim cTotal      As Currency
  10.    Dim cFreeTotal  As Currency
  11.    Dim cFormat     As Currency
  12.    Dim sBuff       As String
  13.  
  14.    If Not SHGetDiskFreeSpace( _
  15.       Environ$("HOMEDRIVE"), _
  16.       cFreeCaller, _
  17.       cTotal, _
  18.       cFreeTotal) = 0 Then
  19.  
  20.        Debug.Print "Drive: " & Environ$("HOMEDRIVE")
  21.        cFormat = cFreeTotal:   GoSub Format: Debug.Print "Total Free Space: " & sBuff
  22.        cFormat = cFreeCaller:  GoSub Format: Debug.Print "Free Caller: " & sBuff
  23.        cFormat = cTotal:       GoSub Format: Debug.Print "Total Space: " & sBuff
  24.  
  25.    End If
  26.  
  27.    Exit Sub
  28. Format:
  29.    sBuff = Space(32)
  30.    StrFormatByteSize64A cFormat, sBuff, 32
  31.    sBuff = Left(sBuff, lstrlen(sBuff))
  32.    Return
  33. End Sub
  34.  
48  Programación / Programación Visual Basic / Privilegios en Vista en: 27 Mayo 2008, 10:06 am
Abro un nuevo tema asi todos se enteran de que esta esto.

Aca les dejo un link con infoemacion y tres estructuras para crear manifests para Vista y obtener distintos privilegios.

Link con informacion que deberian leer
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=463884&SiteID=1

Estructura de 3 manifest para Vista
Código:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity
      name="App Name"
      processorArchitecture="x86"
      version="1.0.0.0"
      type="win32"/>
   <description>Application description here</description>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
         />
      </dependentAssembly>
   </dependency>
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges>
            <requestedExecutionLevel
               level="asInvoker"
               uiAccess="False"/>
         </requestedPrivileges>
      </security>
   </trustInfo>
</assembly>



<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity
      name="App Name"
      processorArchitecture="x86"
      version="1.0.0.0"
      type="win32"/>
   <description>Application description here</description>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
         />
      </dependentAssembly>
   </dependency>
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges>
            <requestedExecutionLevel
               level="highestAvailable"
               uiAccess="False"/>
         </requestedPrivileges>
      </security>
   </trustInfo>
</assembly>


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity
      name="App Name"
      processorArchitecture="x86"
      version="1.0.0.0"
      type="win32"/>
   <description>Application description here</description>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
         />
      </dependentAssembly>
   </dependency>
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges>
            <requestedExecutionLevel
               level="requireAdministrator"
               uiAccess="False"/>
         </requestedPrivileges>
      </security>
   </trustInfo>
</assembly>
49  Programación / Programación Visual Basic / 2GB> Files (source) en: 27 Mayo 2008, 08:56 am
Aca les dejo dos funciones para trabajar con archivos de tamaño superior a los 2GB.

Código
  1. Private Const Bit31                         As Currency = 2147483647@
  2. Private Const Bit32                         As Currency = 4294967295@
  3.  
  4. Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
  5. Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
  6.  
  7. Private Function GetFileSizeEx(ByVal hFile As Long) As Currency
  8.    Dim lLow    As Long
  9.    Dim lHigh   As Long
  10.    lLow = GetFileSize(hFile, lHigh)
  11.    Call ToLargeInt(GetFileSizeEx, lLow, lHigh)
  12. End Function
  13.  
  14. Private Function SetFilePointerEx(ByVal hFile As Long, ByVal lDistanceToMove As Currency, ByVal dwMoveMethod As Long) As Currency
  15.    Dim lLow    As Long
  16.    Dim lHigh   As Long
  17.  
  18.    Call FromLargeInt(lDistanceToMove, lLow, lHigh)
  19.    lLow = SetFilePointer(hFile, lLow, lHigh, dwMoveMethod)
  20.    Call ToLargeInt(SetFilePointerEx, lLow, lHigh)
  21. End Function
  22.  
  23. Private Sub FromLargeInt(ByVal cLargeInt As Currency, ByRef lLow As Long, ByRef lHigh As Long)
  24.    Do Until cLargeInt < Bit32
  25.        lHigh = lHigh + 1
  26.        cLargeInt = cLargeInt - Bit32
  27.    Loop
  28.    If cLargeInt > Bit31 Then
  29.        lLow = -CLng(Bit32 - (cLargeInt - 1))
  30.    Else
  31.        lLow = CLng(cLargeInt)
  32.    End If
  33. End Sub
  34.  
  35. Private Sub ToLargeInt(ByRef cLargeInt As Currency, ByVal lLow As Long, ByVal lHigh As Long)
  36.    cLargeInt = Bit32 * lHigh
  37.    If lLow < 0 Then
  38.        cLargeInt = cLargeInt + (Bit32 + (lLow + 1))
  39.    Else
  40.        cLargeInt = cLargeInt + lLow
  41.    End If
  42. End Sub
  43.  
  44.  
50  Programación / Programación Visual Basic / Tiny Timer Class (Source) en: 23 Mayo 2008, 14:47 pm
Holi Holas, nada nuevo bajo el sol =), aca les dejo una mini clase (la mas chica del mercado creo :p ) que reemplaza a un timer, yo usualmente utilizo una en mis proyectos que es bastante grande, hasta diria un poco desmedida para un simple timer asi que en un momento de idle decidi hacer esta que considero es mucho mas razonable.

La clase tiene 101 lineas de code, self callback y es IDE safe, una aclaracion para los que les gusta usar el STOP (cosa totalmente desacosejable), si lo hacen la clase no va a destruir el timer y en consecuencia van a tener comportamientos erraticos... llamese varios timers pulsando el mismo evento. Nada tragico puesto que no va a crashear el IDE pero se los advierto simplemente.

Descarga: http://www.uploadsourcecode.com.ar/d/QuQTw0n1elsDABYCzw9tutY3MrrCY8zr

Se puede reducir un poco mas... digo esto simplemente para evitar comentarios de gente muy sabia, pero asi es mas que suficiente para mi.
Páginas: 1 2 3 4 [5] 6 7
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines