Avatar billede ab Nybegynder
19. februar 2000 - 01:22 Der er 17 kommentarer og
1 løsning

Ændre variabler i andre programmer

Er det muligt at ændre værdien af variabler i andre programmer. Måske vha. API-kaldet SendMessage eller noget lignende?
Avatar billede winkill Nybegynder
19. februar 2000 - 11:29 #1
Lytter med
Avatar billede mukke Nybegynder
19. februar 2000 - 11:57 #2
Nej.. Hvis du skal ændre på værdier for andre programmer skal du ned i noget være rod. Dels kan du ikke længere arbejde med variabel-navne men skal kende præcis hukkommelsesadresse for det du vil ændre, og dels skal du finde en måde at narre windows på idet Windows beskytter programmerne fra hinanden. Hvis du f.eks. forsøgte at ændre på en addresse som eges af et andet program vil du få den berømtee "programmet har udført en ulovlig handling og afsluttes" besked.
Avatar billede farout Nybegynder
21. februar 2000 - 20:09 #3
godt svar mukke :0)
Avatar billede mukke Nybegynder
21. februar 2000 - 20:57 #4
takker :)

Selvom det jo næppe var det ab håbede på :(
Avatar billede baunsgaard Nybegynder
28. februar 2000 - 20:33 #5
Det kan "nemt" lade sig gøre at ændre i andre programmer uden at de går ned - tænk fx. på Diablo traineren, der var rundt for nogle år siden (for dem der ikke kender den, var det et program der læste i spillet Diablos hukommelse og gav mulighed for ændre i forskellige ting). En meget udbredt holdning er, at det da i hvert fald ikke kan lade sig gøre under Windows NT, men det kan det også - jeg skrev faktisk selv Diablo traineren om til at virke under NT. NT's bedre sikkerhed er i forhold til kernen (dvs. selve NT) og ikke mellem almindelige applikationer.

Ovenstående taget i mente vil jeg dog aldrig lave den slags programmer i VB og ikke hvis man ikke var lidt af en bit-nørd, da det som mukke skriver nemt kan gå galt...

Blot mine to kroner...
Avatar billede mukke Nybegynder
29. februar 2000 - 19:43 #6
Baunsgaard:
DU har helt ret, men jeg håber egentlig også at det er det folk har kunnet udlede af mit svar... Det er besværligt men naturligvis er intet "umuligt for den der bærer viljen i hjertet!"

:)
Avatar billede baunsgaard Nybegynder
29. februar 2000 - 20:17 #7
mukke>> OK, jeg studsede bare over din kommentar:
Hvis du f.eks. forsøgte at ændre på en addresse som eges af et andet program vil du få den berømtee "programmet har udført en ulovlig handling og afsluttes" besked. 

Er den ikke lige meget "det kan man ikke" :-)
Avatar billede baunsgaard Nybegynder
29. februar 2000 - 20:19 #8
ab>> Bare lige for at være sikker! Du mener vel ikke mellem to programmer du selv har udviklet vel? For det er nemt nok...
Avatar billede ab Nybegynder
02. marts 2000 - 18:25 #9
Baunsgaard>> Nej, det er ikke mellem mine egne programmer. Skal jeg bruge C++ istedet? Har du i givet fald et eksempel til det?
Avatar billede baunsgaard Nybegynder
02. marts 2000 - 19:02 #10
ab>> Ja, C++ er bestemt et glimrende valg og efter min mening det bedste til denne type applikationer.

Jeg kan dårligt huske det, men jeg mener at det var denne Windows 95 baserede trainer jeg tog udgangspunkt i da jeg lavede den til NT.

http://geocities.yahoo.com/TimesSquare/Alley/3643/files/trainsrc.zip

Det er "mange" år siden jeg sidst har kigget på sourcen, men det var den jeg nemmest lige kunne finde.

Mvh
Avatar billede baunsgaard Nybegynder
02. marts 2000 - 19:03 #11
ab>> Er det et program vi kender du ønsker at ændre i?
Avatar billede baunsgaard Nybegynder
02. marts 2000 - 19:34 #12
ab>> Det er specielt functionen getBuffer i test4dlg.cpp der er interessant...
Avatar billede ab Nybegynder
02. marts 2000 - 20:35 #13
Tak for det hurtige svar baunsgaard! Jeg har i øjeblikket ikke den fornødne tid til at sætte mig ind i det, men jeg skal prøve så hurtigt som muligt.
Avatar billede ab Nybegynder
02. marts 2000 - 20:37 #14
baunsgaard>> Jeg skal lige høre om der er nogle smarte tip til hvordan man finder en variabel med en bestemt værdi.
Avatar billede baunsgaard Nybegynder
02. marts 2000 - 21:37 #15
Alt efter hvilken type program det er du ønsker at ændre i er der forskellige metoder (jeg er dog meget lidt vidende inden for dette område).

1. Sætte et program til at overvåge ændringer i et hukommelsesområde for at se hvilke områder, som ændrer sig under bestemte omstændigheder. Benyttes fx. i spil - meget banalt set kan det forklares således: Du har tre liv tilbage, du finder de steder i hukommelsen hvor der står tre. Nu lader du dig dø og findes de steder, hvor der tidligere stod tre og nu to...

2. Ved at benytte et eller andet disassembler program og/eller debugger. Navnet Soft-Ice dukker op i hukommelsen, men jeg kender desværre næsten ikke. I dette scenarie kigger du på en masse assembler og finder på denne måde ud af hukommelsesaddressen.

Jeg er bange for at det nogenlunde summerer min viden inden for netop dette område :-)

Mvh
Avatar billede baunsgaard Nybegynder
16. marts 2000 - 19:13 #16
Hvordan går det???
Avatar billede baunsgaard Nybegynder
27. marts 2000 - 21:54 #17
Hvad med at afslutte dette spørgsmål???
Avatar billede ab Nybegynder
30. marts 2000 - 20:49 #18
God ide!! Jeg kommer alligevel ikke videre... :(
Nå, men jeg havde egentlig heller ikke regnet med at få det til at virke og desuden var det kun for at se om det overhovedet kunne lade sig gøre.
Med det jeg har kigget på af asm, må min konklusion nok være at det selvfølgelig er muligt, men at man skal have en forbandet god evne til at blive ved med at lede, også selvom flere timers arbejde pludselig er spildt pga. en eller anden banal fejl...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester