AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..
Thema durchsuchen
Ansicht
Themen-Optionen

SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

Ein Thema von Zacherl · begonnen am 10. Sep 2007 · letzter Beitrag vom 11. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 18:36
Hey,

ich bräuchte einen SetLength Ersatz, welcher lediglich mit "C Funktionen" und "C Datentypen" arbeitet. Erzeuge ich mittels CreateRemoteThread einen Thread in einer fremden Anwendung und verwende darin SetLength für ein dynamisches Array stürzt das Programm ab, weil SetLength String, etc verwendet, was es ja in anderen Anwendungen nur als PChar gibt. Daher erscheint eine Zugriffsverletzung.

Ideal wäre eine ASM Funktion für dynamische Byte Arrays

Vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 18:43
Wie hast du denn diese Funktion in die andere Anwendung gebracht.
du dürftest nämlich nicht nur nicht "setlength" aufrufen können, sondern alle Funktionen die du nicht mitnimmst gehen dir verloren.
Keine Ahnung, was du machen willst. Da es aber am günstigstens ist in so einem Thread nur API-Funktionen zu verwenden (da die ja bekanntlich immer da sind), kannst du dich ja mal nach nem SafeArray umschauen.

Und was meinst du mit ASM-Lösung?
Speicher alloziieren (wahrscheinlich ohne Speichermanager) und los gehts
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 19:05
Er will einen Thread in ein anderes Programm (z.B.: Explorer) erstellen. Doch das problem mit Delphi ist das du alle Funktionen die du benutzt auch infiziert müsstest und die Addressen wo die Funktionen sich befinden auch nachher speichern/infizieren müsstest damit das Programm diese wieder findet. Deswegen benutze lieber die Windows API, zum Beispiel: statt Length lieber lstrlen, usw.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 19:56
So okey .. habs halt jetzt ohne Array sondern mit einem Pointer gelöst. Mein Problem war, dass ich mittels MMF erst ein paar Längenbytes und dann den Content geschickt habe. Das Längenbyte wollte ich natürlich nicht im Result haben. Naja mit dem Pointer ü Offset gehts auch
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 22:19
Zitat von ErazerZ:
Doch das problem mit Delphi ist
Und mit C++ wäre das anders? Kann ich mir jetzt nicht vorstellen.
Am einfachsten ist es einen LoadLibrary Aufruf in die Fremdanwendung zu injezieren, der dann eine eigene DLL nachlädt. Dadurch kann man ganz normal arbeiten, hat einen Speichermanager und die RTL zur Verfügung.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 22:23
Ja das ist natürlich am einfachsten. Doch ist wirklich so .. wenn man im RemoteThread beispielsweise nur eine String Variable deklariert stürzt das ganze ab. Ist in C für die spezifischen Datentypen aber sicher auch so. Muss halt entweder ASM sein, oder pure API Aufrufe.
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#7

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 22:27
Lass mal das ASM aus deinen Posts raus, krieg da immer son *hicks wenn ich das lese
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 22:28
Zitat von jbg:
Zitat von ErazerZ:
Doch das problem mit Delphi ist
Und mit C++ wäre das anders? Kann ich mir jetzt nicht vorstellen.
Habe ich leicht gesagt das es in C++ anders geht?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 10. Sep 2007, 22:34
Zitat von Vjay:
Lass mal das ASM aus deinen Posts raus, krieg da immer son *hicks wenn ich das lese
Warum?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: SetLength Ersatz? ASM? Ohne Delphi spezifische Typen ..

  Alt 11. Sep 2007, 10:08
Zitat von Zacherl:
Ja das ist natürlich am einfachsten. Doch ist wirklich so .. wenn man im RemoteThread beispielsweise nur eine String Variable deklariert stürzt das ganze ab. Ist in C für die spezifischen Datentypen aber sicher auch so. Muss halt entweder ASM sein, oder pure API Aufrufe.
Das soll auch so sein. Denn Delphi benutzt für die Stringverwaltung ein paar Funktionen aus der Unit System. Und wenn du keine DLL injezierst, sondern nur deine Funktion kommt es irgendwann zum Aufruf von irgendeiner _LStr***-Funktion . Der funktioniert in deinem Remotethread allerdings nicht mehr, da der Aufruf ja nur ein relativer Sprung von deiner aktuellen Position ist. Und der gilt nur für deinen Prozess. Die Wahrscheinlichkeit, dass in dem anderen Prozess (selbst wenn er mit Delphi compiliert wurde) genau an dieser relativen Adresse von deinem alloziierten Speicherplatz aus (für deine RemoteFunktion) genau diese Funktion (_Lstr***) steht, ist geringer als ein Lottogewinn.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  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 17:36 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