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 - Eleкtro

#3271
Cita de: MDd2 en  9 Septiembre 2016, 00:02 AMNo, me refiero al los ordenadores que se pueden hackear dentro del juego.

Yo.. de verdad, alucino con este tipo de preguntas al límite de lo absurdo, para colmo ni tan siquiera especificas a que versión del juego te refieres, ¿esperas que lo adivinemos?.

Fallout 4 para empezar es ficción, es un videojuego donde el personaje se encuentra en el año 1977 y por un "accidente" nuclear se queda hibernando 200 años para despertar en un escenario post-apocalíptico. El diseño de los objetos en su gran mayoría son Steampunk (me he pasado el juego), esto viene a ser tecnología del pasado o "vintage" combinada con ápices futuristas, algo sin sentido pero que queda muy bonito escenificado en el cine y los viedojuegos, pura ficción, vaya.

Los ordenadores de Fallout 4 serían más bien terminales, así se les llamaba a los sistemas computerizados de la década de los 70 y los 80, los cuales se representan en el juego mediante un sistema operativo sin interfaz gráfica, es decir, mediante una interfaz por linea de comandos o shell:


( y así eran también en la realidad, pero sin las modernizaciones que le mete Fallout 4. )

Es absurdo intentar buscar la terminal que aparece en Fallout 4 por que es un maldito video juego de ficción, así como la televisión vintage que aparece en el video juego, antaño las fabricaron todas o casi todas muy parecidas, y Fallout 4 solo es una representación de esa época, no te ponen marcas y modelos... son diseños propios inspirados en una época antigua de la humanidad.

En la historia de la industria informática han habido muchas compañias que fabricaron este tipo de terminales, ordenadores "portátiles", y video consolas que se manejaban con la shell.

Lo más parecido que se me ocurre, es una terminal Wang VS 100 del año 1978 más o menos (o al menos eso ponía donde lo vi):


Solo por mostrar algunos otros diseños:

Hazeltine 1500:


Apple II:


Esto que no se quien ni en que década se fabricó:


iMac (el primero, sin torre):

( obviamente este ordenador se maneja mediante un sistema operativo con interfaz gráfica y es mucho, mucho más actual que el resto. )

Saludos
#3272
Esto es una pregutna muy típica, pero con una explicación que sería muy larga de explicarte con todos los detalles.

Lee sobre técnicas de programación asincrónica, puedes utilizar la class Thread, la class BackgroundWorker, o la class Task, por este orden que he mencionado de menor a mayor abstracción.


También puedes leer los ejemplos de código que publiqué aquí:




Si no te ves capaz de implementar nada de eso entonces siempre puedes recurrir a una simple llamada a Application,DoEvents() en un búcle, pero es una metodología imprudente que trae consecuencias, y que la puedas usar depende de a lo que te refieras por "detener", si aplicas esta metodologia y lo que quieres es cerrar el Form entonces debes asegurarte de controlar el evento Form.FormClosing y terminar abrúptamente la ejecución de la app en ese preciso momento.

Saludos!
#3274
Hola.

Te recomiendo utilizar la aplicación de pago Wondershare MobileGo (hay una versión para Android y otra para iOS), permite realizar una copia de seguridad practicamente completa de todo el contenido de usuario, así como las apps instaladas y las apps del sistema.


PD: No hace falta decir que hay otras formas de conseguir el programa, sin pagar...

Saludos!
#3275
Windows / Re: no se mi clave win7 olvido
8 Septiembre 2016, 16:32 PM
@Platanito Mx
No lo volveré a repetir, deja de usar imágenes/videos ofensivos en tus comentarios, por más que utilices ese tipo de recursos como argumento eso no te hace a ti llevar la razón. Compórtate como una persona madura.

Tema Cerrado.
#3276
Cita de: TrashAmbishion en  8 Septiembre 2016, 07:39 AMPorque no puedo eliminar la imagen source una vez que termina la operación dice que esta en uso.

No consigo hallar la forma de reproducir el problema que describes, pero es posible que sea por que despues de llamar a la función le estés pasando el Bitmap al constructor de algún type y trates de liberar el Bitmap antes que ese type?.




Cita de: TrashAmbishion en  8 Septiembre 2016, 07:39 AMPróbe con otros codigos que tengo que usan Using

La correcta liberación de objetos de la función que has mostrado sería la siguiente:
Código (vbnet) [Seleccionar]
Private Function Resize_Image(ByVal img As Image, ByVal Width As Int32, ByVal Height As Int32) As Bitmap
   Dim Bitmap_Dest As New Bitmap(CInt(Width), CInt(Height))
   Using Graphic As Graphics = Graphics.FromImage(Bitmap_Dest)
       Graphic.DrawImage(img, 0, 0, Bitmap_Dest.Width + 1, Bitmap_Dest.Height + 1)
   End Using
   Return Bitmap_Dest
End Function


Cita de: TrashAmbishion en  8 Septiembre 2016, 07:39 AMtambien hize Dispose a cada imagen y nada

La declaración e instanciación de Bitmap_Source es innecesaria así que puedes eliminarla del código como hice yo arriba, y la instancia del objeto Bitmap_Dest no debes liberarla puesto que es el objeto que contiene la imagen que será devuelta por la función -.-, deberás liberarla despues de haber llamado a dicha función, es decir cuando ya no necesites usar/mostrar esa imagen, no antes.




( Se que ultimamente no dejo de repetirte lo siguiente de aquí abajo en cada duda que tienes, pero me veo casi obligado a hacerlo puesto que parece que te busques los problemas intencionadamente sin necesidad xD usando esos códigos antiguos y con imperfecciones de diseño, y eso sería algo que puedes evitar de la siguiente forma... )

En mi API gratuita ElektroKit puedes encontrar las siguientes funciones (a modo de extensiones de método) para redimensionar imágenes:


https://github.com/ElektroStudios/ElektroKit/blob/master/Solution/Elektro.Imaging/Extensions/Bitmap/Resize.vb


https://github.com/ElektroStudios/ElektroKit/blob/master/Solution/Elektro.Imaging/Extensions/Image/Resize.vb

Código fuente destripado y adaptado:
Código (vbnet) [Seleccionar]
<HideModuleName>
<DebuggerStepThrough>
Public Module ImagingExtensions

   <Extension>
   <EditorBrowsable(EditorBrowsableState.Always)>
   Public Function Resize(ByVal sender As Image, ByVal size As Size) As Image

       If (size.Width <= 0) Then
           Throw New ArgumentException(paramName:="width", message:="Value bigger than 0 is reqired.")

       ElseIf (size.Height <= 0) Then
           Throw New ArgumentException(paramName:="height", message:="Value bigger than 0 is reqired.")

       Else
           Dim bmp As New Bitmap(size.Width, size.Height, sender.PixelFormat)
           Using g As Graphics = Graphics.FromImage(bmp)
               With g
                   .CompositingQuality = CompositingQuality.Default
                   .InterpolationMode = InterpolationMode.Default
                   .PixelOffsetMode = PixelOffsetMode.Default
                   .SmoothingMode = SmoothingMode.Default
                   .DrawImage(sender, 0, 0, bmp.Width, bmp.Height)
               End With
           End Using
           Return bmp

       End If

   End Function

   <Extension>
   <EditorBrowsable(EditorBrowsableState.Always)>
   Public Function Resize(ByVal sender As Image, ByVal percent As Double) As Image
       Dim width As Integer = (sender.Width \ CInt(100 / percent))
       Dim height As Integer = (sender.Height \ CInt(100 / percent))
       Return Resize(sender, New Size(width, height))
   End Function

   <Extension>
   <EditorBrowsable(EditorBrowsableState.Always)>
   Public Function Resize(ByVal sender As Bitmap, ByVal size As Size) As Bitmap
       Return DirectCast(Resize(DirectCast(sender, Image), size), Bitmap)
   End Function

   <Extension>
   <EditorBrowsable(EditorBrowsableState.Always)>
   Public Function Resize(ByVal sender As Bitmap, ByVal percent As Double) As Bitmap
       Return DirectCast(Resize(DirectCast(sender, Image), percent), Bitmap)
   End Function

End Module


Saludos
#3277
Cita de: TrashAmbishion en  6 Septiembre 2016, 21:08 PMquería saber (para cubrir dudas) que como obligatoriamente para poder jugar el juego tiene que ser a traves de mi programa tendría cierta ventaja como por ejemplo bloquear el proceso del juego para que nada mas que mi programa acceda a el, estuve mirando "mutex" pero creo que no tiene nada que ver, y lo otro es iniciarlo de forma que no se pudiera listar en los procesos como un rootkit, pero que la GUI si se mantuviera o cualquier otro invento

Bueno, en mi opinión no está del todo claro lo que dices, si tu programa debería ser el único que pudiera INICIAR el executable, o por otro lado el único que pudiera ACCEDER a él, o ambas cosas.




Si te refieres a imposibilitar que el usuario pueda iniciar el exe del juego:
Puedes hacer un API hooking a la función CreateProcessW/CreateProcessA para interceptar las lalmadas a dicha función y anular la llamada en caso de que el parámetro lpApplicationName corresponda con el exe del juego. En .NET puedes implementar técnicas de API Hooking de forma relativamente sencilla con la librería Deviare: http://www.nektra.com/products/deviare-api-hook-windows/.

Un ejemplo de implementación que escribí:

Otra opción para llevar a cabo lo mismo sería monitorizar la ejecución de nuevos procesos mediante WMI, lo que practicamente no costaría nada de esfuerzo implementarlo, sin embargo, WMI necesita un mínimo de tiempo para actualizarse y detectar nuevos procesos en la lista de procesos interna del sistema, dicho de otra forma: es una metodología mucho menos sensible que el API hooking.

En mi API gratuita ElektroKit tienes un ejemplo de implementación:


Pero como ya he explicado WMI es lento, así que sería mejor usar un Timer (de verdad, da muchos mejores resultados que WMI):


Notas adicionales:
- Si quieres imposibilitar más de una instancia del executable entonces puedes usar un MUTEX o semáforo, no te va a servir para otra cosa en este propósito.
- Si, puedes ocultar el nombre del exe del juego en el administrador de tareas, puedes hacerlo mediante la metodología tradicional y casi obsoleta de la Win32 API (FindWindow + EnumChildWindows + etc) o también mediante el framework de Windows UI Automation de la librería de classes de .NET Framework, pero no te aconsejo ocultar el nombre del proceso de ninguna forma, puesto que se requiere mucho trabajo para cada versión de Windows necesitarás hacer cambios en los nombres de las classes y etc, te llevaría bastante tiempo solo en investigar los nombres haciéndole un Spy al taskmanager, vaya. No se si existe otra forma para ocultarlo.




Si te refieres a impedir que el usuario pueda utilizar la ventana del proceso:

Mediante la API RAWINPUT puedes registrar un dispositivo de teclado y/o mouse virtual y solo lo usuarias tú, pero requiere mucho trabajo, mucho p/invoking:
( En mi API ElektroKit en el namespace Elektro.Interop.Win32 tienes muchas definiciones de RAWINPUT si las llegases a necesitar... )

Cabe mencionar que puedes utilizar la función Win32 BlockInput para imposibilitar el uso del teclado y el mouse, pero lamentablemente esto afectaría de forma global al usuario, no solo a la ventana del juego.

Se me ocurre que podrías registrar un mensaje de ventana, e intentar bloquear la cola de mensajes de la ventana del juego para que solo acepte tu mensaje, supongo que esto es lo que harán los bots más sofisticados (como los Buddy bots de los juegos de Blizzard) pero solo es una hipótesis o una conjetura, realmente no estoy nada seguro de como se implementaría esta técnica.




Cita de: TrashAmbishion en  6 Septiembre 2016, 21:08 PMque crees ?
La inyección de código en video juegos y en general estas cosas para juegos no es lo mio, te podrían orientar mejor en el foro de ingenieria inversa, supongo.

Saludos
#3278
Dudas Generales / Re: Maquina virtual segura
7 Septiembre 2016, 09:03 AM
Con cualquier software de virtualización de sistemas operativos, como por ejemplo VMWare Workstation u Oracle VirtualBox. Lo que debes asegurarte es de NO compartir tus dispositivos anfitriones, es decir no crear carpetas compartidas ni compartir el USB, y NO compartir tu conexión de Red anfitrión, en combinación es una buena medida para prevenir en un 99% la infección en caso de que el virus tenga algún tipo de spread que pueda afectar a tu sistema operativo anfitrión, y digo en un 99%, por que hace tiempo vi videos demostrativos de ciertos virus que a pesar de esas medidas preventivas pueden acceder al S.O host.

El procedimiento sería el siguiente:
1. Crear una imagen del sistema virtual (un Snapshot)
2. Desactivar las carpetas compartidas, el USB y los adaptadores de red virtuales.
3. Manipular los virus que quieras.
4. Restaurar la imagen del sistema que hiciste.

Saludos!
#3279
Hola. Cuando formules una duda de programación sobre un error específico, asegúrate de mencionar el tipo y mensaje de error, es una información esencial y no somos magos, jeje. Aparte de eso, debes formatear el código que publiques con las etiquetas GeShi y debes publicar en el sbforo de programación correspondiente, no en dudas generales.




Cita de: BLANKA MARTINEZ en  7 Septiembre 2016, 03:32 AMhago una sub funcion pero  los objetos no los reconoce me da error por ejemplo

En la función que has definido te faltaría especificar el tipo de valor de retorno: Function suma(...) As Integer

Otro posible error que te esté indicando el compiler, dependiendo de las declaraciones Option que tengas activadas, sería por estar pasándole valores de tipo String a una función que solo acepta valores de tipo Integer:
Cita de: BLANKA MARTINEZ en  7 Septiembre 2016, 03:32 AM
Código (vbnet) [Seleccionar]
label1.text=suma(textbox1.text,textbox2.text)
Lo solucionarías de la siguiente manera:
Código (vbnet) [Seleccionar]
label1.text = CStr(suma(CInt(textbox1.text), CInt(textbox2.text)))

Saludos
#3280
Foro Libre / Re: Saque una aplicacion para Facebook
6 Septiembre 2016, 19:25 PM
Cita de: ENCUENTROSWEB en  6 Septiembre 2016, 17:47 PMyo pense poder igualar a ellos, no se como consiguen tanto trafico ni que hacer para empatarlos

No es por ofender, pero se ve a simple vista que hay diferencias abismales entre esa página y la tuya, no hace falta pararse a comparar mucho, saltan a la vista, en tu página hay varias faltas de ortografía (en el idioma Español), hay banners, no hay ningún formulario de contacto (y el mail que está abajo casi escondido con el dominio .ru no inspira ninguna confianza), no hay actualizaciones sociales de Twitter o FaceBook, otra diferencia es que en aquella web no usan las típicas frases de las que ya todos los clientes estamos hartos como "somos líderes en el sector blah lah blah tenemos miles de clientes y somos los mejores por que sí", ver ese tipo de frases para intentar argumentar la eficacia y/o honestidad de un servicio cansa mucho y transmite de todo menos confianza, en mi opinión es una estrategia de marketing obsoleta, muy engañosa y demasiado utilizada en todas las compañias, y tal vez la diferencia más improtante es que en tu página hay una completa ausencia de un artículo legal y/o un FAQ con un QA de privacidad donde expliques como funciona tu servicio y que datos son los que se recojen.

Deberías considerar preguntarte a ti mismo como esperas poder inspirar confianza a los usuarios que visiten tu servicio si no le implementas nada de eso y, ¿de verdad es necesario que te digamos esto?, es decir, ¿realmente no puedes darte cuenta por ti mismo de las diferencias que hay en esa otra web "whodeletedme"?:
La veteranía del servicio (2009-2016) también es otro dato que inspira mucha confianza y contra eso es dificil de competir.

Saludos!