Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

1

11.03.2009, 22:24

[Erledigt] mit Java Ram auslesen, verändern

Hey Leute,

gibt es in Java auch eine möglichkeit den Ram nach werten zu scannen und diese zu verändern ?

würde nämlich gern mal einen Trainer in Java schreiben ^^

mfg

SilentDragon
...

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

2

11.03.2009, 22:36

das drüfte nicht gehen, da Java komplet eigenes Memory Managment hat und du für das Hardware memory verändern zugriff auf das System brauchst was die Java nicht liefert.
Homepage: fkrauthan.de | Browser-game: flowergame.net

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

3

11.03.2009, 22:37

kann man den irgendwie bekommen ? ^^ also den Zugriff
...

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

4

11.03.2009, 22:48

Nicht mit Java. Da solltest du lieber C++ nehmen bzw C um sowas zu machen. Gibt glaube ich sogar ein Tutorial hier im FOrum dazu wie man sowas macht. Einfach die Board Suche mal anschmeißen.
Homepage: fkrauthan.de | Browser-game: flowergame.net

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

5

11.03.2009, 22:54

Also Java ist nicht dafür ausgelegt solche operationen durchzuführen...

Ich bin mir aber sicher gehört zu haben, dass es möglich ist dlls die
in C/C++ und co. geschrieben sind zu laden und zu benutzen :)
Da gibts dann bestimmt irgendwelche möglichkeiten auf den RAM zuzugreifen ;)

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

6

11.03.2009, 23:00

aber dann kann man gleich ein C Programm schreiben =)
Homepage: fkrauthan.de | Browser-game: flowergame.net

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

7

11.03.2009, 23:06

Du könntest mit jna oder jni eine kleine Java Extension schreiben die dir den Speicherzugriff ermöglicht.
Wobei es dann sicher einfacher wäre das eben direkt in C/C++ zu schreiben ;).

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

8

11.03.2009, 23:33

Zitat von »"fkrauthan"«

aber dann kann man gleich ein C Programm schreiben =)


Genau das sollte man tun !
Denn wie ich schon oben gesagt habe, ist java nicht für Speichermanipulation
und überhaupt Systemnahe operationen ausgelegt bzw gedacht ;)

@SilentDragon: Wiso willst du das unbedingt in Java machen ?

Anonymous

unregistriert

9

11.03.2009, 23:36

xardias
JNI ist richtig schlimm, ich darf seit gut einer Woche etwas mit JNI machen, grauenvoll...

10

12.03.2009, 07:02

Im Sun-Forum gefunden:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HANDLE processHandle = Kernel32.OpenProcess(Kernel32.PROCESS_QUERY_INFORMATION | Kernel32.PROCESS_VM_READ, false, pid); // pid: process id
JNative readProcessMemory = new JNative("Kernel32.dll", "ReadProcessMemory");
int b = 128; // buffer size
Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(b));
//int base = 4194304; // common start address
int base = 16777216;
readProcessMemory.setRetVal(Type.INT);
readProcessMemory.setParameter(0,processHandle.getValue().intValue());
readProcessMemory.setParameter(1,base);
readProcessMemory.setParameter(2,p);
readProcessMemory.setParameter(3, b);

for (int x = 0; x < 100; x++) { //loop thru the first 128*100 bytes of app memory, starting at base address
readProcessMemory.setParameter(1, base + x * b); // move the pointer to the start of the next 128 byte chunk
readProcessMemory.invoke();
if (readProcessMemory.getRetValAsInt() == 0) { // <>0: Good, 1: read failed, most likely memnory access rights
System.out.println("Read fail - check access rights: " + x * b);
break;
}
}

for (int i = 0; i < b; i++)
System.out.println(p.getMemory()[i]);  
fka tm

Werbeanzeige