FORUM DARKERS

Tecnologia & Informática => Programação => Delphi => Topic started by: Dark_Side on 23 de December , 2007, 07:36:39 AM

Title: [Source + Download] Visualizador de Funções Exportadas
Post by: Dark_Side on 23 de December , 2007, 07:36:39 AM
Hi,

Voltando à programação, escrevi mais um outro aplicativo. Optei por utilizar Delphi devido à facilidade de se trabalhar com interfaces gráficas oferecida por ele.

A função deste aplicativo é carregar uma DLL, obter os nomes e os respectivos endereços das funções exportadas por ela e, em seguida, mostrá-los em uma lista. Uma vez listadas, o programa oferece alguns recursos básicos para trabalhar com as funções, como copiar e salvar, por exemplo.

O programa é bastante simples. No geral, o que se deve fazer é escolher uma DLL da lista ou escolher outra manualmente, através do seu nome de arquivo.

Ao desenvolver uma rotina escrita em Assembly, que posteriomente seria utilizada para gerar um shellcode, por exemplo, você poderia utilizar os endereços das funções contidas na DLL kernel32.dll diretamente. Exemplo com a função ExitProcess:


Declaração:

VOID ExitProcess(UINT uExitCode);

Uso:

ExitProcess(0);

Endereço:

7C81CAA2

Exemplo de uso em assembly:


xor eax,eax        ; Zera o registrador
push eax           ; Argumento da função -> valor de EAX = 0
mov eax,0x7C81CAA2 ; Armazena em EAX o endereço da função
call eax           ; Chama a função


Seguem algumas imagens do programa:

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen1.gif)

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen2.gif)

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen3.gif)

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen4.gif)

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen5.gif)

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen6.gif)

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen7.gif)

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen8.gif)

(//http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/screen9.gif)



Source Code + Executável:

http://one.xthost.info/darkside17/proje ... uncoes.rar (http://one.xthost.info/darkside17/projetos/delphi/visualizador_funcoes/visualizador_funcoes.rar)

Bye ;)
Title: Re: [Source + Download] Visualizador de Funções Exportadas
Post by: OnlyOne on 23 de December , 2007, 01:51:51 PM
dou a mao a palmatoria

soft do carvalho !!!!
Title: Re: [Source + Download] Visualizador de Funções Exportadas
Post by: rog on 23 de December , 2007, 09:25:44 PM
putz esse e bem interessante mesmo

sera que vc conseguiria fazer um desse para o parsing de uma relocation table ?

rog
Title: Re: [Source + Download] Visualizador de Funções Exportadas
Post by: lcs on 23 de December , 2007, 09:59:43 PM
Caramba.. pow.. quando eu vejo o que esse cara faz. eu fico ateh triste.. ha um longo caminho a percorrer...

agora o que podemos fazer com isso?
Title: Re: [Source + Download] Visualizador de Funções Exportadas
Post by: Asskiller on 26 de February , 2009, 06:59:30 PM
link off =/
Title: Re: [Source + Download] Visualizador de Funções Exportadas
Post by: Asskiller on 21 de August , 2009, 06:28:49 PM
Poderia upar a source e executavel novamente ?
Title: Re: [Source + Download] Visualizador de Funções Exportadas
Post by: Agressor on 30 de August , 2009, 12:33:52 AM
Quote from: lcs on 23 de December , 2007, 09:59:43 PM
Caramba.. pow.. quando eu vejo o que esse cara faz. eu fico ateh triste.. ha um longo caminho a percorrer...

agora o que podemos fazer com isso?

Rapaz, nao fique triste nao, isso dai eh recurso padrao de varios debuggers como o immunity e tals.

http://www.immunityinc.com/products-immdbg.shtml (http://www.immunityinc.com/products-immdbg.shtml)

Quote from: lcs on 23 de December , 2007, 09:59:43 PM
agora o que podemos fazer com isso?


Bem o Dark_Side jah ta falando ai, manoh. Repara:


Quote from: Dark_Side on 23 de December , 2007, 07:36:39 AM

xor eax,eax        ; Zera o registrador
push eax           ; Argumento da função -> valor de EAX = 0
mov eax,0x7C81CAA2 ; Armazena em EAX o endereço da função
call eax           ; Chama a função


Isso dai eh bom pra fazer shellcode pra o winsux, tipow, repara que o endereco da  funcao exit na API nesse

pacote de servico eh 0x7C81CAA2, ele ta zerando o acumulador extendido (eax) e empurra pra pilha o valor que

estah armazenado nele (endereco do "ARGUMENTO" de exit), que eh 0 (status de sucesso):


C:\>net helpmsg 0

A operação foi concluída com êxito.


Quando uma funcao eh chamada (call ) ele eh executada o seus argumentos sao pegos do topo da stack. 

mov eax,0x7C81CAA2 ;

Acima o endereco eh copiado para eax e logo em seguida a funcao eh executada e pega o 0 do topo da pilha.


call eax           ; Chama a função


Isso dai acima eh a mesma coisa que chamar (call) o endereco, soh que como voce pode ver o endereco de

memoria eh copiado para e eax e o mesmo que eh usado para a chamada.

Enfim, acho que voces devem saber como fazer shellcode  ::) Com relacao ao nosso amigo ali:

Quote from: Asskiller on 21 de August , 2009, 06:28:49 PM
Poderia upar a source e executavel novamente ?


Entao cara, como ja falei isso dai eh recurso de muitos debuggers, tipow, quando voce carrega um prog nele

carrega junto varias API's entao voce vai ter que seguir alguns passos para visualizar os enderecos das funcoes.

Vale lembrar que esse endereco varia muito, cada pacote de serviço possui ele em um determinado lugar. Enfim,

vamos lah usando o olly (http://www.ollydbg.de/odbg108b.zip (http://www.ollydbg.de/odbg108b.zip)):

F3 para procurar um prog qualquer (nao dll =). Aqui carreguei o attrib.exe que ta no %systemroot%\system32 .

Depois de carregado na memoria voce vai la e clica no E:

(http://www.hunterhacker.xpg.com.br/step1.JPG)

Abaixo voce pode ver todos os modulos carregados na memoria (API's)

(http://www.hunterhacker.xpg.com.br/step2.JPG)

Agora se voce quiser ver as funcoes e endereço das mesmas na memoria voce vai la e clica em 'view names',

mandei ali o kernel32:


(http://www.hunterhacker.xpg.com.br/step3.JPG)

Pronto! Voce nao precisa mais do programa do Dark_Side! =) Ali voce pega o endereco de memoria (pra call),

pega o nome das func's ali da direita e tals. No immunity (gosto desse XD) voce vai lah que da ateh pra carregar

as dll's =7

[]'s

Title: Re: [Source + Download] Visualizador de Funções Exportadas
Post by: Overburn on 07 de September , 2009, 02:09:48 AM
cara bem explicado gostei do material.  ;)