AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Adresse von GetProcAddress OHNE GetProcAddress ermitteln ;)
Thema durchsuchen
Ansicht
Themen-Optionen

Adresse von GetProcAddress OHNE GetProcAddress ermitteln ;)

Ein Thema von Aphton · begonnen am 18. Aug 2009 · letzter Beitrag vom 19. Aug 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#11

Re: Adresse von GetProcAddress OHNE GetProcAddress ermitteln

  Alt 19. Aug 2009, 09:21
ich vermute mal, daß er es so meint, daß es über diese Funktionen schwerer sein wird, einfach irgendwelche Funktionen zu hocken und auf diese Weise z.B. etwas freizuschalten.

allerdings vermute ich mal, daß die entsprechenden APIs es auch nicht sehr viel anders machen.

PS: ist wem schon aufgefallen, daß _GetModuleAddress im Grunde dem GetModuleHandle gleicht?
(unter WinNT entspricht ja zufällig das Handle der Adresse)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Adresse von GetProcAddress OHNE GetProcAddress ermitteln

  Alt 19. Aug 2009, 09:48
Bzgl GetProcAddress hatte Hagen hier folgendes publiziert:
Delphi-Quellcode:
function GetProcAddr(Module: hModule; Name: PChar): Pointer;
asm
        XOR ECX,ECX // except frame
        PUSH OFFSET @@6
        PUSH DWord Ptr FS:[ECX]
        MOV FS:[ECX],ESP
        PUSH EBP
        PUSH EBX
        MOV EBP,EDX
        AND EAX,not 3
        PUSH EDI
        MOV EDX,[EAX + 03Ch]
        PUSH ESI
        TEST EBP,EBP
        JZ @@5
        CMP Word Ptr [EAX + EDX],'EP
        MOV EDX,[EAX + EDX + 078h]
        JNZ @@5
        ADD EDX,EAX
        TEST EBP,0FFFF0000h
        MOV EBX,EAX
        JZ @@3 // import by ordinal ??
        MOV EAX,[EDX + 018h]
        MOV ECX,[EDX + 020h]
        NOT EAX
@@1: INC EAX
        MOV ESI,EBP
        JZ @@4
        MOV EDI,[EBX + ECX]
        ADD ECX,4
        ADD EDI,EBX
@@2: CMPSB
        JNE @@1
        CMP Byte Ptr [ESI - 1],0
        JNE @@2
        ADD EAX,[EDX + 018h]
        MOV ECX,[EDX + 024h]
        ADD ECX,EBX
        MOVZX EBP,Word Ptr [ECX + EAX * 2]
        INC EBP
@@3: MOV ECX,[EDX + 01Ch]
        DEC EBP
        ADD ECX,EBX
        MOV EAX,[ECX + EBP * 4]
        ADD EAX,EBX
@@4: POP ESI
        POP EDI
        POP EBX
        POP EBP
        POP DWord Ptr FS:[0]
        POP ECX
        RET
@@5: XOR EAX,EAX
        JMP @@4
@@6: MOV EAX,[ESP + 00Ch] // except handler
        PUSH OFFSET @@5
        POP DWord Ptr [EAX + 0B8h]
        SUB EAX,EAX
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Adresse von GetProcAddress OHNE GetProcAddress ermitteln

  Alt 19. Aug 2009, 09:56
Wie himitsu schon ganz richtig vermutete ist das halt ein Weg an OS-Funktionen zu kommen ohne die ganz offensichtlich statisch oder "konventionell dynamisch" zu linken. Insbesondere bei Shareware die für einen bestimmten Zeitraum voll funktionsfähig ist und sich dann totschaltet, ist es ja essentiell, ein halbwegs verlässliches Datum zu bekommen. Das kann man sich mit obiger Funktion holen ohne dass es auf den ersten Blick zu sehen ist. Stichwort Obfuskierung. Dass das keine wirkliche Hürde ist, sollte aber auch jedem klar sein, deswegen schrieb ich "etwas" und den

//Edit: In Zeiten des überall verfügbaren Internets hat die Bedeutung natürlich allgemein abgenommen, und die Bedeutung serverbasierter Authentifizierung stark zugenommen. Brauchemergarneddrübberredde
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Adresse von GetProcAddress OHNE GetProcAddress ermitteln

  Alt 19. Aug 2009, 15:29
Zitat von himitsu:
PS: ist wem schon aufgefallen, daß _GetModuleAddress im Grunde dem GetModuleHandle gleicht?
(unter WinNT entspricht ja zufällig das Handle der Adresse)
Ja klar
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
brechi

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

Re: Adresse von GetProcAddress OHNE GetProcAddress ermitteln

  Alt 19. Aug 2009, 17:33
Fehlen aber noch Forwarded Functions und Ordinals
--> http://uall.cheat-project.com/uallCollection/ -> uallKernel

Und wenn du (laut Titel) nur GetProcAddress haben willst reicht das Handle des Kernel32.dll:

Delphi-Quellcode:
function GetKernelHandle: DWord; stdcall;
asm
  MOV EAX, DWORD PTR FS:[030H]
  TEST EAX, EAX
  JS @@W9X
@@WNT:
  MOV EAX, DWORD PTR [EAX+00CH]
  MOV ESI, DWORD PTR [EAX+01CH]
  LODSD
  MOV EAX, DWORD PTR [EAX+008H]
  JMP @@K32
@@W9X:
  MOV EAX, DWORD PTR [EAX+034H]
  LEA EAX, DWORD PTR [EAX+07CH]
  MOV EAX, DWORD PTR [EAX+03CH]
@@K32:
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:22 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