Aplicaciones objetos ,DLL
Hoy pongo un tutorial de como crear un DLL hazlo tu mismo y estructura :curl-lip:
¿Que es MASM - RadAsm?
Sintaxis un resumen : MASM : Es soportado por muchos Programas o Sofware Compiladores como en este caso pasare a explicar este Assambler o"Ensamblador" tiene una muy impresionante librería de programador, un repositorio de ejemplos de código, y una extraordinaria documentación para los usuarios del MASM. Assembler de Microsoft.
¿En que te beneficia tener un Lenguaje Ensamblador ?
Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como C, C++, java, C#, Delphi 7 etc. El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy técnicas que serian difíciles, si no es que imposibles de realizar en un lenguaje de alto nivel. El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de la maquina que ningún lenguaje de alto nivel puede ofrecer. Aunque la mayoría de los especialistas en Software desarrolla aplicaciones en lenguajes de alto nivel, que son más fáciles de escribir y de dar mantenimiento, una practica común es re codificar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella en el procesamiento. Los programas residentes y rutinas de servicio de interrupción casi siempre son desarrollados en el lenguaje ensamblador. Los lenguajes de alto nivel fueron diseñados para eliminar las particularidades de una computadora especifica, mientras que un lenguaje ensamblador esta diseñado para una familia especifica de microprocesadores.
Bueno comenzemos con el codigo :snicker:
Aca va el codigo
Declaracion de msg box
Titulo db "Titulo",0
Texto db "By Revenge",0
invoke MessageBox,0,addr Texto,addr Titulo,MB_OK
AHORA COMENZAREMOS DE UNA VEZ CON EL CODIGO
.386
.model flat,stdcall
option casemap:none ; Type processor
include windows.inc ;Librerias ASM
include masm32.inc
include gdi32.inc
include user32.inc
include kernel32.inc
include Comctl32.inc
include comdlg32.inc
include shell32.inc
include oleaut32.inc
include dialogs.inc
;includelib revenge.lib
includelib masm32.lib
includelib gdi32.lib
includelib user32.lib
includelib kernel32.lib
includelib Comctl32.lib
includelib comdlg32.lib
includelib shell32.lib
includelib oleaut32.lib
;;;;;;;;;;;;;;;;;;;;;;;;;;;L1
Funcion PROTO
Thread PROTO
Busqueda PROTO
Localizacion PROTO
ControlData PROTO
RevengeData PROTO
.data
Api db "user32.dll",0
KernelMessage db "PostMessageA",0
Entities db "entitiesmp.dll",0
Engine db "engine.dll",0
FieldInfo db "?GetFieldInfo@CPlayer@@QBEPAVFieldInfo@@XZ",0 ;Field Info
FDX db "?GetPlayerEntityByIndex@CPlayer@@QAEPAVCEntity@@E@Z",0 ;Index Player
LocalPlayer db "?GetLocalPlayer@FieldInfo@@QAEPAVCEntity@@XZ",0 ;Player
Fear db "?UseHorroPotion1@CPlayer@@QAEXXZ",0 ;Fear
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MSGBOX;;;;;;;;
MsgTitulo db "~Revenge~",0
MsgTexto db "Ponga lo que crea necesario que quiera que salga en su proyecto.",0
.code
.data?
ThrdID dd ?
instance dd ?
rango dword ?
hWnd dword ?
cuento dd ?
hinstance dd ?
handle dd ?
estilo dd ?
notecla dd ?
KillerID1 dd ?
KillerID2 dd ?
.code
Punto_de_Inicio proc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD
.if reason==DLL_PROCESS_ATTACH
invoke MessageBox,0,addr MsgTexto,addr MsgTitulo,MB_OK
invoke CreateThread,NULL,NULL,ADDR Thread ,NULL,NULL,NULL
mov eax,OFFSET Bucle
invoke CreateThread,NULL,NULL,eax,\
NULL,NORMAL_PRIORITY_CLASS,\
ADDR ThrdID
invoke CloseHandle,eax
.elseif reason==DLL_PROCESS_DETACH
.elseif reason==DLL_THREAD_ATTACH
.elseif reason== DLL_THREAD_DETACH
.endif
mov eax,TRUE
ret
Punto_de_Inicio Endp
Busqueda proc
sigue:
invoke LoadLibrary,addr Engine
invoke LoadLibrary,addr Entities
invoke GetActiveWindow
termina:
continua:
ret
Busqueda endp
ControlData proc
invoke InitCommonControls
ControlData endp
Thread proc
tecla:
invoke Sleep, 20
invoke GetAsyncKeyState, VK_F1 ; Tecla en donde Se activara la pocion...
test eax, eax
jz tecla
invoke Funcion ;llamado ala funcion y ejecucion de variables....
jmp tecla
ret
Thread endp
RevengeData proc
invoke Sleep,20
invoke CreateThread,NULL,NULL,ADDR Busqueda ,NULL,NULL,NULL
invoke Sleep,20
invoke CreateThread,NULL,NULL,ADDR ControlData ,NULL,NULL,NULL
ret
RevengeData endp
Funcion proc
LOCAL listo:DWORD
LOCAL pot:DWORD
LOCAL Revenge:DWORD
invoke GetModuleHandle, addr Entities
invoke GetProcAddress, eax, addr FDX
call eax
mov Revenge,eax
invoke GetModuleHandle, addr Entities
invoke GetProcAddress, eax, addr FieldInfo
call eax
mov listo,eax
invoke GetModuleHandle, addr Engine
invoke GetProcAddress, eax, addr LocalPlayer
mov ecx, listo
call eax
mov listo,eax
invoke GetModuleHandle, addr Entities
invoke GetProcAddress, eax, addr Fear
mov pot,eax
mov ecx, listo
mov edi, listo
mov eax, pot
call eax
ret
Funcion endp
Bucle proc
@@no:
cmp eax,TRUE
jne @@no
bucle:
invoke Sleep,1
cmp eax,TRUE
je @@no
jmp bucle
ret
Bucle endp
End Punto_de_Inicio
Hemos colocado cookies en su dispositivo para ayudar a mejorar este sitio web. Puede ajustar la configuración de sus cookies, de lo contrario asumiremos que está de acuerdo en continuar.
Aplicaciones objetos ,DLL
Hoy pongo un tutorial de como crear un DLL hazlo tu mismo y estructura :curl-lip:
¿Que es MASM - RadAsm?
Sintaxis un resumen : MASM : Es soportado por muchos Programas o Sofware Compiladores como en este caso pasare a explicar este Assambler o"Ensamblador" tiene una muy impresionante librería de programador, un repositorio de ejemplos de código, y una extraordinaria documentación para los usuarios del MASM. Assembler de Microsoft.
¿En que te beneficia tener un Lenguaje Ensamblador ?
Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como C, C++, java, C#, Delphi 7 etc. El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy técnicas que serian difíciles, si no es que imposibles de realizar en un lenguaje de alto nivel. El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de la maquina que ningún lenguaje de alto nivel puede ofrecer. Aunque la mayoría de los especialistas en Software desarrolla aplicaciones en lenguajes de alto nivel, que son más fáciles de escribir y de dar mantenimiento, una practica común es re codificar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella en el procesamiento. Los programas residentes y rutinas de servicio de interrupción casi siempre son desarrollados en el lenguaje ensamblador. Los lenguajes de alto nivel fueron diseñados para eliminar las particularidades de una computadora especifica, mientras que un lenguaje ensamblador esta diseñado para una familia especifica de microprocesadores.
Bueno comenzemos con el codigo :snicker:
Aca va el codigo
Declaracion de msg box Titulo db "Titulo",0 Texto db "By Revenge",0 invoke MessageBox,0,addr Texto,addr Titulo,MB_OKAHORA COMENZAREMOS DE UNA VEZ CON EL CODIGO
.386 .model flat,stdcall option casemap:none ; Type processor include windows.inc ;Librerias ASM include masm32.inc include gdi32.inc include user32.inc include kernel32.inc include Comctl32.inc include comdlg32.inc include shell32.inc include oleaut32.inc include dialogs.inc ;includelib revenge.lib includelib masm32.lib includelib gdi32.lib includelib user32.lib includelib kernel32.lib includelib Comctl32.lib includelib comdlg32.lib includelib shell32.lib includelib oleaut32.lib ;;;;;;;;;;;;;;;;;;;;;;;;;;;L1 Funcion PROTO Thread PROTO Busqueda PROTO Localizacion PROTO ControlData PROTO RevengeData PROTO .data Api db "user32.dll",0 KernelMessage db "PostMessageA",0 Entities db "entitiesmp.dll",0 Engine db "engine.dll",0 FieldInfo db "?GetFieldInfo@CPlayer@@QBEPAVFieldInfo@@XZ",0 ;Field Info FDX db "?GetPlayerEntityByIndex@CPlayer@@QAEPAVCEntity@@E@Z",0 ;Index Player LocalPlayer db "?GetLocalPlayer@FieldInfo@@QAEPAVCEntity@@XZ",0 ;Player Fear db "?UseHorroPotion1@CPlayer@@QAEXXZ",0 ;Fear ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MSGBOX;;;;;;;; MsgTitulo db "~Revenge~",0 MsgTexto db "Ponga lo que crea necesario que quiera que salga en su proyecto.",0 .code .data? ThrdID dd ? instance dd ? rango dword ? hWnd dword ? cuento dd ? hinstance dd ? handle dd ? estilo dd ? notecla dd ? KillerID1 dd ? KillerID2 dd ? .code Punto_de_Inicio proc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD .if reason==DLL_PROCESS_ATTACH invoke MessageBox,0,addr MsgTexto,addr MsgTitulo,MB_OK invoke CreateThread,NULL,NULL,ADDR Thread ,NULL,NULL,NULL mov eax,OFFSET Bucle invoke CreateThread,NULL,NULL,eax,\ NULL,NORMAL_PRIORITY_CLASS,\ ADDR ThrdID invoke CloseHandle,eax .elseif reason==DLL_PROCESS_DETACH .elseif reason==DLL_THREAD_ATTACH .elseif reason== DLL_THREAD_DETACH .endif mov eax,TRUE ret Punto_de_Inicio Endp Busqueda proc sigue: invoke LoadLibrary,addr Engine invoke LoadLibrary,addr Entities invoke GetActiveWindow termina: continua: ret Busqueda endp ControlData proc invoke InitCommonControls ControlData endp Thread proc tecla: invoke Sleep, 20 invoke GetAsyncKeyState, VK_F1 ; Tecla en donde Se activara la pocion... test eax, eax jz tecla invoke Funcion ;llamado ala funcion y ejecucion de variables.... jmp tecla ret Thread endp RevengeData proc invoke Sleep,20 invoke CreateThread,NULL,NULL,ADDR Busqueda ,NULL,NULL,NULL invoke Sleep,20 invoke CreateThread,NULL,NULL,ADDR ControlData ,NULL,NULL,NULL ret RevengeData endp Funcion proc LOCAL listo:DWORD LOCAL pot:DWORD LOCAL Revenge:DWORD invoke GetModuleHandle, addr Entities invoke GetProcAddress, eax, addr FDX call eax mov Revenge,eax invoke GetModuleHandle, addr Entities invoke GetProcAddress, eax, addr FieldInfo call eax mov listo,eax invoke GetModuleHandle, addr Engine invoke GetProcAddress, eax, addr LocalPlayer mov ecx, listo call eax mov listo,eax invoke GetModuleHandle, addr Entities invoke GetProcAddress, eax, addr Fear mov pot,eax mov ecx, listo mov edi, listo mov eax, pot call eax ret Funcion endp Bucle proc @@no: cmp eax,TRUE jne @@no bucle: invoke Sleep,1 cmp eax,TRUE je @@no jmp bucle ret Bucle endp End Punto_de_Inicio