Toon posts:

[Java] Schrijven in geheugen van andere windows-app *

Pagina: 1
Acties:

Verwijderd

Topicstarter
He,

Ik zit al de hele middag te zoeken (google) naar een manier om met mijn 100% Java programma naar het geheugen te schrijven van een ander actief programma in windows.

weet iemand hoe dat gaat, of heeft iemand een tutorial over dit onderwerp?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:56
Kan je niet met de standaard API van Java. Je hebt een native library nodig die dat voor je regelt; of die bestaat weet ik niet (ik vermoed van niet), dus zul je die functionaliteit waarschijnlijk zelf moeten schrijven (in een systeemprogrammeertaal).

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Dat is onmogelijk :Y)

Het is een kerneigenschap van de Java Language Specification en de VM dat dit soort dingen niet mogen. Helaas. Voor dit soort dingen heb je klassiek C++ (mijn voorkeur) of VB nodig waarschijnlijk. Alle .NET talen kunnen dit officiëel al niet eens meer.

Edit: inderdaad, met een gelinkte native library kan je natuurlijk wél in het geheugen prutsen via Java.

[ Voor 17% gewijzigd door Eelke Spaak op 02-10-2003 16:50 ]

TheStreme - Share anything with anyone


Verwijderd

Topicstarter
jep dat dacht ik al... ik hoopte dat al iemand met dit probleem aan het stoeien was geweest....

okee dan komt er een stukje C++ in ;P

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

jni is hierbij het toverwoord als je dat nog niet wist.

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Het is toch echt Windows (NT/2000/XP) zelf die het onmogelijk maakt om in het geheugen van andere processen te poeren. Memory Protection anybody?? }:O
De enige manier waarop het zou kunnen is via shared memory. Volgens mij is het in Java wel mogelijk om shared memory te gebruiken.

FireFox - neem het web in eigen hand


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

PommeFritz schreef op 02 October 2003 @ 20:20:
Het is toch echt Windows (NT/2000/XP) zelf die het onmogelijk maakt om in het geheugen van andere processen te poeren. Memory Protection anybody?? }:O
De enige manier waarop het zou kunnen is via shared memory. Volgens mij is het in Java wel mogelijk om shared memory te gebruiken.
Het is heel goed mogelijk in het geheugen van andere processen te schrijven, niet direct uiteraard maar wel via de APIs ReadProcessMemory/WriteProcessMemory. Als je voldoende rechten hebt (admin waarschijnlijk) kan je met VirtualProtectEx de memory protection van elk willekeurig geheugenblok aanpassen.

Shared memory (dmv file mappings bijvoorbeeld) is een nette oplossing voor het delen van geheugen maar het is dus niet onmogelijk gegeugen van andere processen te wijzigen.

www.madwizard.org


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:06

.oisyn

Moderator Devschuur®

Demotivational Speaker

PommeFritz schreef op 02 oktober 2003 @ 20:20:
Het is toch echt Windows (NT/2000/XP) zelf die het onmogelijk maakt om in het geheugen van andere processen te poeren. Memory Protection anybody?? }:O
Dan mag jij mij vertellen hoe jij het in java zou doen, als die protection niet aanwezig was in windows ;)

Je kunt in Java niet met rauwe pointers werken, en de VM zorgt er heus wel voor dat al die pointers (referenties naar instanties dus) naar juiste objecten in je huidige processspace wijzen, en niet naar loze blokjes geheugen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

.oisyn schreef op 02 October 2003 @ 21:39:
Dan mag jij mij vertellen hoe jij het in java zou doen, als die protection niet aanwezig was in windows ;)
:? Ik begrijp je niet. Dat zeg ik toch ook, dat het dus niet kan? Maar dat dat niet aan Java ligt maar dat Windows dat doet.

Of bedoel je: "stel dat het niet door Windows afgeschermd zou worden, hoe zou je het dan vanuit java doen?"

Dan kan het i.d.d. nog steeds niet, direct vanuit Java dan, zoals je zelf ook al zegt.

@ Marik2000: vertel eens waarom je precies dit wil doen? Wil je data uitwisselen tussen twee programma's? Daar zijn dan veel betere manieren voor 8)

[ Voor 15% gewijzigd door PommeFritz op 02-10-2003 22:16 ]

FireFox - neem het web in eigen hand


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

PommeFritz schreef op 02 oktober 2003 @ 22:14:
[...]

:? Ik begrijp je niet. Dat zeg ik toch ook, dat het dus niet kan? Maar dat dat niet aan Java ligt maar dat Windows dat doet.

Of bedoel je: "stel dat het niet door Windows afgeschermd zou worden, hoe zou je het dan vanuit java doen?"

Dan kan het i.d.d. nog steeds niet, direct vanuit Java dan, zoals je zelf ook al zegt.

@ Marik2000: vertel eens waarom je precies dit wil doen? Wil je data uitwisselen tussen twee programma's? Daar zijn dan veel betere manieren voor 8)
Náást het feit dat Windows de geheugenruimte afschermt, schermt de Java VM de geheugenruimte óók nog eens af. Dit zorgt ervoor dat je bijvoorbeeld ook op Linux en MacOS niet in het geheugen kan gaan knutselen.

TheStreme - Share anything with anyone


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:06

.oisyn

Moderator Devschuur®

Demotivational Speaker

PommeFritz schreef op 02 October 2003 @ 22:14:
:? Ik begrijp je niet. Dat zeg ik toch ook, dat het dus niet kan? Maar dat dat niet aan Java ligt maar dat Windows dat doet.

Of bedoel je: "stel dat het niet door Windows afgeschermd zou worden, hoe zou je het dan vanuit java doen?"
jij komt met deze opmerking:
PommeFritz schreef op 02 October 2003 @ 20:20:
Het is toch echt Windows (NT/2000/XP) zelf die het onmogelijk maakt om in het geheugen van andere processen te poeren. Memory Protection anybody?? }:O
Als je gewoon puur java programmeert is niet Windows die daarvoor zorgt, maar Java zelf. Je kunt er namelijk niet uit, of er nou een OS achter zit dat ook nog eens het geheugen afschermt of niet. Dus java is de boosdoener, niet windows.

En zoals gezegd, windows heeft functies om in het geheugen van andere processen te lezen en te schrijven ;) (moet je daar wel rechten voor hebben)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

:| Laat maar jongens ... jullie herhalen telkens wat ik zelf ook al probeerde te zeggen... was ik nou eerst niet duidelijk ofzo :?

Dat van die windows API functies om proces memory te lezen (mits rechten) was wel nieuw voor mij.

FireFox - neem het web in eigen hand

Pagina: 1