Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Noticias
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Colaboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 05/08/2006
dec's Avatar
dec dec is offline
Moderador
 
Join Date: Dec 2004
Location: Alcobendas, Madrid, España
Posts: 13,145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Muchas gracias como siempre Seoane.

Código Delphi [-]

/* Itento de comprensión del código fuente */

program Matrix;

uses Windows;

function SwallowRedpill: Boolean;
var
  RedPill: array[0..7] of byte; // Hum...
  m: array[0..5] of byte;       // + Hum...
  p: procedure; stdcall;        // ++ Hum...
begin
  // Vale, vale, por algún sitio hay que empezar...
  RedPill[0]:= $0f; RedPill[1]:= $01; RedPill[2]:= $0d; RedPill[3]:= $00;
  RedPill[4]:= $00; RedPill[5]:= $00; RedPill[6]:= $00; RedPill[7]:= $c3;

  // ¿Pero esto qué es lo que es? :-)
  PPointer(@RedPill[3])^:= @m;
  
  // ¿Y adónde vamos ahora?
  p:= @RedPill;
  
  // Y ahora ejecutamos... ¿el qué? XD
  p();
  
  // Menos mal... ;´)
  Result:= m[5] > $d0;
end;

begin
  if SwallowRedpill then
    // Para que te enteres macho...
    MessageBox(0,'Estas dentro de Matrix','Matrix',MB_OK)
  else
    // A ver qué va a pasar, ¿eh? 
    MessageBox(0,'Estas fuera de Matrix','Matrix',MB_OK);
end.

/* Fin del intento de comprensión del código fuente */

/* Resultados sobre 10: 2                           */

/* ¡Ouch! ^_* */
__________________
David Esperalta
www.decsoftutils.com

Last edited by dec : 05/08/2006 at 15:49.
Reply With Quote
  #2  
Old 05/08/2006
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
seoane Va por buen camino
Tienes razón dec, la función quedo bastante extraña al intentar hacer una traducción mas o menos literal de la función en C. Pero viéndolo ahora con mas calma, recuerdo que Delphi permite escribir código en ensamblador sin tener que hacer este tipo de malabares.

La cosa ahora quedaría así:
Código Delphi [-]
function SwallowRedpill: Boolean;
var
  m: array[0..5] of byte;
begin
  // La instruccion SIDT nos devuelve el registro IDRT
  asm    
    SIDT m
  end;
  // Este valor toma unos valores caracteristicos si el sistema 
  // se ejecuta de forma virtual, vmware=$FF, VirtualPC=$E8, etc ... 
  Result:= m[5] > $d0;
end;

begin
  if SwallowRedpill then
    MessageBox(0,'Estas dentro de Matrix','Matrix',MB_OK)
  else
    MessageBox(0,'Estas fuera de Matrix','Matrix',MB_OK);
end.
Attached Files
File Type: zip Matrix.zip (9.5 KB, 40 views)
Reply With Quote
  #3  
Old 05/08/2006
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
seoane Va por buen camino
Quote:
Originally Posted by dec
// ¿Pero esto qué es lo que es? :-)
PPointer(@RedPill[3])^:= @m;
Esto querido dec es la traducción mas o menos literal de esto otro:
Quote:
*((unsigned*)&rpill[3]) = (unsigned)m;
¿Que te parece?
Reply With Quote
  #4  
Old 05/08/2006
dec's Avatar
dec dec is offline
Moderador
 
Join Date: Dec 2004
Location: Alcobendas, Madrid, España
Posts: 13,145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno... pues con el ensamblador ya lo has terminado de arreglar...

Pero se agradece el intento. Lo cierto es que no podemos estar en todo, ¿que no?

PD. Al menos hoy prefiero verlo así...
__________________
David Esperalta
www.decsoftutils.com

Last edited by dec : 05/08/2006 at 22:08.
Reply With Quote
  #5  
Old 05/08/2006
Lepe's Avatar
[Lepe] Lepe is offline
Miembro Premium
 
Join Date: May 2003
Posts: 7,424
Poder: 31
Lepe Va por buen camino
Quote:
Originally Posted by dec
Hola,

Bueno... pues con el ensamblador ya lo has terminado de arreglar...
Estoy totalmente de acuerdo con dec.

__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Reply With Quote
  #6  
Old 05/08/2006
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola, yo de esto no entiendo nada. Pero nada de nada. Así que asustado me puse a probar la función y obtuve: "Estas dentro de matrix" Pero luego, me puse a ejecutarla varias veces seguidas y unas veces me dice que estoy dentro y otras que estoy fuera, algo casi aleatorio. ¿Me pueden explicar?

// Saludos
Reply With Quote
  #7  
Old 06/08/2006
mamcx's Avatar
mamcx mamcx is offline
Moderador
 
Join Date: Sep 2004
Location: Medellín - Colombia
Posts: 3,941
Poder: 28
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Eso es porque estas corriendo sicodelicamente intentando alcanzar la meta y recibes espamos de realidad.

Ten cuidado, al llegar, te desplomas.

__________________
El malabarista.
Reply With Quote
  #8  
Old 06/08/2006
mamcx's Avatar
mamcx mamcx is offline
Moderador
 
Join Date: Sep 2004
Location: Medellín - Colombia
Posts: 3,941
Poder: 28
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
De todas maneras aunque tampoco me va muy bien con algo tan de bajo nivel conceptualmente es un hack, que viendolo bien, es obvio. Eso es lo mas preocupante.
__________________
El malabarista.
Reply With Quote
  #9  
Old 05/08/2006
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,702
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Quote:
Originally Posted by seoane
Esto querido dec es la traducción mas o menos literal de esto otro:

*((unsigned*)&rpill[3]) = (unsigned)m;

¿Que te parece?
aaahhhh!!!, bueno, eso ya es otra cosa... ahora sí que está claro
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 10:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi