• Lunes 12 de Mayo de 2025, 04:48

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - krnl64

Páginas: 1 2 [3]
51
C/C++ / Re: Problemas Kon El Palindromo
« en: Viernes 28 de Marzo de 2008, 17:44 »
Creo que los espacios debes de quitarlos y darle la vuelta a la cadena.

Salu2

52
C/C++ / Re: Optimizar Busqueda En Memoria
« en: Viernes 28 de Marzo de 2008, 17:41 »
mm,  tengo un problemilla.


Si Pointer to Raw Data de la seccion .data vale 0x43000 accediendo a esa direccion debere de leer el inicio de la seccion no ?

Es que leo esa direccion con ReadProcessMemory y el resultado es 0.

Tiene algo que ver que se este ejecutando el proceso ?

Gracias

53
C/C++ / Re: Optimizar Busqueda En Memoria
« en: Viernes 28 de Marzo de 2008, 16:11 »
Si, me fui directo al formato PE. Estoy mirando como obtener los datos que necesito del PE en memoria.

Gracias

54
C/C++ / Re: Optimizar Busqueda En Memoria
« en: Viernes 28 de Marzo de 2008, 15:34 »
O sea, que casi  cualquier variable que quiera buscar estara en la seccion .DATA o DATA?  del PE en memoria ?

Voy a ver si asi soluciono el asunto.

Gracias !!

55
C/C++ / Optimizar Busqueda En Memoria
« en: Viernes 28 de Marzo de 2008, 15:03 »
Hola a todos.

Veran, estoy tratando de hacer un cheat para un juego (solo por gusto, apenas juego xD).

Abro el proceso y busco las variables pertinentes.

Pero todos los procesos empiezan en 0x10000 y acaban en 0x7FFE0FF0
(en mi sistema, o por lo menos eso me dice la estructura SYSTEM_INFO) entonces este bucle que es que lee:

Código: Text
  1.  
  2.  
  3.  
  4.        // si es un puntero a SYSTEM_INFO
  5.  
  6.       currentAddress=(DWORD)si.lpMinimumApplicationAddress;
  7.          // Obtengo la direccion donde comienza el proceso
  8.  
  9.      // Estare leyendo hasta llegar al final del espacio de direcciones del proceso
  10.       while (currentAddress < (DWORD)si.lpMaximumApplicationAddress) {
  11.      
  12.             VirtualQueryEx(...)
  13.              ReadProcessMemory(...)
  14.  
  15.      }
  16.  
  17.  
  18.  
  19.  

Pero tarda siglos en recorrer todas las direcciones. Cómo podria hacer para leer solo las direcciones desde donde empieza a donde acaba ?

Es decir, abri el regmon con el WinHex y empieza en 0x10000 y acaba en 5B187FF0
(en mi equipo)

Como puedo averiguar esa direccion ?

Gracias

56
ASM (Ensamblador) / Re: Bootear Desde Cd
« en: Sábado 15 de Diciembre de 2007, 18:04 »
Gracias por la info. Ya consegui hacerlo. Aunque tengo otro problema xDD

Me arranca pero no interpreta los comandos.

Pueden decirme que es lo que hay mal ? porque he revisado el codigo (que no es mio) y no veo nada extraño.

Se me olvidaba, es Fasm.

Gracias

Código del Kernel

Código: Text
  1.  
  2.  
  3. ;--------------------------
  4. ; INICIO
  5. ;--------------------------
  6.  
  7.   cli        &#59; Desactivamos interruptores
  8.   mov    ax,0x1000  &#59; AX = 0x1000 donde es cargado el kernel
  9.   mov    ds,ax  &#59; DS = 0x1000
  10.   mov    es,ax  &#59; ES = 0x1000
  11.   mov    ss,ax  &#59; SS = 0x1000
  12.   mov    sp,0xFFFF  &#59; SP = 0xFFFF final de la memoria
  13.   sti        &#59; Reactivamos los interruptores
  14.  
  15.   call    clear  &#59; Borramos la pantalla
  16.   call    cursor  &#59; Ponemos el cursor
  17.   mov    si,NoDOS  &#59; Apuntamos SI a la cadena
  18.   call    puts    &#59; Ponemos el prompt
  19.   mov    si,elprompt&#59; Apuntamos SI a la cadena
  20.   call    puts    &#59; Ponemos el prompt
  21.  
  22. ;-------------------------------------------------------------------------------
  23.  
  24. ;--------------------------
  25. ; MAIN (CLI)
  26. ;--------------------------
  27.  
  28. main:
  29.  
  30.   hlt        &#59; Evitamos que el CPU se caliente (halt)
  31.   mov    cx,64  &#59; Limitamos las cadenas a 60 caracteres
  32.   mov    di,comando&#59; Apuntamos a la cadena del comando
  33.   call    gets    &#59; Obtenemos el comando del teclado
  34.  
  35. procesar:
  36.  
  37.   pusha      &#59; Guardamos todos los registros en la pila
  38.   push    es    &#59; Guardamos ES en la pila
  39.  
  40. ;---------
  41. ; cHOLA
  42. ;---------
  43.  
  44.   mov    si,comando&#59; Ponemos la direccion de "comando" en SI
  45.   mov    cx,5    &#59; Numero de letras del comando (incluye el 0)
  46.   mov    di,cHOLA  &#59; Apuntamos DI a la cadena del comando
  47.   repe    cmpsb  &#59; REPE = Repetir mientras sea igual y
  48.           &#59; disminuir CX
  49.           &#59; CMPSB = Comparar SI con DI
  50.           &#59; SI+1 y DI+1
  51.   jne    no_cHOLA  &#59; Si no es igual seguimos
  52.   call    saludar  &#59; Llamamos a la funcion saludar
  53.   jmp    fin_procesar&#59; Terminamos con este comando
  54.  
  55. no_cHOLA:
  56.  
  57. ;--------------------------
  58. ; PONER COMANDOS AQUI!!
  59. ;--------------------------
  60.  
  61. fin_procesar:
  62.  
  63.   call    prompt  &#59; Ponemos el prompt
  64.   pop    es    &#59; Recuperamos ES
  65.   popa        &#59; Recuperamos los registros generales
  66.   jmp    main    &#59; Repetimos
  67.  
  68. ;-------------------------------------------------------------------------------
  69.  
  70. ;--------------------------
  71. ; FUNCIONES
  72. ;--------------------------
  73.  
  74. clear:        &#59; CLEAR @@@@
  75.  
  76.   mov    ah,0x06  &#59; AH = 0x06 BIOS Scroll
  77.   mov    al,0x00  &#59; AL = 0x00 (lineas) 0 = Pantalla completa
  78.   mov    bh,0x07  &#59; BL = 0x07 0 = Fondo Negro, 7 = Texto Blanco
  79.   mov    ch,0x00  &#59; CH = 0x00 Linea superior (y = 0)
  80.   mov    cl,0x00  &#59; CL = 0x00 Columna Izquierda (x = 0)
  81.   mov    dh,0x18  &#59; DH = 0x18 Linea Inferior (y = 24)
  82.   mov    dl,0x4F  &#59; DL = 0x4F Columna Derecha (x = 79)
  83.   int    0x10    &#59; BIOS VIDEO
  84.   ret
  85.  
  86. ;-------------------------------------------------------------------------------
  87.  
  88. prompt:        &#59; PROMPT @@@@
  89.  
  90.   mov    si,elprompt&#59; SI apunta a la cadena
  91.   call    puts    &#59; Llamamos al procedimiento puts
  92.   ret        &#59; Regresamos
  93.  
  94. ;-------------------------------------------------------------------------------
  95.  
  96. cursor:        &#59; CURSOR @@@@
  97.  
  98.   mov    ah,0x02  &#59; BIOS posicion del cursor
  99.   mov    bh,0x00  &#59; Pagina de memoria
  100.   mov    dh,0x00  &#59; Fila, posicion en Y
  101.   mov    dl,0x00  &#59; Columna, posicion en x
  102.   int    0x10    &#59; BIOS VIDEO
  103.   ret        &#59; Regresamos
  104.  
  105. ;-------------------------------------------------------------------------------
  106.  
  107. saludar:        &#59; SALUDAR @@@@
  108.  
  109.   mov    si,hola  &#59; SI apunta a la cadena
  110.   call    puts    &#59; Llamamos al procedimiento print
  111.   ret        &#59; Regresamos
  112.  
  113. ;-------------------------------------------------------------------------------
  114.  
  115. putc:        &#59; PUTC @@@@
  116.  
  117.   push    ax    &#59; Guardamos AX en la pila
  118.   cmp    al,0x09  &#59; Comparamos Al para ver si es TAB (0x09)
  119.   je    .esTAB  &#59; Si es TAB saltamos
  120.   mov    ah,0x0E  &#59; BIOS poner caracter
  121.   mov    bh,0x00  &#59; Pagina 0
  122.   mov    bl,0x07  &#59; Blanco sobre Negro
  123.   int    0x10    &#59; BIOS VIDEO
  124.   jmp    .fin    &#59; Terminamos
  125.  
  126. .esTAB:
  127.  
  128.   mov    al,0x20  &#59; Ponemos en AL el caracter de espacio
  129.   call    putc    &#59; Llamamos a esta misma funcion 5 veces
  130.   call    putc    &#59; para poner en pantalla un TAB
  131.   call    putc    &#59; de 5 espacios
  132.   call    putc    &#59; ...
  133.   call    putc    &#59; ...
  134.  
  135. .fin:
  136.  
  137.   pop    ax    &#59; Recuperamos AX de la pila
  138.   ret        &#59; Regresamos
  139.  
  140. ;-------------------------------------------------------------------------------
  141.  
  142. gets:        &#59; GETS @@@@
  143.  
  144.   push    cx    &#59; Guardamos CX en la pila
  145.   push    ax    &#59; Guardamos AX en la pila
  146.   push    dx    &#59; Guardamos DX en la pila
  147.   push    di    &#59; Guardamos DI en la pila
  148.   mov    dx,di  &#59; Guardamos el inicio de la cadena en SI
  149.  
  150. .tecla:
  151.  
  152.   cmp    cx,0    &#59; Terminamos?
  153.   je    .fin    &#59; Si CX es 0 terminamos
  154.   xor    ax,ax  &#59; AH = 0 - BIOS obtener tecla
  155.   int    0x16    &#59; BIOS Servicios de Teclado
  156.   dec    cx    &#59; CX = CX-1
  157.   cmp    al,0x0D  &#59; Es ENTER? (ascii decimal 13)
  158.   je    .enter  &#59; Si es igual terminamos
  159.   cmp    al,0x08  &#59; Es Backspace (ascii decimal 8)
  160.   je    .backspace&#59; Si es igual saltamos a backspace
  161.   call    putc    &#59; Si no ponemos el caracter
  162.   mov    [di],al  &#59; Copiamos AL (caracter) en la cadena [DI]
  163.   inc    di    &#59; DI = DI+1
  164.   jmp    .tecla  &#59; Repetimos con la siguiente tecla
  165.  
  166. .backspace:
  167.  
  168.   cmp    dx,di  &#59; Comparamos con el principio de la cadena  
  169.   je    .tecla  &#59; Si son iguales pedimos otra tecla
  170.   dec    di    &#59; DI = DI-1
  171.  
  172.   mov    ah,0Eh  &#59; BIOS Poner caracter
  173.   mov    al,0x08  &#59; Movemos el cursor hacia atras (backspace)
  174.   mov    bh,0x00  &#59; Pagina 0
  175.   mov     bl,0x01  &#59; Borramos
  176.   int    0x10    &#59; BIOS VIDEO
  177.  
  178.   mov    ah,0Eh  &#59; BIOS Poner caracter
  179.   mov    al,0x20  &#59; Ponemos espacio
  180.   mov    bh,0x00  &#59; Pagina 0
  181.   mov     bl,0x01  &#59; Borramos
  182.   int    0x10    &#59; BIOS VIDEO
  183.  
  184.   mov    ah,0Eh  &#59; BIOS Poner caracter
  185.   mov    al,0x08  &#59; Movemos el cursor hacia atras (backspace)
  186.   mov    bh,0x00  &#59; Pagina 0
  187.   mov     bl,0x01  &#59; Borramos
  188.   int    0x10    &#59; BIOS VIDEO
  189.  
  190.   jmp    .tecla  &#59; Pedimos otra tecla
  191.  
  192. .enter:
  193.  
  194.   mov    al,0x0D  &#59; Retorno de Linea (13)
  195.   call    putc    &#59; Ponemos en pantalla
  196.   mov    al,0x0A  &#59; Nueva Linea (10)
  197.   call    putc    &#59; Ponemos en pantalla
  198.  
  199. .fin:
  200.  
  201.   mov    byte  [di],0&#59; Terminamos la cadena con cero
  202.   pop    di    &#59; Recuperamos los registros
  203.   pop    dx    &#59; ...
  204.   pop    ax    &#59; ...
  205.   pop    cx    &#59; ...
  206.   ret        &#59; Regresamos
  207.  
  208. ;-------------------------------------------------------------------------------
  209.  
  210. puts:
  211.  
  212.   lodsb      &#59; Cargamos el caracter de DS:SI en AL
  213.   or    al,al  &#59; Hacemos un OR al registro AL
  214.   jz     .fin_puts  &#59; Terminamos si es cero
  215.   mov    ah,0x0E  &#59; Poner caracter (parametro int 0x10)
  216.   int    0x10    &#59; BIOS VIDEO
  217.   jmp    puts    &#59; Siguiente caracter
  218.  
  219. .fin_puts:
  220.  
  221.   ret        &#59; termina el procedimiento y regresamos
  222.  
  223. ;-------------------------------------------------------------------------------
  224.  
  225. ;--------------------------
  226. ; VARIABLES
  227. ;--------------------------
  228.  
  229.   comando:  times  128  db 0&#59; Espacio para almacenar el comando
  230.   elprompt  db '@:',0    &#59; El prompt "@:"
  231.   cHOLA  db "hola",0  &#59; Comando "hola"
  232.   hola    db "Hola CLI!!",13,10,0; Texto del comando "hola"
  233.  
  234.   NoDOS  db "NoDOS 0.1",13,10,0; Cadena de Bienvenida!
  235.  
  236.  
  237.  

57
ASM (Ensamblador) / Bootear Desde Cd
« en: Viernes 14 de Diciembre de 2007, 13:22 »
Hola a todos.

Verán estoy tratando de arrancar el ordenador desde una iso.
Use el FASM para generar el bin de arranque y otro bin que seria un interprete de comandos.

Copiandolos a un floppy y a archivos IMG (para el VMWARE) funciona bien.

Pero qué puedo hacer para conseguir arrancar desde una iso ?

Probe a ponerle un autorun, pero no funciona.

Gracias

58
ASM (Ensamblador) / Re: Pequeñas Dudas En Programa Basico
« en: Lunes 26 de Noviembre de 2007, 15:27 »
Es verdad !! Yo solo recupero el handle pero no lo abro.
Normal que no tenga que cerrarlo.

Gracias por las respuestas  !!

Saludos

59
ASM (Ensamblador) / Re: Pequeñas Dudas En Programa Basico
« en: Lunes 26 de Noviembre de 2007, 00:21 »
No le puse NULL porque fuese opcional sino porque pensaba que no necesitaría ni buffer ni variable ninguna porque no quería guardar la entrada de datos.

Le puse ambos parametros y funciona.

Lo que no termino de entender es de que el handle de salida de datos desaparece (De hay el fallo al hacer CloseHandle hout).

En la msdn no dice que se cierre solo.

60
ASM (Ensamblador) / Pequeñas Dudas En Programa Basico
« en: Domingo 25 de Noviembre de 2007, 22:20 »
Hola a todos.

Estoy empezando en esto del masm32 y codeando un simple programa que te escribe una palabra en la consola y espera a que pulses una tecla para terminar,me han surgido algunas dudas que no consigo resolver.

Les pongo mi code y les cuento:

Código: Text
  1.  
  2.  
  3. .386                                            
  4. .model flat, stdcall
  5. option casemap:none
  6.  
  7. include kernel32.inc
  8. include windows.inc
  9.  
  10.  
  11. includelib kernel32.lib
  12.  
  13. .data
  14.  
  15. ;variables necesarias
  16.  
  17. msg  db 'hola',0
  18. buff db ?
  19.  
  20. hout dd ?
  21. hin  dd ?; handles de e/s
  22.  
  23. tit db 'Consola Demo',0
  24.  
  25.  
  26. .code
  27.  
  28. start:
  29.  
  30.   call con
  31.   call pinta
  32.  
  33.   push hin
  34.   call CloseHandle
  35.          &#59; Cierro los handles abiertos
  36.   push hout
  37.   call CloseHandle
  38.  
  39.   call FreeConsole  &#59; Cierro la consola
  40.  
  41.  
  42.  
  43. ; Salgo de forma controlada
  44. push NULL
  45. call ExitProcess
  46.  
  47.  
  48. con proc      
  49. ;call AllocConsole
  50. ; solicito poder crear una consola
  51. ; Esto sobra porque el programa es de consola
  52.  
  53. push STD_OUTPUT_HANDLE
  54. call GetStdHandle; obtendre el handle de la consola
  55. mov  hout,eax   &#59; copio a hout el handle obtenido
  56.  
  57. push STD_INPUT_HANDLE
  58. call GetStdHandle
  59. mov hin,eax  &#59; handle de entrada
  60.  
  61.  
  62. lea eax,tit
  63. push eax
  64. call SetConsoleTitle
  65. ;titulo de la consola
  66.  
  67. ret  
  68. con endp
  69.  
  70.  
  71. pinta proc
  72.  
  73. push NULL; nulo
  74. lea eax,buff; buffer de escritura
  75. push eax; meto el buffer en la pila
  76. push 4;longitud del mensaje
  77. lea eax,msg
  78. push eax; meto la cadena en la pila
  79. push hout;meto en la pila el handle
  80. call WriteConsole
  81. ;llamo a la funcion
  82.  
  83.  
  84. push NULL
  85. push NULL
  86. push NULL; los parametros son nulos porque no voy a
  87. push NULL; almacenar el dato leido, excepto el handle que
  88. push hin  &#59; es necesario
  89. call ReadConsole
  90.  
  91. ret
  92.  
  93. pinta endp
  94.  
  95. end start
  96.  
  97.  
  98.  



Empiezo a ejecutar y obtengo los handles de E/S de la consola.

Me escribe la palabra hola (esto menos mal que lo hace bien) y espera a que pulse enter, pero en este procedimiento el handle de salida desaparece y en LastError pone ERROR_INVALID_ACCESS.

Cuando regresa a la rutina principal al cerrar los handles, me cierra el handle de entrada pero el de salida no, porque no existe.

FreeConsole y ExitProcess funcionan bien.

Pueden decirme el por qué de estos fallos ? porque estoy buscando info y no consigo averiguarlos.

Creo que el handle de salida de la consola desaparece "solo" porque cumple su funcion y no se va a usar más, pero no estoy muy seguro.

Espero que me puedan aclarar esas dudillas.

Gracias

61
VB .NET / Problema Con Un Algoritmo
« en: Miércoles 21 de Noviembre de 2007, 18:19 »
Hola a todos.
Verán estoy intentando hacer un code que me elimine los elementos repetidos de un vector. Pero resulta que el code que he escrito falla a veces.
Le he dado 1000 vueltas y no se porqué falla (en teoria es correcto lo que he escrito)

Podrían ayudarme a resolver el problema ?
Mi code es este:

Código: Text
  1.  
  2.  
  3. Dim v() As Integer
  4.         Dim i As Integer
  5.         Dim j As Integer
  6.         Dim z As Integer
  7.  
  8.         Dim limit As Integer
  9.         Randomize()
  10.  
  11.         Console.WriteLine(Chr(10) & "Introduzca el numero de elementos del vector")
  12.         limit = Console.ReadLine
  13.  
  14.         ReDim v(limit - 1)
  15.  
  16.         For i = 0 To v.Length - 1
  17.             v(i) = Int(Rnd() * 10) + 1 'Console.ReadLine
  18.         Next
  19.  
  20.  
  21.           Console.Write(Chr(10) & "El contenido del vector es: ")
  22.  
  23.         For i = 0 To v.Length - 1
  24.             Console.Write(" " & v(i))
  25.         Next
  26.  
  27.             For i = 0 To UBound(v)
  28.  
  29.  
  30.                     For j = i + 1 To UBound(v) - 1 '' me adelanto una pos
  31.  
  32.                         If v(j) = v(i) Then '' Si son iguales...
  33.  
  34.                             For z = j To UBound(v) - 1        '' me pongo en la pos del elemento a borrar
  35.                             If (z <> UBound(v)) Then v(z) = v(z + 1) '' adelanto los elementos 1 lugar
  36.                             Next
  37.  
  38.                             ReDim Preserve v(UBound(v) - 1)
  39.  
  40.                         End If
  41.  
  42.  
  43.                     Next
  44.  
  45.             Next
  46.  
  47.         Console.Write(Chr(10) & "El contenido del vector es: ")
  48.  
  49.         For i = 0 To UBound(v)
  50.             Console.Write(" " & v(i))
  51.         Next
  52.  
  53. Console.ReadKey()
  54.  
  55.  
  56.  

Gracias

62
C/C++ / Re: Limite De Vectores Dinamicos
« en: Martes 23 de Enero de 2007, 15:01 »
Gracias por la sugerencia.

Salu2

63
C/C++ / Re: Limite De Vectores Dinamicos
« en: Lunes 22 de Enero de 2007, 22:09 »
No busco que se me de el code, aunque si alguien lo pone no lo rechazaré.

Me refiero a cómo implementar una función que me de el límite superior de un vector dinámico para poder dimensionarlo y convertirlo a estático.

El cómo podria desarrollarla.

A ver si con un ejemplo se entiende.


Supongamos que tengo un vector N dinámico.

Le introduzco 3 datos y lo que me gustaria implementar, es una función que pasándole el vector me diga que tiene 3 elementos y asi poder hacer realloc.

Código: Text
  1.  
  2.  
  3. int N[];
  4.  
  5. N[0]=1
  6. N[1]=2
  7. N[2]=3
  8.  
  9.  
  10.  

La función que quiero implementar, haría esto x= Ubound(N); dando como resultado x=3

Los métodos que uso actualmente para saber cuántos datos contiene un vector dinámico es una variable global o Sizeof Vector /Sizeof(tipo de dato)

Algún consejo o comentario ?

Salu2

64
C/C++ / Limite De Vectores Dinamicos
« en: Lunes 22 de Enero de 2007, 20:37 »
Hola a todos.

Verán, cuando se migra de un lenguaje como VB a C uno hecha de menos ciertas funciones como Lbound y Ubound que devuelven el elemento inferior y superior del vector.

Me pregunto que cómo puedo hacer una función que haga esto.

De esa forma, trabajar con vectores dinámicos seria más cómodo porque podria
disponer de su longitud en cualquier momento y hacer un realloc.

Por ahora lo que hago, es "llevar la cuenta" de los elementos que introduzco en él
en una variable global y tener cuidado de que no se pase.

O en algunos casos,  almaceno Sizeof vector /Sizeof(tipo de dato) en una variable
y lo redimensiono a ese dato.

Puede decirme alguien cómo puedo implementar esta función u otra forma de hacerlo ?

Gracias

65
C/C++ / Re: Duda Con Bin2h
« en: Sábado 2 de Diciembre de 2006, 18:08 »
Creo que #include "P.H" no esta bien porque meti P.H en el directorio de includes
y al compilar no me dio error.


Gracias por la respuesta.

66
C/C++ / Duda Con Bin2h
« en: Sábado 2 de Diciembre de 2006, 17:21 »
Hola a todos.

Verán, me baje de programmers Heaven una utilidad para C que transforma 1 fichero PE en uno H.

Mi duda es que no se como usarlo. El programa te genera 1 H con 1 matriz de codigo en ASM.

Yo pensaba que para usarlo, habia que copiar la matriz de codigo a un fichero. Pero no funciona.

Les mando 1 RAR con el programa, un fichero de C y el mismo convertido en H
a ver si alguien sabe usarlo.

Alguien puede ayudarme ?

Gracias

67
C/C++ / Re: Duda Acerca De Los Ficheros De Recursos
« en: Domingo 12 de Noviembre de 2006, 03:09 »
Gracias por la respuesta.

Me ha sido de utilidad, y me ha abierto nuevas posibilidades (aplicación multilenguaje)

Salu2

68
C/C++ / Re: Varias Dudas De Borland C++
« en: Sábado 11 de Noviembre de 2006, 12:46 »
Mirate las librerías de C/C++ y los operadores.

También como usar la API

Salu2

69
C/C++ / Duda Acerca De Los Ficheros De Recursos
« en: Sábado 11 de Noviembre de 2006, 12:37 »
Hola a todos.

Verán, tengo una duda acerca de los ficheros de recursos en C.

Resulta que estoy migrando de VB a C y en VB se podía incluir cualquier fichero
dentro del fichero de recursos. Es decir, en VB yo podia meter 1 OCX que sólo era extraido del fichero de recursos cuando lo necesitaba .

Mi problema actual es el siguiente:

He desarrollado un pequeño compilador (nada serio, ejercicios de clase) y me gustaria incluir si es posible los archivos NASM y TLINK dentro de un fichero de recursos asociado al compilador. De esta forma, solo tendria que portar el compilador estando dentro de él el ensamblador y el linkador.

Tambien existen la posibilidades de guardar los binarios como texto y después volcarlos a un archivo, pero me parece un poco cutre la solución o ejecutar un compresor PE que te integre todos los ficheros PE en uno solo.

Es posible incluir los ficheros PE en uno de recursos asociado al compilador sin usar ninguna de las soluciones anteriores ?

Gracias

70
Visual Basic 6.0 e inferiores / Id De Un Boton
« en: Lunes 28 de Agosto de 2006, 10:01 »
Hola a todos.

Vera, tengo una pequeña duda y no se me ocurre solucionarla.

Tengo una ventana con varios botones y necesito enviar 1 click a uno de ellos.

Lo que hago es obtener el handle padre de la ventana, despues el handle de cada boton y obtengo el texto de cada uno de ellos.

Consigo enviar el click al boton, pero no es directo.

El programa compara los textos de los botones.

Se me ha ocurrido que si puedo obtener la ID del boton, pueda hacerlo mas rapido.

Puede decirme alguien como obtener la ID ?


Gracias

71
Diseño de Algoritmos / Disbujo De Algoritmos
« en: Lunes 28 de Agosto de 2006, 01:21 »
Hola a todos.

Conocen algun programa que genere el dibujo de un algorimo desde el codigo ?

He probado Visustin 3.11 y otro parecido pero no son gratis.

Alguna recomendacion ?

Gracias

72
Programación de Archivos del Sistema / Driver Para Usb
« en: Domingo 27 de Agosto de 2006, 23:40 »
Hola a todos.

Esta es mi primera consulta y no se si va esactamente va a aqui.

Verán, he construido un pequeño joystick para el puerto USB.

Cuando lo conecto windows me informa de que ha encontrado nuevo hardware y que instale el driver.

El problema es qué mensaje le tengo que mandar a windows para que desaparezca el globo.

Segun he investigado es un mensaje en el cual se le dice que clase de dispositivo es pero no se como hacerlo.

Puede ayudarme alguien ?

Gracias

Páginas: 1 2 [3]