AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Funktionen / Proceduren die ein anderes Programm benutzt
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionen / Proceduren die ein anderes Programm benutzt

Ein Thema von ReDoX · begonnen am 19. Mai 2005 · letzter Beitrag vom 19. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
ReDoX
(Gast)

n/a Beiträge
 
#1

Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 06:20
Hi,
Gibt es eine Möglichkeit die Function/Proceduren die ein anderes Programm benutzt auszulesen?
Mir würden schon die Namen vieleicht auch noch die dll in der sie enthalten sind reichen.
Vieleicht aus der exe?
Oder aus dem Laufenden Prozess?
Das ganze sollte, wenns möglich ist, unter WinXP laufen.


Mfg ReDoX
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 06:24
wenn du ein Programm mit OllyDbg oder anderen Debuggern ausführst solltest du alle module sehen die von der Anwendung genutzt werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 12:25
Wenn du nicht gerade einen Debugger verwenden willst, könntest du den Dependency Walker ausprobieren. Mit der Funktion "Start Profiling" startet der das Programm und listet dir alle DLL-Importe & alle Funktionsaufrufe auf.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
ReDoX
(Gast)

n/a Beiträge
 
#4

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 12:43
Hi,

@SirThornberry: danke aber das Prgramm kannte ich schon.
@c113plpbr: WOW. Das Programm ist echt super . Genau so was habe ich gesucht.
Danke!

Mfg ReDoX
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#5

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 12:55
es werden aber nur alle statsichen funktionen gelistet...
  Mit Zitat antworten Zitat
ReDoX
(Gast)

n/a Beiträge
 
#6

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 13:03
Hmm du hast recht!
Kennst du ein Programm das auch dynamische anzeigt, ist das überhauptmöglich?

Mfg ReDoX
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 13:06
Zitat von ReDoX:
Hmm du hast recht!
Kennst du ein Programm das auch dynamische anzeigt, ist das überhauptmöglich?
Menu "Profile/Start Profiling" und Testlauf durchführen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
ReDoX
(Gast)

n/a Beiträge
 
#8

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 13:32
Ok.
Aber ich bekomme noch immer keine "Funktions Namen" ich bekomme so was wie im Anhang.
Das ist ein einfaches Delphi Project mit einen MessageBox die im OnCreate aufgerufen wird.
Aber ich sehe nur welche dlls geladen werden...
So wie ich mir das vorstelle müsste sich da irgendwo so was befinden wie: MessageBoxA aus user32.dll aufgerufen.

Mfg ReDoX
Angehängte Dateien
Dateityp: txt depend_735.txt (24,5 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#9

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 14:29
hab da mal was gemacht:

Delphi-Quellcode:
procedure ListImports(dllbasep, importp: pointer);
type timportblock = record
                      Characteristics: cardinal;
                      TimeDateStamp: cardinal;
                      ForwarderChain: cardinal;
                      Name: pchar;
                      FirstThunk: pointer;
                    end;
     pimportblock = ^timportblock;
var myimport: pimportblock;
    myimportf: pointer;
    thunks: ^pointer;
    dllname, importname: pchar;
begin
  myimport := importp;
  dllname := pointer(integer(dllbasep)+integer(myimport^.name));
  while (myimport^.FirstThunk <> nil) do
  begin
    thunks := pointer(integer(myimport^.FirstThunk)+integer(dllbasep));
    while thunks^ <> nil do
    begin
      if (cardinal(thunks^) > cardinal(dllbasep)) then
      begin
        importname := pchar(cardinal(thunks^) mod $10000);
      end else
      begin
        myimportf := pointer(integer(dllbasep)+integer(thunks^)+2);
        importname := pchar(myimportf);
      end;
      Form1.ListBox1.items.add(importname+' impoted from '+dllname);
      inc(thunks,1);
    end;
    myimport := pointer(integer(myimport)+sizeof(timportblock));

    dllname := pointer(integer(dllbasep)+integer(myimport^.name));
  end;
end;


procedure ShowImports(dllname: pchar); stdcall;
var IDH: PImageDosHeader;
    read,memsize: cardinal;
    filemem, all: pointer;
    INH: PImageNtHeaders;
    seca: cardinal;
    sectionh: PImageSectionHeader;
    i, h: integer;
    filesize: cardinal;
begin
  h := CreateFile(dllname,GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  if h <> -1 then
  begin
    filesize := GetFileSize(h,nil);
    filemem := VirtualAlloc(nil,filesize,MEM_COMMIT or MEM_RESERVE,PAGE_EXECUTE_READWRITE);
    if filemem <> nil then
    begin
      readfile(h,filemem^,filesize,read,nil);
      IDH := filemem;
      if IDH^.e_magic = IMAGE_DOS_SIGNATURE then
      begin
        INH := pointer(cardinal(filemem)+cardinal(IDH^._lfanew));
        if INH^.Signature = IMAGE_NT_SIGNATURE then
        begin
          sectionh := pointer(cardinal(INH)+cardinal(sizeof(TImageNtHeaders)));
          memsize := INH^.OptionalHeader.SizeOfImage;
          if memsize <> 0 then
          begin
            all := virtualalloc(nil,integer(memsize),MEM_COMMIT or MEM_RESERVE,PAGE_EXECUTE_READWRITE);
            if all <> nil then
            begin
              seca := INH^.FileHeader.NumberOfSections;
              for i := 0 to seca-1 do
              begin
                CopyMemory(pointer(cardinal(all)+sectionh^.VirtualAddress),
                  pointer(cardinal(filemem)+cardinal(sectionh^.PointerToRawData)),
                  sectionh^.SizeOfRawData);
                sectionh := pointer(integer(sectionh)+sizeof(TImageSectionHeader));
              end;
              ListImports(pointer(cardinal(all)), pointer(cardinal(all)+INH^.OptionalHeader.DataDirectory[1].VirtualAddress));
            end;
          end;
        end;
      end;
      VirtualFree(filemem,filesize,MEM_DECOMMIT);
    end;
    CloseHandle(h);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowImports(pchar(paramstr(0)));
end;
  Mit Zitat antworten Zitat
ReDoX
(Gast)

n/a Beiträge
 
#10

Re: Funktionen / Proceduren die ein anderes Programm benutzt

  Alt 19. Mai 2005, 15:07
Hi,
Danke für die Mühe.
Da ich einige Teile des Sources nicht verstehe muss ich ihn mir mal in ruhe angucken.
Aber das ist noch immer nicht genau das was ich wollte. Sorry.
So stelle ich mir das vor :
Ich lade eine Exe mit dem Programm / oder das Programm ist schon gestartet danach
drücke ich einen Button [START] das Programm loggt alle functionen die aufgerufen werden bis ich einen Button [STOP] drücke.

Mfg ReDoX
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz