Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: WinAPI ::  Konstanter Speicherplatz     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 16:50:48 27.01.2012   Titel:   Konstanter Speicherplatz            Zitieren

Hallo.
Ich habe mal wieder eine Frage: Wie kann man einem Programm anweisen, eine Variable immer an die selbe Stelle im RAM zu speichern. Sinn der Sache soll sein, das man mit folgendem Code einen Integer-Wert auslesen kann
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include
<Windows.h>

using namespace std;

int main()
{
   HWND hWnd;
   DWORD procid;
   HANDLE hProc;
   DWORD rw = 0;

   int adress = 0x001B9000;
   int buffer = 0;

   hWnd = FindWindow(0, "Opfer");

   if (!hWnd)
      return 0;

   GetWindowThreadProcessId(hWnd, &procid);

   hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid);
     
      if (ReadProcessMemory(hProc, (LPCVOID)adress, &buffer, sizeof(buffer), &rw))
      {
         cout << "Lesen erfolgreich . . ." << endl;
         cout << buffer << endl;
      }
   
      buffer++;

      if (WriteProcessMemory(hProc, (LPVOID)adress, &buffer, sizeof(buffer), &rw))
      {
         cout << "Schreiben erfolgreich . . ." << endl;
      }

   CloseHandle(hProc);

   system("PAUSE");
   return 0;
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include
<Windows.h>

using namespace std;

int main()
{
HWND hWnd;
DWORD procid;
HANDLE hProc;
DWORD rw = 0;

int adress = 0x001B9000;
int buffer = 0;

hWnd = FindWindow(0, "Opfer");

if (!hWnd)
return 0;

GetWindowThreadProcessId(hWnd, &procid);

hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid);

if (ReadProcessMemory(hProc, (LPCVOID)adress, &buffer, sizeof(buffer), &rw))
{
cout << "Lesen erfolgreich . . ." << endl;
cout << buffer << endl;
}

buffer++;

if (WriteProcessMemory(hProc, (LPVOID)adress, &buffer, sizeof(buffer), &rw))
{
cout << "Schreiben erfolgreich . . ." << endl;
}

CloseHandle(hProc);

system("PAUSE");
return 0;
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include
<Windows.h>

using namespace std;

int main()
{
   HWND hWnd;
   DWORD procid;
   HANDLE hProc;
   DWORD rw = 0;

   int adress = 0x001B9000;
   int buffer = 0;

   hWnd = FindWindow(0, "Opfer");

   if (!hWnd)
      return 0;

   GetWindowThreadProcessId(hWnd, &procid);

   hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid);
     
      if (ReadProcessMemory(hProc, (LPCVOID)adress, &buffer, sizeof(buffer), &rw))
      {
         cout << "Lesen erfolgreich . . ." << endl;
         cout << buffer << endl;
      }
   
      buffer++;

      if (WriteProcessMemory(hProc, (LPVOID)adress, &buffer, sizeof(buffer), &rw))
      {
         cout << "Schreiben erfolgreich . . ." << endl;
      }

   CloseHandle(hProc);

   system("PAUSE");
   return 0;
}


Das geht nun bedeutend einfacher wenn das dazugehörige Opferprogramm immer an die selbe Stelle speichert.

Wenn das eine Rolle spielen sollte: mein OS ist Win7 HP 64bit

Danke im Voraus . . .
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 16:56:34 27.01.2012   Titel:              Zitieren

http://msdn.microsoft.com/en-us/library/bb384887.aspx ;)

_________________
one point of view will never reveal the entire scene.
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 17:01:27 27.01.2012   Titel:              Zitieren

Und wie baue ich das jetzt in meinen Code ein?
Einfach reinpasten geht nicht :D

OK . . . hat sich erledigt. Das musste man bei den Einstellungen machen.
Aber gibt es eine Möglichkeit das in den Code einzubetten?


Zuletzt bearbeitet von Robert1996 am 17:05:19 27.01.2012, insgesamt 1-mal bearbeitet
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 17:07:49 27.01.2012   Titel:              Zitieren

Das soll ja auch nicht in deinen Code. Das ist ein Compilerflag. Du musst eben deine Zielanwendung entsprechend kompilieren...

_________________
one point of view will never reveal the entire scene.
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 17:11:13 27.01.2012   Titel:              Zitieren

Also gibt es keine Möglichkeit das direkt im Code festzulegen?
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 17:13:01 27.01.2012   Titel:              Zitieren

Wieso willst du das unbedingt im Code festlegen wenn du es einfach in den Einstellungen einstellen kannst?

_________________
one point of view will never reveal the entire scene.
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 17:20:19 27.01.2012   Titel:              Zitieren

Na weil mich sowas interessiert und ich eigentlich interessiert daran bin alles möglichst unabhängig von irgendwas zu machen
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 17:23:38 27.01.2012   Titel:              Zitieren

Well, there's your problem ;)

_________________
one point of view will never reveal the entire scene.


Zuletzt bearbeitet von dot am 17:27:01 27.01.2012, insgesamt 3-mal bearbeitet
Hi
Unregistrierter




Beitrag Hi Unregistrierter 17:54:59 27.01.2012   Titel:   Re: Konstanter Speicherplatz            Zitieren

3P!CF41L schrieb:
... wenn das dazugehörige Opferprogramm immer an die selbe Stelle speichert

Du willst also eigentlich von einem fremden Programm (fertiges Binary ohne Source) Werte auslesen oder wie?
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 17:58:15 27.01.2012   Titel:              Zitieren

Genau...sone Art Trainer soll das mal werden

Dazu muss ich auch noch wissen, wie ich aus dem kompletten RAM werte auslesen kann.
bzw, wie kann man denn rauskriegen wo ein Programm "xyz" die variable "var1" speichert?
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 18:05:25 27.01.2012   Titel:              Zitieren

Mit einem Debugger:
http://www.hex-rays.com/products/ida/index.shtml
http://www.ollydbg.de/
http://en.wikipedia.org/wiki/SoftICE

_________________
one point of view will never reveal the entire scene.
Ethon
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2011
Beiträge: 1114
Beitrag Ethon Mitglied 18:25:31 27.01.2012   Titel:              Zitieren

Reverse Engineering !

Wenn du zb soetwas hast:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct A
{
   int a;
   int b;
};

struct B
{
   float c;
   A* d;
   int e;
}

B* globalB = new B;
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct A
{
int a;
int b;
};

struct B
{
float c;
A* d;
int e;
}

B* globalB = new B;
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct A
{
   int a;
   int b;
};

struct B
{
   float c;
   A* d;
   int e;
}

B* globalB = new B;


Und du bist an dem Wert b in der Klasse A interessiert, dann kann es sein dass du zuerst die Addresse von globalB finden musst, 4 addieren + dereferenzieren, auf das Ergebnis nochmal 4 addieren und wieder dereferenzieren musst.

Ein Beispiel was so aussehen könnte: Ein Spiel, globalB ist ein Zeiger der immer auf den den aktuellen Spieler zeigt, B ist eine Struktur die Spieler hält und in A stehen Informationen über den Status des Spielers, zb HP.
kkkkkkkkkk
Unregistrierter




Beitrag kkkkkkkkkk Unregistrierter 20:58:43 27.01.2012   Titel:              Zitieren

Ist es nicht so, dass das seit Windows 7 nicht mehr möglich ist?
Hi
Unregistrierter




Beitrag Hi Unregistrierter 21:05:24 27.01.2012   Titel:              Zitieren

Was soll nicht mehr möglich sein? Wenn man eine statische Adresse findet, nimmt man einfach die moduleBase + offset, und findet so immer den selben Wert.
Findet man überhaupt keinen statischen Bezug, muss man sich an entsprechenden Stellen im Code "einklinken".

Versuchs mal mit http://www.cheatengine.org
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 21:13:49 27.01.2012   Titel:              Zitieren

Das Problem ist die ASLR...

_________________
one point of view will never reveal the entire scene.
MisterX
Unregistrierter




Beitrag MisterX Unregistrierter 12:44:29 28.01.2012   Titel:              Zitieren

dot schrieb:
Das Problem ist die ASLR...


Das ist doch kein Problem. Es wird doch nur die Startadresse zufällig gewählt. Und die kann man abfragen. Der Offset zur eigentlichen Adresse bleibt gleich.
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 12:52:57 28.01.2012   Titel:              Zitieren

MisterX schrieb:
dot schrieb:
Das Problem ist die ASLR...


Das ist doch kein Problem. Es wird doch nur die Startadresse zufällig gewählt. Und die kann man abfragen. Der Offset zur eigentlichen Adresse bleibt gleich.

Ja, aber das ist eben etwas, was man berücksichtigen muss...

_________________
one point of view will never reveal the entire scene.
Patrickssj6
Mitglied

Benutzerprofil
Anmeldungsdatum: 08.01.2012
Beiträge: 87
Beitrag Patrickssj6 Mitglied 14:59:08 28.01.2012   Titel:              Zitieren

dot schrieb:
MisterX schrieb:
dot schrieb:
Das Problem ist die ASLR...


Das ist doch kein Problem. Es wird doch nur die Startadresse zufällig gewählt. Und die kann man abfragen. Der Offset zur eigentlichen Adresse bleibt gleich.

Ja, aber das ist eben etwas, was man berücksichtigen muss...


Stimmt, aber das ist sein geringstes Problem glaube ich :D Vor allem weil 90% der Programme immer bei 0x400000 anfangen.

BaseAddress + Offset zeigt auf nen Pointer.
Pointer dereferenzieren + Offset zeigt auf den Wert den du willst.

Danach kannst du dich richten. :)
Ethon
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2011
Beiträge: 1114
Beitrag Ethon Mitglied 19:05:42 28.01.2012   Titel:              Zitieren

dot schrieb:
Das Problem ist die ASLR...


Die man sowohl systemweit als auch in der Executable selbst abstellen kann. System weit würde per Registry gehen, ist aber ein Sicherheitsproblem. Den Flag in der Exe entfernen ist kein Problem, einfach nen PE-Editor nehmen.
Obwohl es wirklich nicht zuviel verlange ist, am Anfang die Module-Liste mit den tlhelp32 Funktionen zu lesen, sich die Addresse des Hauptmodules zu merken und darauf Offsets zu addieren.
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 20:46:05 28.01.2012   Titel:              Zitieren

Ja, das ist alles richtig. Das ändert aber nix dran dass das Problem des Threaderstellers die ASLR ist/war. Und genau das hab ich gesagt ;)

_________________
one point of view will never reveal the entire scene.
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 20:47:28 29.01.2012   Titel:              Zitieren

Nachdem ich nach ein paar Tutorials geguckt habe bin ich auch auf ein brauchbares gestoßen. Ich scheitere aber nach wenigen Zeilen. Der Tutor^^ verwendet einen Dateityp namens "Window" und bei mir gibts den nicht. . .In welcher header-Datei findet man den denn?
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 20:57:42 29.01.2012   Titel:              Zitieren

Das solltest du den Tutor fragen...

_________________
one point of view will never reveal the entire scene.
yxMan
Unregistrierter




Beitrag yxMan Unregistrierter 21:09:44 29.01.2012   Titel:              Zitieren

3P!CF41L schrieb:
einen Dateityp namens "Window"

lass mich raten: die zugehörige Variable heißt HWND :o)
noergel reloaded
Unregistrierter




Beitrag noergel reloaded Unregistrierter 23:37:30 29.01.2012   Titel:              Zitieren

[quote="Patrickssj6"]
dot schrieb:


Stimmt, aber das ist sein geringstes Problem glaube ich :D Vor allem weil 90% der Programme immer bei 0x400000 anfangen.



glauben ist nicht wissen
Der aus dem Westen ...
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.12.2010
Beiträge: 1277
Beitrag Der aus dem Westen ... Mitglied 23:50:06 29.01.2012   Titel:              Zitieren

Bei 3P!CF41L ist wohl der Name Programm :o) ...

Wie schon der yxMan meinte, ist es wohl eher eine Variable mit Namen hWindow, und zwar vom Typ HWND. Was das ist, kann ich gerne erklären:

Mit Windows kann man arbeiten. Man kann sogar einigermaßen gut mit Windows arbeiten. Aber man weiß nicht, wie das System in seinem Innersten funktioniert, weil der Quellcode unter Verschluss steht. Mit der API des Systems kann man tolle Sachen machen, aber auch hier stößt man manchmal auf Grenzen, die sich "Handles" nennen. Hierbei handelt es sich um Zeiger auf Speicher - um Werte ... ähhh, ungefähr so, die Implementierung dieser Typen ist nicht offen, die behält Microsoft für sich. Wenn du dir die Definition dieser Typen anschaust, stolperst du über den Wert "unused", was einfach nur heißt, dass du nicht wissen sollst, was wirklich hinter dem Objekt steckt. Du kannst dich allerdings darauf verlassen, dass, wenn du Funktionen der API, welche diese verschlossenen Objekte verwenden, aufrufst, diese das Objekt ordentlich behandeln werden.

Es gibt mehrere Handle-Typen, und manchmal verschwimmen die Grenzen zueinander auch. HANDLE steht für Datei-Handles, Heap-Handles und Konsolenhandles, diese sind von der Definition und dem Typ her gleich und können in bestimmten Kontexten ausgewechselt werden. HWND steht für Handle for Windows, HCURSOR ist ein Handle auf einen Cursor, HDC einer auf einen Device Context usw ...
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 18:57:23 30.01.2012   Titel:              Zitieren

Also...bei mir ist nicht Name Programm! Hör auf zu flamen. Ich weiß schon was ich da gelesen habe und ich habe es auch hier richtig geschrieben! Mittlerweile hat sich das auch geklärt. Das war ein Struct namens 'Window'. Also frag bevor du rumtrollst . . .
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 19:10:58 31.01.2012   Titel:              Zitieren

Wie kann man denn die ASLR abschalten? Und das möglichst dauerhaft?
Hi
Unregistrierter




Beitrag Hi Unregistrierter 20:31:51 31.01.2012   Titel:              Zitieren

Es bringt dir doch nix.
Und selbst ohne ASLR ist es nicht 100%ig, dass ein Modul immer die selbe Base hat.
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 20:53:32 31.01.2012   Titel:              Zitieren

Es bringt mir sehr wohl was. Dann kann ich nämlich den Trainer programmieren ohne alle RAM-Adressen zu durchsuchen. Wenn der Wert einen bestimmten Platz hat ist es doch einfacher, ihn zu verändern . . .
Ethon
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2011
Beiträge: 1114
Beitrag Ethon Mitglied 21:06:49 31.01.2012   Titel:              Zitieren

3P!CF41L schrieb:
Wie kann man denn die ASLR abschalten? Und das möglichst dauerhaft?


Etwa so als wenn du in nem Autoforum fragst wie du deinen Airbag entfernen kannst.

Zitat:
Es bringt mir sehr wohl was. Dann kann ich nämlich den Trainer programmieren ohne alle RAM-Adressen zu durchsuchen. Wenn der Wert einen bestimmten Platz hat ist es doch einfacher, ihn zu verändern . . .


Was willst du durchsuchen? Anstatt der festen Addresse holst du dir die Basisaddresse und addierst das Offset drauf, fertig.
Tipp: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686701%28v=vs.85%29.aspx


Zuletzt bearbeitet von Ethon am 21:07:29 31.01.2012, insgesamt 1-mal bearbeitet
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 21:19:48 31.01.2012   Titel:              Zitieren

OK. Bevor ich jetzt komplett abschalte, kannst du mir bitte erklären was eine Basisadresse und was das Offset ist?
Ethon
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.01.2011
Beiträge: 1114
Beitrag Ethon Mitglied 21:47:53 31.01.2012   Titel:              Zitieren

Als Basisaddresse nimmst du die Addresse, an der das Hauptmodul geladen wurde.

Zb. (Ist zwar Linux, aber egal):

Zitat:
00400000-0040b000 r-xp 00000000 fd:01 2752531 /bin/cat
0060a000-0060b000 r--p 0000a000 fd:01 2752531 /bin/cat
0060b000-0060c000 rw-p 0000b000 fd:01 2752531 /bin/cat
01b05000-01b26000 rw-p 00000000 00:00 0 [heap]
7fb02d347000-7fb02e387000 r--p 00000000 fd:01 265831 /usr/lib/locale/locale-archive
7fb02e387000-7fb02e51c000 r-xp 00000000 fd:01 1314480 /lib/x86_64-linux-gnu/libc-2.13.so
7fb02e51c000-7fb02e71b000 ---p 00195000 fd:01 1314480 /lib/x86_64-linux-gnu/libc-2.13.so
7fb02e71b000-7fb02e71f000 r--p 00194000 fd:01 1314480 /lib/x86_64-linux-gnu/libc-2.13.so
7fb02e71f000-7fb02e720000 rw-p 00198000 fd:01 1314480 /lib/x86_64-linux-gnu/libc-2.13.so
7fb02e720000-7fb02e726000 rw-p 00000000 00:00 0
7fb02e726000-7fb02e747000 r-xp 00000000 fd:01 1314467 /lib/x86_64-linux-gnu/ld-2.13.so
7fb02e919000-7fb02e91c000 rw-p 00000000 00:00 0
7fb02e944000-7fb02e946000 rw-p 00000000 00:00 0
7fb02e946000-7fb02e947000 r--p 00020000 fd:01 1314467 /lib/x86_64-linux-gnu/ld-2.13.so
7fb02e947000-7fb02e949000 rw-p 00021000 fd:01 1314467 /lib/x86_64-linux-gnu/ld-2.13.so
7fff39ce5000-7fff39d06000 rw-p 00000000 00:00 0 [stack]
7fff39dff000-7fff39e00000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]


Hier wurde das Programm cat an Addresse 0x400000 geladen. Wenn du jetzt eine interessante Speicherstelle an 0x400ABC gefunden hast, dann merkst du dir nicht 0x400ABC sondern (0x400ABC - 0x400000) = 0xABC, das ist also das Offset zur Basisaddresse. Wenn das Programm das nächste mal an 0x800000 geladen wird, dann addierst du einfach 0xABC darauf und hast wieder die richtige Speicherstelle.

Um die Basisaddresse unter Windows zu finden gehst du einfach mit den Module-Funktionen aus meinem Link die Liste durch, bis du auf ein Modul mit dem exakt selben Namen wie deine Exe stößt (Bei Notepad zb. "notepad.exe"). Dann merkst du dir einfach die Addresse, an die das Modul geladen wurde, und machst von da aus deine Additionen/Substraktionen.

Hoffe es wurde etwas klarer. ;)
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 21:53:57 31.01.2012   Titel:              Zitieren

Naja...ich brauche ja die Basisadresse des anderen Programmes. Eben jenes, in das ich mich einklinken will. Wie bekomme ich dessen BA raus?


Zuletzt bearbeitet von Robert1996 am 22:00:53 31.01.2012, insgesamt 1-mal bearbeitet
zeusosc
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.12.2006
Beiträge: 745
Beitrag zeusosc Mitglied 22:09:31 03.02.2012   Titel:              Zitieren

Hat ethon doch schon geschrieben:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686701%28v=vs.85%29.aspx

erst DURCHLESEN (echt jetzt...) dann Fragen !

_________________
Der Contrapart in einer Diskussion zu sein, heißt nicht das dieser Standpunkt
der eigene sein muss! ;)
C/C++ Forum :: WinAPI ::  Konstanter Speicherplatz   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.