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 2 [3] 4 5 6 7
21  Programación / Ingeniería Inversa / Pointers & Offsets en: 11 Diciembre 2011, 22:42 pm
Hola a todos !  :D. Bueno, ya estoy dentro del tema memoria de los programas, dinamico o estático, pointers & offsets, etc. Estos conceptos ya los tengo claros, pero tengo algunas dudas. Primero quisiera saber si los offsets son SIEMPRE estáticos, o puede que cambien, y si estos son propios de cada programa o propios de cada porción de memoria (dinamica o estatica). El tema es el siguiente. Tengo un programa el cual cuenta con memoria totalmente dinamica, al volver a ejecutarlo cambian los adresses de memoria, como todos saben. Ahora, se que para no tener que obtener el adress de memoria de cada variable de mi programa cada vez que lo ejecuto, utilizo los pointers y offsets. Tengo claro que los adresses de memoria dinamica se almacenan en otros adresses que son estáticos (esto es lo que no puedo obtener) pero no se almacenan TALCUAL nosotros podemos verlos; si no que hay una especie de "cuenta" en los cuales intervienen los offsets y los pointers. Bueno, voy al grano, en este programa obtengo la direccion de memoria dinamica de una variable (con CE), de esta misma obtengo su offset y pointer (con MHS5). Pero no logro encontrar alguna funcion para obtener la memoria estatica en donde se almacena la memoria dinamica (por asi decirlo).

También cabe aclarar que cada vez que vuelvo a buscar los pointers y offsets que pertenecen a una direccion de memoria dinamica de una variable, estos mismos son diferentes a las busquedas anteriores, aunque la variable siempre sea la misma (pero no la direccion de memoria).

Bueno, si logran ayudarme, estaria muy agradecido :)

P.D: Creo que este es el foro correcto para crear este tema ^^. De no ser así por favor haganmelo saber :P
22  Programación / Programación Visual Basic / Re: [VB6] Memoria en: 11 Diciembre 2011, 16:25 pm
Lo que debe realmente saber es que tipo de String es... Unicole o ANSI, en vb6 el tipo String es Unicode es decir que SOLO debe transformar el tipo ANSI a Unicode... pero no es cuarlquier tipo de String es un BSTR

4Bytes : Longitud.
(Lotitud*2) Bytes: Datos.
2 Bytes de Terminación.

Lo que debe de hacer el compañero es:

1.- Copiar N Bytes en una cadena String o un Array de Bytes (segun el caso: ANSI = Array de Bytes, UNICODE = String) con un Buffer X (Anticipadamente)
2.- Verificar si lo copiado es de tipo ANSI.
2.1.- Para ANSI Cada caracter No debe tener una separacion de un Byte en valor 0.
2.2.- Para Unicode Cada Caracter deberia tener un Byte 0 y los 2 ultimos bytes serian 2 bytes en valor 0 (NULOS)
3.A.- Para el caso de que sea Unicode No hacer Nada (Solo fizear los espacios entre cada caracter y dejarlos en byte 0, almenos que sean caracteres ESPECIALES como caracteres CHINOS etc...).
3.A.- Para el caso de que sea una cadena tipo ANSI debera realizar un for next desde el indice inferior al mazimo y asignarlos en un String...:

Código
  1. 'Puedo tener errores debido que lo hice aqui en el foro.
  2. dim i as long
  3. dim bData() as byte
  4. dim sBuff as string
  5. ...
  6. Codigo que copia el array de bytes aqui...
  7. ...
  8. sBuff = space(Ubound(bData) + 1)
  9. for i = 0 to Ubound(bData)
  10.    Mid$(sBuff, (i*2) ,1) = chr(bData(i))
  11. next i
  12.  

TODO lo puedes hacer con un array de bytes y despues solo intercalar puenteros... es un poco mas complejo si aun no sabes manipular estas cosillas.

Nopta: Recuerda Cambiar el parametro Size de ReadProcessMemomy (es el 4to parametro de izquierda a derecha) ya que este indica CUANTOS Bytes vas a copiar... aun asi leete mas la MSDN.

Dulces Lunas!¡.

Gracias!!

No me agrada ni poco VB6; por eso no perderé tiempo creando funciones que nunca usaré.

Te dejo aquí un proyecto (incompleto por desgracia) de un amigo del CE-F... el cual tiene lo que necesitas, una lectura en memoria se te haría fácil si usas la función ReadString.

Ojo, el proyecto en su totalidad (por tanto el crédito) pertenece a Wiccan.

Salud.

Gracias!! Me ha servido :)

Suerte!
23  Programación / Programación Visual Basic / Re: [VB6] Memoria en: 11 Diciembre 2011, 02:16 am
Discuplen, pero he intentado y aun no he podido... me dan una manito mas ? :)

Gracias!
24  Programación / Programación Visual Basic / Re: [VB6] Memoria en: 10 Diciembre 2011, 23:22 pm
Para ser más específicos: Debes leer la dirección en memoria que contiene por valor tal cadena de texto, obviamente si haces esto tendrás que leer byte a byte, o un gran pedazo de memoria (que te devuelva una matriz de bytes) y convertir ésta a una cadena de texto, ya sea ANSI o Unicode. Mira éste enlace.

Salud.

Creo que esto es lo que necesito, gracias! :) Ahora, me podrías informar de como leer   byte a byte,  si sos tan amable  :D ?

Gracias!
25  Programación / Programación Visual Basic / [VB6] Memoria en: 10 Diciembre 2011, 19:54 pm
Bueno, les explico: Estoy leyendo unas porciones de memoria de un programa con las siguientes funciones...

Código
  1. Public Function ReadAnInt(gamewindowtext As String, address As Long, valbuffer As Integer)
  2. Dim hwnd As Long
  3. Dim pid As Long
  4. Dim phandle As Long
  5. hwnd = FindWindow(vbNullString, gamewindowtext)
  6. GetWindowThreadProcessId hwnd, pid
  7. phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
  8. ReadProcessMem phandle, address, valbuffer, 2, 0&
  9. CloseHandle hProcess
  10. End Function
  11.  
  12. Public Function ReadAByte(gamewindowtext As String, address As Long, valbuffer As Byte)
  13. Dim hwnd As Long
  14. Dim pid As Long
  15. Dim phandle As Long
  16. hwnd = FindWindow(vbNullString, gamewindowtext)
  17. GetWindowThreadProcessId hwnd, pid
  18. phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
  19.  
  20. ReadProcessMem phandle, address, valbuffer, 1, 0&
  21. CloseHandle hProcess
  22. End Function
  23.  

Estas me funcionan perfectamente, pero no he encontrado alguna para leer porciones de memoria las cuales devuelvan una cadena (string), en vez de un valor numérico. Si me pueden ayduar... estaría muy agradecido  :)

Gracias  :D
26  Programación / Programación C/C++ / Re: GetCursorPos [C] en: 22 Octubre 2011, 19:57 pm
Muy amable  ;)
27  Programación / Programación C/C++ / Re: GetCursorPos [C] en: 22 Octubre 2011, 19:25 pm
Obtengo un error al hacer eso mismo en una condición If. Al utilizarlo en Main() ya lo he podido solucionar. Una última cosa si eres tan amable, como podría mostrar vía MessageBox() las posiciones del mouse X e Y.

Gracias!
28  Programación / Programación C/C++ / Re: GetCursorPos [C] en: 22 Octubre 2011, 19:01 pm
Eso ya lo leí, y también las demás páginas que se encuentran en el buscador de Google, pero no hay ningún ejemplo concreto, que incluya las declaraciones y todo. Por eso es que vengo a pedir esto.

Gracias...
29  Programación / Programación C/C++ / Re: GetCursorPos [C] en: 22 Octubre 2011, 17:03 pm
Hola. Disculpá la falta de información, estaba muy apurado. Me refiero al API de Windows GetCursorPos, uso Windows, y el IDE de Dev-C++.
30  Programación / Programación C/C++ / GetCursorPos [C] en: 22 Octubre 2011, 16:50 pm
Hola, alguno me podría dejar un ejemplo claro (con declaración y todo) sobre GetCursorPos en C? Porque, realmente, no lo he podido encontrar. Si alguien es tan amable se lo agradezco muchísimo.

Gracias!
Páginas: 1 2 [3] 4 5 6 7
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines