![]() |
Funktionen / Proceduren die ein anderes Programm benutzt
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 |
Re: Funktionen / Proceduren die ein anderes Programm benutzt
wenn du ein Programm mit OllyDbg oder anderen Debuggern ausführst solltest du alle module sehen die von der Anwendung genutzt werden.
|
Re: Funktionen / Proceduren die ein anderes Programm benutzt
Wenn du nicht gerade einen Debugger verwenden willst, könntest du den
![]() ciao, Philipp |
Re: Funktionen / Proceduren die ein anderes Programm benutzt
Hi,
@SirThornberry: danke aber das Prgramm kannte ich schon. @c113plpbr: WOW. Das Programm ist echt super :thumb:. Genau so was habe ich gesucht. Danke! Mfg ReDoX |
Re: Funktionen / Proceduren die ein anderes Programm benutzt
es werden aber nur alle statsichen funktionen gelistet...
|
Re: Funktionen / Proceduren die ein anderes Programm benutzt
Hmm du hast recht! :?
Kennst du ein Programm das auch dynamische anzeigt, ist das überhauptmöglich? Mfg ReDoX |
Re: Funktionen / Proceduren die ein anderes Programm benutzt
Zitat:
|
Re: Funktionen / Proceduren die ein anderes Programm benutzt
Liste der Anhänge anzeigen (Anzahl: 1)
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. :oops: Mfg ReDoX |
Re: Funktionen / Proceduren die ein anderes Programm benutzt
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; |
Re: Funktionen / Proceduren die ein anderes Programm benutzt
Hi,
Danke für die Mühe. :-D 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz