Criando e usando DLLs em assembly

Iniciado por Anonymous, 04 de Outubro , 2006, 12:08:33 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Anonymous

Peguei esses exemplos do compilador FASMW que vem com alguns exemplos (duh).
Aqui vai o código da DLL:
; DLL creation example

format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32a.inc'

section '.code' code readable executable

proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax,TRUE
ret
endp

; VOID ShowErrorMessage(HWND hWnd,DWORD dwError);

proc ShowErrorMessage hWnd,dwError
  local lpBuffer:DWORD
lea eax,[lpBuffer]
invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0
invoke MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK
invoke LocalFree,[lpBuffer]
ret
endp

; VOID ShowLastError(HWND hWnd);

proc ShowLastError hWnd
invoke GetLastError
stdcall ShowErrorMessage,[hWnd],eax
ret
endp

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
  user,'USER32.DLL'

  import kernel,\
GetLastError,'GetLastError',\
SetLastError,'SetLastError',\
FormatMessage,'FormatMessageA',\
LocalFree,'LocalFree'

  import user,\
MessageBox,'MessageBoxA'

section '.edata' export data readable

  export 'ERRORMSG.DLL',\
ShowErrorMessage,'ShowErrorMessage',\
ShowLastError,'ShowLastError'

section '.reloc' fixups data discardable
Agora compile com o Fasm. E para usar a DLL use o  seguinte programa:
format PE GUI 4.0
entry start

include 'win32a.inc'

section '.code' code readable executable

  start:
invoke ShowLastError,HWND_DESKTOP
invoke ExitProcess,0

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
  errormsg,'ERRORMSG.DLL'

  import kernel,\
ExitProcess,'ExitProcess'

  import errormsg,\
ShowLastError,'ShowLastError'

Explicando:
O código da DLL cria uma função (ShowLastError) que consegue o último erro do aplicativo.
E o segundo, o programa, usa a função ShowLastError.

Breve estarei fazendo as minhas, heheh. Espero que consigam tirar proveito disso.

BRUNA

Tópico muito show "Sthealt"

Entendendo as DLLs

Qualquer usuário de computador já ouviu a tradicional explicação dos analistas de suporte: "isso deve ser problema em alguma DLL". O que é, afinal, essa DLL que provoca tantos problemas?

DLLs (Dynamic Link Libraries, ou Bibliotecas de Vínculo Dinâmico) são arquivos que contém componentes de programas.

Quando os desenvolvedores criam um programa, eles não colocam todas as funções do programa em um arquivo só. Eles separam algumas delas e colocam em arquivos auxiliares. Desta forma, você passa a ter um EXE que contém o programa principal, e várias DLLs que contém rotinas utilizadas pelo programa principal.

Existem pelo menos dois grandes benefícios em criar programas dessa forma: o primeiro é que você pode compartilhar funções entre programas distintos. Por exemplo, a Microsoft pode disponibilizar uma função em um arquivo DLL que pode ser usada por vários programas, de empresas diferentes. O segundo benefício é que as atualizações das funções ficam mais fáceis, pois você pode apenas alterar uma DLL, sem precisar reinstalar todo o programa.


Site de todas os arquivos desaparecidos ou corrompidos com a extensão.dll
http://www.dll-files.com/

Outros arquivos :ocx,dll,sys,vxd
http://www.windll.com/

vuln

Ótimo tópico. Stealth como sempre com seus códigos em ASM fabulosos =) parabéns.
"O amor por princípio, a Ordem por base, o progresso por objetivo."

Anonymous

Algum dia ainda quero chegar ao nível de assembly do Ricardo heheh, os códigos dele são fabulosos.

vuln

Ricardo é algum usuário do Fórum?  :-\
"O amor por princípio, a Ordem por base, o progresso por objetivo."

Anonymous


vuln

É.. realmente os tópicos dele são espetaculares.
"O amor por princípio, a Ordem por base, o progresso por objetivo."