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


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 75
71  Programación / .NET (C#, VB.NET, ASP) / [Exclusivo El Hacker] [Tutorial] [SOURCE] Hooks - Cheat Menu Internal - Imgui - C#/VB en: 23 Junio 2023, 18:48 pm
Hola a todos, Alfin logre crear un menu completamente interno, USANDO IMGUI.

Antes que nada quiero decir , que esto no hubiera sido posible sin toda la ayuda que me ah Proporcionado BloodSharp en este tema y la guia que me dio Elektro durante años. Agradecido con ellos y este foro donde me inicie en este mundo.




Para llegar a este punto, ha sido un camino dificil, me encontre con limitacion del lenguaje .NET, como la incapacidad al no ser nativo , manejar ganchos y punteros. muchas veces Bloodsharp me insistion en dejar .Net para esto y pasarme c++.  pero yo mero terco, siempre lo intentaba sin exito alguno. :xD

Recuerdo que lo primero que intentaba era superponer Formularios (Externo) y de tanto intentar logre aprender muchas cosas , hasta hice un tutorial.

Luego intente hacer un menu interno, y lo logre de manera poco ortodoxa usando una api hecha en c++ , que hacia todo el trabajo por mi.

Elektro me dijo que con SharpDx se lograba en este post y Bloodsharp indico lo que tenia que hacer (Hookear)



Despues de muchos años... Finalmente entendi a que se referian y hoy vengo a mostrarles.

Empezaremos , que es Hookear (Gancho)?

"Hookear" es un término utilizado en el ámbito de la programación para referirse a la técnica de interceptar y modificar el comportamiento de una función o método existente en un programa. También se conoce como "interceptar" o "enganchar".

Basicamente cuando se realiza un hook en una función, se inserta código personalizado antes, después o en lugar del código original de la función. Esto permite a los desarrolladores modificar o extender el comportamiento de la función sin tener que modificar el código fuente original del programa.

Esto es realmente poderoso, Podemos enganchar cualquier funcion exportada, he aqui un ejemplo https://easyhook.github.io/tutorials/createlocalhook.html , Engancha a la WinAPI MessageBeep , por lo tanto cuando se llame a esta funcion, se desviara a tu codigo y puedes hacer varias cosas, por ejemplo silenciarlo (bloqueala), sustituirla por otro sonido (bloquea y reproduce otro sonido) , o simplemente notifica. Ven lo genial de esto ?

En .NET  hay varias formas de hacerlo, Usando EASYHOOK o MINHOOK , incluso hay codigos de ejemplo : https://stackoverflow.com/questions/51913872/c-sharp-calling-a-function-from-its-memory-address



Hablemos un poco sobre D3D

Se acuerdan que en la Escuela nos enseñaron que una linea se compone de puros puntos no? Los videos y Gif no son diferentes, se componen de images, a cada imagen le llamaremos Frame o Cuadro. , estos Frames se muestra seguido uno tras de otro formando movimiento.


Los FPS (Frames Per Second, o Fotogramas por Segundo) son una medida de la fluidez con la que se muestran los gráficos en un juego o aplicación. Representan la cantidad de cuadros o imágenes que se muestran por segundo. Un FPS más alto indica una mayor cantidad de cuadros generados por segundo, lo que generalmente se percibe como una animación más fluida y una experiencia de juego más suave.


Por lo general, Un juego usa un motor y ese motor usa una API gráfica para interactuar con la tarjeta gráfica y renderizar gráficos en aplicaciones y juegos. DirectX, OpenGL y Vulkan son las mas populares.

Ahora tomaremos el Ejemplo de HALO CE un juego shooter en primera persona... Este juego usa DirectX9  debes conocer como funciona para saber que enganchar. pero como no somos programadores de graficos, entonces basta con saber lo basico.

DirectX9 -> d3d9 tienes varias funciones Pero nos centraremos en 3 especificamente.

EndScene : La función EndScene se utiliza para finalizar el cuadro de renderizado actual y preparar el back buffer para su presentación. Se encarga de realizar tareas de finalización y limpieza antes de llamar a Present para mostrar el contenido en pantalla. Esto puede incluir la ejecución de operaciones de post-procesamiento, como aplicar efectos de imagen, manipular texturas, etc. EndScene se llama típicamente después de haber terminado de renderizar todos los elementos en el back buffer y antes de llamar a Present para mostrar el resultado final.


Present : Como se mencionó anteriormente, la función Present se utiliza para presentar el contenido renderizado en la ventana o dispositivo de visualización. Present toma el back buffer, que ha sido preparado por EndScene, y lo muestra en la pantalla.

Reset : La función Reset se utiliza para restablecer o reiniciar el estado de un dispositivo gráfico en Direct3D9. Esto incluye la restauración de los recursos gráficos, los parámetros de presentación y otros estados relacionados con el dispositivo. La llamada a Reset se utiliza cuando hay cambios en el tamaño de la ventana, cambios en la configuración del adaptador gráfico u otros eventos que requieran una reconfiguración del dispositivo gráfico.


En resumen, EndScene se utiliza para realizar tareas finales de procesamiento y preparar el contenido renderizado para su presentación, mientras que Present se encarga de mostrar en pantalla el contenido renderizado finalizado. Ambas funciones son importantes en el proceso de renderizado de Direct3D9 y se utilizan en secuencia para lograr una visualización adecuada en la ventana o dispositivo de visualización y Reset se utiliza para restablecer y reconfigurar el dispositivo gráfico.

La VTable (Tabla Virtual) es una tabla de punteros a funciones que se utiliza en la programación orientada a objetos (C++ , C# o VB). Sirve para determinar qué método específico se debe llamar cuando se invoca un método virtual en un objeto.

Cada clase con métodos virtuales tiene su propia VTable, y cada objeto tiene un puntero a su VTable correspondiente. La VTable permite que los métodos virtuales se comporten de manera diferente en función del tipo real del objeto en tiempo de ejecución. En resumen, la VTable es una forma de organizar y gestionar los métodos virtuales para que se ejecuten correctamente según el tipo de objeto en uso.



Enganchar y Superponer

El secreto de dibujar una superposición en cualquier proceso es enganchar la función "Frame End" de la biblioteca gráfica. En el caso de OpenGL esta función se llama wglSwapBuffers, en el caso de DirectX es d3dEndScene. Simplemente dejamos que el Juego dibuje todo su contenido y cuando llama a la función para finalizar el cuadro actual, dibujamos nuestra superposición en la parte superior antes de llamar a la función de cuadro final real.

Sabiendo la Teoria, entonces ya tenemos una idea de lo que tenemos que hacer no ?

Si revisamos documentacion en c++ , nos damos cuenta que al hookear EndScene , pasa un parametro Device, que es el dispositivo D3D

Código
  1. HRESULT WINAPI D3D9Hook::newEndScene(LPDIRECT3DDEVICE9 pDevice)

Para enganchar esta funcion hay un detalle, Tanto la función EndScene y Present no está disponible directamente en la exportación de d3d9.dll, por lo que no sera tan simple como llamar GetProcAddress, En su lugar, necesitarás obtener un puntero a la interfaz de Direct3D9 y luego acceder a la función EndScene o Present a través de su tabla de métodos (vtable).

Aqui Entra en juego SharpDX , Con el manejaremos de forma facil y rapidas las interfaces y metodos del d3d9 al engancharlo.

Como dijimos antes al enganchar EndScene o Present, y lo redireccionamos a nuestra funcion personalizada , hay un parametro Device, ese parametro lo convetiremos a algo que podamos manejar en nuestro lenguaje y para ello usamos SharpDX.

Código
  1.  public  int EndSceneHook(IntPtr device) //Nuestra funcion Custom al enganchar EndScene
  2.        {
  3.            //Convertimos el Device en un objeto que podamos manejar
  4.            Device dev = (Device)device;
  5.            dev.EndScene(); // LLamamos EndScene para que todo prosiga Como la funcion original y no romper el juego
  6.            return SharpDX.Result.Ok.Code; // Retornamos un int, ya que EndScene lo pide
  7.         }
  8.  

Bien ya con esto dentro de la funcion EndScene, puedes dibujar el en dispositivo grafico del juego, Dibujar Texto es solo un ejemplo de lo que puedes hacer.



Imgui

Ahora aqui viene la parte importante, Como hacemos nuestro menu interno para nuestra herramienta o cheat? , aqui entra en juego imgui, cabe destacar que no es la unica que nos puede servir, tambien esta Nuklear y otras mas.

ImGui (abreviatura de "Immediate Mode GUI") es una biblioteca ligera de interfaz gráfica de usuario (GUI) que se utiliza comúnmente en aplicaciones y juegos. Proporciona herramientas y funciones  para crear interfaces de usuario de forma rápida y sencilla.

Existen cientos de tutoriales para implementar imgui en un Gancho D3d u OpenGL. pero me enfocare en .NET

En .net Tenemos : ImGui.NET que es un Wrapper para cimgui (que a su vez es una api de c para imgui) , pero no es tan simple , ya que en cimgui no viene por defecto las implementaciones de imgui   entonces tendras que hacer :

Los siguientes Pasos son creditos de @Jacobmyers22 , perteneciente a este post.

1) Descargar el codigo fuente de cimgui y colocarle la implementacion que deseas usar, en el ejemplo anterior usamos d3d9 por lo que hay que buscar la implementacion para DX9 ver aqui y aqui

2) Imgui.NET que es un wrapper de cimgui tampoco tiene la implementacion, ya que cimgui tampoco la tiene, entonces ya que la agregaste, debes agregarlo al codigo fuente de imgui.NET :https://pastebin.com/RqNw5yXi y https://pastebin.com/2Dn7Eyp1 .

3) Ya teniendo las dos librerias anteriores con la implementacion que necesitas, estarias listo solo queda usar imgui como lo usarias en c++, no dejare codigo, por que mas abajo dejare el proyecto completo, con todo lo que hemos hablado.



Source and Testing

Dejo aqui el codigo fuente y algunos videos.

Github : https://github.com/DestroyerDarkNess/DX9ImHook








Gracias por vuestro tiempo, Todo este tutorial esta hecho en base a lo que yo se, por lo que puede tener errores. cualquier cosa comenten que les parece.

Este tutorial es bastante directo, considero que hay que hacer un tutoral solo acerca de Hooks (Ganchos) . posiblemente lo haga mas adelante, pero de todos modos he dejado claro conceptos que debes conocer y como lograr el objetivo.

 ;D Comentar que les ah parecido, el tutorial, entendieron? o hay cosas que cambiar?? , saludos.  ;)





72  Foros Generales / Foro Libre / Re: ¡20 años ya! en: 27 Mayo 2023, 23:41 pm
Felicidades @Songoku , yo soy relativamente nuevo en comparacion a ustedes, llegue aqui por azar del destino, y para bien, he aprendido muchas cosas. Esta fue la comunidad que me inicio en el mundo de la informatica. Gracias a todos!!  ;D

PD: En aproximadamente 13 dias cumplire 6 años en el foro.  :xD
73  Programación / Scripting / Re: falta api-ms-win-crt-runtime-l1-1-0.dll en: 15 Abril 2023, 19:11 pm

Este error suele deberse a que falta Visual C++ Redistributable

Descarga e Installa esto : https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/

74  Informática / Software / Re: Mi Primera App para Android : Wallpaper HQ en: 12 Abril 2023, 01:55 am

Coloque una captura de la aplicacion, aunque les recomiendo que la prueben, solo pesa 2mb.



Hola, en Flathub y en la tienda de elementary OS existe una aplicación llamada Fondo, la cuál permite descargar imágenes para fondo de pantalla... No sé cuál backend estás usando, pero Fondo utiliza para las imágenes la API de unsplash, las cuales son espectaculares en mi opinión, quizás tener ese backend adicional te sirva mucho... :silbar:


B#

No conocia unsplash, pero esta bueno, lo implementare. ahorita ando usando mi propia api que le hice a otro sitio de imagenes (usando scraping... ya me conocen. XD)
75  Informática / Software / Mi Primera App para Android : Wallpaper HQ en: 12 Abril 2023, 00:52 am
Hola a todos, He creado mi Primera aplicacion para Android y la publicado... me ayudaria mucho sus opiniones.

Pesa solo 2mb.   ::)

Es la primera version, y es mi primera app. osea puede tener bugs... me ayudaria que me ayudasen a probarla. por eso la comparto.

Siempre he programado en VB.NET, C# y algo de C++ (Con la ayuda del compañero Bloodsharp) , para windows, pero ahora estoy probando nuevos horizontes.



Nombre: Wallpaper HQ (Wallpaper High Quality) lo se, no soy bueno eliguiendo nombres.

Peso : 2mb

Descripcion: Descarga fondos de pantalla para tu telefono, tablet, o cualquier sistema con android, por que las imagenes son en alta resolucion , hasta 10.000x10.000 (no estoy exagerando, hasta con una TV con AndroidTV)

Se acuerdan de mi programa, Xylateware? bueno basicamente esta app es un port para android de mi aplicacion.


Descarga: https://play.google.com/store/apps/details?id=com.holydesing.software.wallpaperhq

Preview :





Porfavor pruebenla y me cuentan, me ayudarian bastante .  ;)





76  Foros Generales / Foro Libre / Re: Conflicto Ucrania-Rusia,EEUU, OTAN, Europa. (Todas las noticias relacionadas irán aquí) en: 12 Abril 2023, 00:31 am
La ONU advierte de que los "riesgos nucleares son alarmantemente altos"






La ONU advirtió este lunes de que en estos momentos los "riesgos nucleares son alarmantemente altos" y pidió a todos los países evitar cualquier acción que pueda llevar a un error de cálculo o a una escalada de la tensión. La organización respondió así a preguntas sobre el acuerdo anunciado este sábado por el presidente ruso, Vladímir Putin, para el despliegue de armas nucleares tácticas en Bielorrusia, algo que ha sido muy criticado por Occidente.

"Obviamente estamos preocupados por el estado general de las tensiones sobre armas nucleares que hemos visto recientemente", dijo el portavoz Stéphane Dujarric, que recordó que todos los Estados -tanto las potencias atómicas como el resto- deben cumplir con sus obligaciones bajo el Tratado de No Proliferación Nuclear.






Proximamente.... Explosión nuclear en Ucrania .... Ambos bandos se culpan....  :-X

77  Programación / .NET (C#, VB.NET, ASP) / [Source] Counter-Strike 1.6 Mini-Cheat en: 14 Marzo 2023, 19:02 pm
Hola, Se me ocurrio hacer un Overlay utilizando el mismo metodo que usan los 'Wallpapers Engines' en windows . a su vez use CS 1.6 como base para las pruebas .

Como resultado hice este mini-cheat.

Codigo Fuente:   https://github.com/DestroyerDarkNess/CS16_MinHook

Descarga: https://www.mediafire.com/file/4pbedzxdx4y754p/CS16_MinHook.zip/file

78  Programación / Scripting / [APORTE] Interoperabilidad entre Windows Script Host y .NET en: 12 Febrero 2023, 01:04 am
Hola, vengo con un proyecto algo loco. Si entendiste el titulo ya sabes de que va.

Estoy creando una libreria COM , que permite usar .Net Framework desde script (VBS/JS).

Les dejo el repo: https://github.com/DestroyerDarkNess/Script.Interop.Net

Son bienvenidos a contribuir .



Pasos para utilizar :

1) Descargar la version experimental que publique : Script.Interop.Net.zip

2) Ejecutar el archivo ('Register COM.BAT')

3) Crea tu script vbs , he aqui un pequeño ejemplo (Crea un formulario (Winform) de .NET) :

Código
  1. ' Call Core
  2. Dim InteropDotNet  : Set InteropDotNet = CreateObject("Script.Interop.Net.Linker")
  3. ' Create Import/using (equivalent)
  4. Dim AssemblyTarget : Set AssemblyTarget = InteropDotNet.GetAssembly("System.Windows.Forms")
  5. ' Get Form Class From AssemblyTarget
  6. Dim ClassType : Set ClassType = AssemblyTarget.GetTypeByAssembly("Form")
  7. ' Create New Form Instance.
  8. Dim FormNewInstance : Set FormNewInstance = ClassType.CreateInstance()
  9. ' Set Form Title
  10. FormNewInstance.Text = "New Form"
  11. ' Show Form
  12. FormNewInstance.ShowDialog()



He publicado la lista de objetivos en el repo de github, los que ya complete y los que estan por complear. Hay varios poblemas , si hay un guru de vbs en el foro y quiera colaborar. es bienvenido.

PD: Si logro completar este proyecto , entonces seria una gran utilidad y suplantaria este post : [IMPRESIONANTE] Crear Formularios en VBS!

Cuando termine el proyecto , creo que seria buena idea fijar este post en la sección de script.

Gracias por Leer , Porfavor comenta!  ;D




79  Programación / .NET (C#, VB.NET, ASP) / Re: ¿Cuál es el mejor archivo para guardar y recuperar datos? en: 12 Febrero 2023, 00:11 am
No sabria decirte, pero en mi caso yo siempre uso JSON . Puedes usar la popular libreria : Newtonsoft.Json , aunque yo siempre uso la que te suministra el .net framework 'System.Web.Extensions' (JavaScriptSerializer) 


80  Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets para VB.NET !! (Compartan aquí sus snippets) en: 29 Enero 2023, 21:10 pm

FastArgumentParser

Parsea Argumentos de manera rapida y sencilla.

( click en la imagen para ir código fuente en Github)




Codigo Fuente

FastArgumentParser.vb

Código
  1. ' ***********************************************************************
  2. ' Author   : Destroyer
  3. ' Github   : https://github.com/DestroyerDarkNess
  4. ' Modified : 26-1-2023
  5. ' ***********************************************************************
  6. ' <copyright file="FastArgumentParser.vb" company="S4lsalsoft">
  7. '     Copyright (c) S4lsalsoft. All rights reserved.
  8. ' </copyright>
  9. ' ***********************************************************************
  10.  
  11. #Region " Usage Examples "
  12.  
  13. ''Commandline Arguments
  14. '' This contains the following:
  15. '' -file "d3d9.h" -silent 0x146 H&146
  16. 'Dim CommandLineArgs As String() = Environment.GetCommandLineArgs
  17.  
  18. 'Dim FastArgumentParser As Core.FastArgumentParser = New Core.FastArgumentParser()
  19.  
  20. '' Optional Config
  21. '' FastArgumentParser.ArgumentDelimiter = "-"
  22.  
  23. '' Set your Arguments
  24. 'Dim FileA As IArgument = FastArgumentParser.Add("file").SetDescription("file name")
  25. 'Dim SilentA As IArgument = FastArgumentParser.Add("silent").SetDescription("start silent")
  26.  
  27. '' Parse Arguments
  28. 'FastArgumentParser.Parse(CommandLineArgs)
  29. '' Or
  30. '' FastArgumentParser.Parse(CommandLineArgs, " ") ' To config Parameters Delimiter
  31.  
  32.  
  33. '' Get Arguments Values
  34. 'Console.WriteLine("Argument " & FileA.Name & " Value is: " & FileA.Value)
  35. 'Console.WriteLine("Argument " & SilentA.Name & " Value is: " & SilentA.Value)
  36.  
  37. #End Region
  38.  
  39. #Region " Imports "
  40.  
  41. Imports System.Collections.Specialized
  42.  
  43. #End Region
  44.  
  45. Namespace Core
  46.  
  47.    Public Class FastArgumentParser
  48.  
  49.        Private Property ArgumentList As List(Of IArgument)
  50.        Public Property ArgumentDelimiter As String = "-"
  51.  
  52.        Private UnknownArgs As New List(Of IArgument)
  53.        Public ReadOnly Property UnknownArguments As List(Of IArgument)
  54.            Get
  55.                Return UnknownArgs
  56.            End Get
  57.        End Property
  58.  
  59.        Public ReadOnly Property Count As Integer
  60.            Get
  61.                Return ArgumentList.Count()
  62.            End Get
  63.        End Property
  64.  
  65.        Public Sub New()
  66.            ArgumentList = New List(Of IArgument)
  67.        End Sub
  68.  
  69.        Public Function Add(ByVal name As String) As IArgument
  70.            If name.StartsWith(ArgumentDelimiter) = False Then name = ArgumentDelimiter & name
  71.            Dim ArgHandler As IArgument = New IArgument() With {.Name = name}
  72.            ArgumentList.Add(ArgHandler)
  73.            Return ArgHandler
  74.        End Function
  75.  
  76.        Public Sub Parse(ByVal args As String(), Optional ByVal ParameterDelimiter As String = " ")
  77.            Dim argCol As StringCollection = New StringCollection()
  78.            argCol.AddRange(args)
  79.  
  80.            Dim strEnum As StringEnumerator = argCol.GetEnumerator()
  81.  
  82.            Dim CountRequiredArg As Integer = 0
  83.  
  84.            Dim LastArg As IArgument = Nothing
  85.  
  86.            While strEnum.MoveNext()
  87.  
  88.                If strEnum.Current.StartsWith(ArgumentDelimiter) Then
  89.                    Dim GetArg As IArgument = GetArgCommand(strEnum.Current)
  90.                    LastArg = GetArg
  91.  
  92.                    If GetArg Is Nothing Then
  93.                        Dim UnknownA As IArgument = New IArgument With {.Name = strEnum.Current}
  94.                        UnknownArgs.Add(UnknownA)
  95.                    End If
  96.  
  97.                Else
  98.                    If LastArg IsNot Nothing Then
  99.                        If Not LastArg.Value = String.Empty Then LastArg.Value += ParameterDelimiter
  100.                        LastArg.Value += strEnum.Current
  101.                        Continue While
  102.                    End If
  103.                End If
  104.  
  105.            End While
  106.  
  107.        End Sub
  108.  
  109.        Private Function GetArgCommand(ByVal NameEx As String) As IArgument
  110.            For Each item In ArgumentList
  111.                If NameEx.Equals(item.Name) Then Return item
  112.            Next
  113.            Return Nothing
  114.        End Function
  115.  
  116.  
  117.    End Class
  118.  
  119.    Public Class IArgument
  120.        Public Property Name As String = String.Empty
  121.        Public Property Description As String = String.Empty
  122.        Public Property Value As String = String.Empty
  123.  
  124.        Public Function SetDescription(ByVal _text As String) As IArgument
  125.            Me.Description = _text
  126.            Return Me
  127.        End Function
  128.    End Class
  129.  
  130. End Namespace
  131.  
  132.  

Ejemplo de Uso:

Código
  1. 'Commandline Arguments
  2.        ' This contains the following:
  3.        ' -file "d3d9.h" -silent 0x146 H&146
  4.        Dim CommandLineArgs As String() = Environment.GetCommandLineArgs
  5.  
  6.        Dim FastArgumentParser As Core.FastArgumentParser = New Core.FastArgumentParser()
  7.  
  8.        ' Optional Config
  9.        ' FastArgumentParser.ArgumentDelimiter = "-"
  10.  
  11.        ' Set your Arguments
  12.        Dim FileA As IArgument = FastArgumentParser.Add("file").SetDescription("file name")
  13.        Dim SilentA As IArgument = FastArgumentParser.Add("silent").SetDescription("start silent")
  14.  
  15.        ' Parse Arguments
  16.        FastArgumentParser.Parse(CommandLineArgs)
  17.        ' Or
  18.        ' FastArgumentParser.Parse(CommandLineArgs, " ") ' To config Parameters Delimiter
  19.  
  20.  
  21.        ' Get Arguments Values
  22.        Console.WriteLine("Argument " & FileA.Name & " Value is: " & FileA.Value)
  23.        Console.WriteLine("Argument " & SilentA.Name & " Value is: " & SilentA.Value)
  24.  
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 75
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines