PDA

Ver la Versión Completa : Probando el emsamblador de Delphi


Mav
28-10-2007, 20:30:20
program Ejecutor;

uses
Windows;

const

WM_CHAR= $0102 ;

var
miHandle : DWORD ;
data : string ;
App :string ='Notepad.exe';
Wndclass : string = 'Notepad';
Childclass : string= 'Edit';

begin
data := ' Estamos probando como funciona el assembler'+ #13#10+
'en Delphi y como no tenemos ni idea, no sabemos'+#13#10+
'que sucederà .'+#13#10+
'Bueno, no tenemos ni idea de Delphi,'+#13#10+
'en ensamblador , algo si sabemos ,es el primer len-'+#13#10+
'guaje de programación que nos pusimos a intentar '+#13#10+
'aprender o debí escribir aprehender............'+#13#10+
'¿ End ?' ;


asm
pushad
push SW_SHOW
push dword ptr [App ]
call WinExec
push 0
push dword ptr [Wndclass]
call FindWindow
push 0
push Childclass
push 0
push eax
call FindWindowEx
mov [miHandle], eax
mov edx, data
@@eti1:
xor eax, eax
mov al ,byte [edx]
or al, al
jz @@eti2
push edx
push 0
push eax
push WM_CHAR
push [miHandle]
call SendMessage
push 100
call Sleep
pop edx
inc edx
jmp @@eti1
@@eti2:
push 0
call ExitProcess
popad


end;


end.


program segundo;

uses
Windows;

const

SCRCOPY=$00cc0020 ;

var
ancho WORD;
alto WORD;
contador WORD;
HDC WORD;

begin
asm
push SM_CXSCREEN
call GetSystemMetrics
mov [ancho], eax
push SM_CYSCREEN
call GetSystemMetrics
mov [alto], eax
shr eax, 1
mov contador, eax
push 0
call GetDC
mov [HDC], eax
@@eti1:
push SCRCOPY
push 0
push 0
push [HDC]
push [alto]
push [ancho]
push 1
push 1
push [HDC]
call BitBlt
dec [alto]
dec [contador]
jnz @@eti1
push [HDC]
push 0
call ReleaseDC
push 0
call ExitProcess

end;

end.

dec
28-10-2007, 20:42:10
Hola,

:confused: :confused: :rolleyes: :rolleyes: :eek: :eek: :) :p ;) :D

ArdiIIa
28-10-2007, 20:53:39
Estamos probando como funciona el assembler
en Delphi y como no tenemos ni idea, no sabemos
que sucederà .
Bueno, no tenemos ni idea de Delphi,
en ensamblador , algo si sabemos ,es el primer len-
guaje de programación que nos pusimos a intentar
aprender o debí escribir aprehender............
¿ End ?


Está bien...:D

aeff
29-10-2007, 17:57:50
ostias! no entiendo ni papa de lo que puso este arriba, tendre que probarlo,

o ya lo probaron ustedes?

cHackAll
29-10-2007, 19:41:40
uses Windows, Messages;

var
hWnd, Pos: Cardinal;
Str: PChar = ' Estamos probando como funciona el assembler'#13+
'en Delphi y como no tenemos ni idea, no sabemos'#13+
'que sucederà .'#13+
'Bueno, no tenemos ni idea de Delphi,'#13+
'en ensamblador , algo si sabemos ,es el primer len-'#13+
'guaje de programación que nos pusimos a intentar '#13+
'aprender o debí escribir aprehender............'#13+
'¿ End ?';

begin
Pos := 0;
WinExec('notepad.exe', SW_SHOW);
hWnd := FindWindowEx(FindWindow('Notepad', nil), 0, 'Edit', nil);
while Str[Pos] <> #0 do
begin
SendMessage(hWnd, WM_CHAR, Integer(Str[Pos]), 0);
Sleep(100);
Inc(Pos);
end;
end.

ésto es un desafio (http://www.clubdelphi.com/foros/showthread.php?p=216189)?

:cool: mmm....

Mav
29-10-2007, 23:26:38
Compilandolo y ejecutandolo , te abre el bloc de notas
y te escribe un texto..

aeff
31-10-2007, 03:10:04
Eso si que está súper!! donde lo aprendiste a hacer??

aeff
31-10-2007, 03:16:13
me he quedado asombrado, me pueden explicar, así que los parametros de las funciones se almacenan en la Pila?? oye eso! nunca me lo habia inmaginado, "el primero en meter es el ultimo en sacar"

je je je!

Black_Ocean
28-03-2008, 06:51:13
Eso si que está súper!! donde lo aprendiste a hacer??

Amigo,

El código ensamblador no es nada del otro mundo, todo se logra con paciencia, el aprendizaje y la práctica, Acaso como crees que se practica la ingeniería inversa? Primeramente, dominando el ASM y Hexadecimal, Si fuera algo tan escondido, no habría los millones de reverse enginers que hay en la actualidad (en jerga, conocidos como crackers). Ellos dominan estos temas como si fuera jugar al dominó, yo he conversado con varios reverse engineers rusos y de otros países por IRC que me asombran como dominan estos temas. De hecho, por ellos me he motivado a leer y aprender de a poco Assembler, pero para mi caso, para Delphi y para manejar el OllyDBG y el DeDe (depuradores/desensambladores).

Aprende y practica como yo también lo estoy haciendo y entenderás su lógica y el por qué se usa en cuestión.

En Delphi, se implementó primeramente para que el programador pudiera optimizar rutinas y procedimientos en tiempo de ejecución, lo que se agradece enormemente que borland lo haya implementado desde el principio en este gran lenguaje, cosa que en Visual Basic 6 no es posible "en si". Lo otro, es que Delphi al compilar automáticamente genera código ensamblador, lo que permite un mejor desempeño en tiempo de ejecución, en cambio Visual Basic 6 genera código interpretado, lo que hace que sea más lento en tiempo de ejecución. En ese aspecto, Delphi está mejor diseñado.

Saludos.