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 ::  Speicher Verständis  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
cooky451
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4840
Beitrag cooky451 Mitglied 19:25:43 28.01.2012   Titel:              Zitieren

Sinnvollerweise holst du dir eh den ganzen Block (oder zumindest große Teile) auf einmal und durchsuchst die dann.

_________________
Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
dirk01
Unregistrierter




Beitrag dirk01 Unregistrierter 19:28:55 28.01.2012   Titel:              Zitieren

@cooky451 Dein edit versteh ich nicht. Könntest Du mir das näher erklären?
cooky451
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4840
Beitrag cooky451 Mitglied 19:39:17 28.01.2012   Titel:              Zitieren

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void scanMemeory(HANDLE hproc, const char* start, const char* end)
{
  DWORD read;
  int buffer;
 
  printf("wird gescannt...\n");
 
  for(; start < end; ++start)
  {
    if (ReadProcessMemory(hproc, start, &buffer, sizeof(buffer), &read))
    {
      if(read == sizeof(buffer) && buffer == 0x65)
      {
        printf("Wert an 0x%.8lx gefunden!", start);
        getchar();
        return;
      }
    }
    else // GetLastError()
    {
    }
  }
}
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
void scanMemeory(HANDLE hproc, const char* start, const char* end)
{
DWORD read;
int buffer;

printf("wird gescannt...\n");

for(; start < end; ++start)
{
if (ReadProcessMemory(hproc, start, &buffer, sizeof(buffer), &read))
{
if(read == sizeof(buffer) && buffer == 0x65)
{
printf("Wert an 0x%.8lx gefunden!", start);
getchar();
return;
}
}
else // GetLastError()
{
}
}
}
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
void scanMemeory(HANDLE hproc, const char* start, const char* end)
{
  DWORD read;
  int buffer;
 
  printf("wird gescannt...\n");
 
  for(; start < end; ++start)
  {
    if (ReadProcessMemory(hproc, start, &buffer, sizeof(buffer), &read))
    {
      if(read == sizeof(buffer) && buffer == 0x65)
      {
        printf("Wert an 0x%.8lx gefunden!", start);
        getchar();
        return;
      }
    }
    else // GetLastError()
    {
    }
  }
}

Das meinte ich. Allerdings ist jeder ReadProcessMemory() Aufruf teuer, und hier macht man sogar unnötig viele Aufrufe, weil man alles vier mal liest. Besser wäre es, den ganzen Speicher am Stück zu kopieren und dann zu durchsuchen. Wenn der Block zu groß ist, einen Fehler melden oder aber aufteilen - wobei man dann aufpassen muss, dass man nicht plötzlich etwas übersieht, das sich in zwei Blöcken befindet.

_________________
Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™


Zuletzt bearbeitet von cooky451 am 19:42:18 28.01.2012, insgesamt 2-mal bearbeitet
dirk01
Unregistrierter




Beitrag dirk01 Unregistrierter 20:03:35 28.01.2012   Titel:              Zitieren

Danke Dir cooky451
:live:
C++ Forumbot
Forumbot

Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 16160
Beitrag C++ Forumbot Forumbot 21:09:17 28.01.2012   Titel:              Zitieren

Dieser Thread wurde von Moderator/in rüdiger aus dem Forum C (C89 und C99) in das Forum WinAPI verschoben.

Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?


Dieses Posting wurde automatisch erzeugt.

_________________
Besuchen Sie unsere Bücherecke.
http://www.c-plusplus.de/bucher.php
Mit jeder Bestellung unterstützen Sie das Forum.
Wutz
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.04.2010
Beiträge: 2103
Beitrag Wutz Mitglied 20:42:42 29.01.2012   Titel:              Zitieren

cooky451 schrieb:
C/C++ Code:
    if (ReadProcessMemory(hproc, start, &buffer, sizeof(buffer), &read))
    {
      if(read == sizeof(buffer) && buffer == 0x65)
      {
C/C++ Code:
if (ReadProcessMemory(hproc, start, &buffer, sizeof(buffer), &read))
{
if(read == sizeof(buffer) && buffer == 0x65)
{
C/C++ Code:
    if (ReadProcessMemory(hproc, start, &buffer, sizeof(buffer), &read))
    {
      if(read == sizeof(buffer) && buffer == 0x65)
      {


Die Chance, den Bytewert zu finden, dürfte bei <= 50% für sizeof(int)==2*1 und bei <= 25% für sizeof(int)=4*1 liegen. Bei Suchwerten oberhalb 0x7F gibts auch noch Vorzeichenprobleme.

_________________
Java, the best argument for Smalltalk since C++. -- Frank Winkler


Zuletzt bearbeitet von Wutz am 20:45:31 29.01.2012, insgesamt 1-mal bearbeitet
dirk01
Unregistrierter




Beitrag dirk01 Unregistrierter 02:35:46 30.01.2012   Titel:              Zitieren

Was meinst Du damit genau? Funktioniert jedenfals so wie ich möchte. Das es False/Positive Ergebnisse gibt ist mir klar!
C/C++ Forum :: WinAPI ::  Speicher Verständis  
Gehen Sie zu Seite Zurück  1, 2
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.