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 - Eternal Idol

#1281
¿Solo tenes un archivo .DLL? Consegui el .h para incluir, si tenes (o creas) un .lib de importacion podes hacer enlace estatico y sino tendras que hacer dinamico (LoadLibrary + GetProcAddress).
#1282
Cita de: MeCraniDOS en  4 Julio 2014, 14:44 PM
El problema era que estaba utilizando DWORD, y solo incementaba el contador en 1, por lo que sumaba el valor y luego 3 ceros hasta el siguiente numero, pero se soluciona multiplicando como has hecho  ;D

Otra cosita, utilizando DWORD, no malgastarias memoria? (En este caso, ya que los numeros no son de mas de dos cifras)  :silbar:

En el codigo de C estabas usando int, que es un DWORD con signo.

Cita de: MeCraniDOS en  4 Julio 2014, 14:44 PMEn este caso podría utilizar WORD? que ocupa 2 bytes y es numerico

Un BYTE puede representar valores entre 0 y 255 asi que en este caso no necesitas un WORD tampoco ... y no, no podes usar add directamente con un WORD, vas a tener que pasarlo a un registro como con BYTE anteriormente; o usar el registro correspondiente en su lugar (al, ax, eax, rax).
#1283
No se cual seria el problema al dividir que tenias  ;D

Y si usas DWORD:
Código (asm) [Seleccionar]
add eax, [vector + ecx * 4]
#1284
Cita de: MeCraniDOS en  4 Julio 2014, 00:20 AM

Le he hecho en C para que se entienda mejor


   int eax=0, ecx=0;
   int Vector[] = {7,8,5,2,9,1,0,3};

   for(ecx=0;ecx<8;ecx++)
   {
        eax += Vector[ecx];
   }

   eax /= ecx;


Entonces lo que quería saber era si se podía inicializar como lo he hecho en C

Evidentemente entonces lo habia entendido bien.

Cita de: MeCraniDOS en  4 Julio 2014, 00:20 AMPor cierto, dos cosas, la rutina for_div se puede simplificar? Es que en arm lo tenia que hacer asi porque no hay operacion de division, pero en asm he visto que si, pero solo pones el registro a dividir, no entre que valor lo quieres dividir  :huh: :huh:

Código (asm) [Seleccionar]
mov ECX, 25 ;dividimos por 25
cdq ;limpiamos EDX
idiv ECX ;EDX:EAX es dividido por ECX
;EAX=COCIENTE EDX=RESTO


Cita de: MeCraniDOS en  4 Julio 2014, 00:20 AM
Y la otra, que diferencia hay entre esto?

Código (asm) [Seleccionar]
vector db 7, 8, 5, 2 ,9 ,1 ,0, 3
Código (asm) [Seleccionar]
vector rb 8

Pensaba que db era para una unica variable, y rb (reserved byte) para vectores, ya que especificas cuanto espacio quieres reservar  :rolleyes:

Notese que estas usando char (byte, db/rb), si queres usar un int usa dword (y el add puede ser directo).

db:
char Vector[] = {7,8,5,2,9,1,0,3};
rb:
char Vector[8];
#1285
ASM / Re: Problema con el PEB
4 Julio 2014, 08:39 AM
Y si, el error esta en esa linea, EBX ya no es mas un puntero a AddressOfFunctions (no a la ExportTable como dice tu comentario en el codigo) sino que apunta a la cadena de la primera funcion exportada. Con un simple push/pop EBX entre el inc EDX y el mov ESI, EBX se soluciona.
#1286
No se si entendi muy bien:
Código (asm) [Seleccionar]
vector db 1, 2, 3, 4, 5
...
movzx edx, byte [vector+ecx]
add eax, edx

#1288
DriverEntry, es un modulo de modo Kernel. Eso no es el codigo fuente, es una especie de descompilacion ...