Autor Beitrag
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Fr 24.11.06 17:32 
Hi! :D

Wie man den Speicher des eigenen oder eines fremden Prozesses verändert, ist ja nichts neues.
Aber die Befehle der EXE (die Opcodes) müssen doch auch irgendwo im Speicher sein.
1. Wo?
2. Kann man die auch auslesen/überschreiben wie auch den Rest vom Speicher, oder ist der Teil irgendwie geschützt?


Chryzler

PS: Nein, ich will keinen Virus schreiben, ich will nur ein bisschen rumbasteln :wink:
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Fr 24.11.06 23:46 
Auch wenn du keinen Virus schreiben willst: Vergiss den Ansatz andere laufende Programme einfach zu verändern. Entweder schlägt dir jeder vernünftige Virenscanner auf die Finger oder auch der Speicherschutz von modernen Prozessoren dürfte dir im Wege liegen.
Im eigenen Speicher sowas zu veranstalten dürfte noch gehen. In der Jedi gibt es einige Units + Beispielprogramme (hier vorallem um Einsprungpunkte in DLL's umzubiegen) welche dir helfen könnten.
Chryzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 25.11.06 10:06 
Erstmal danke für deine Antwort :) . Das Problem hat sich inzwischen von selbst gelöst. Zur Vollständigkeit poste ich hier mal was ich herausgefunden habe. Die Opcodes sind einfach im irgendwo Prozess-Speicher, lassen sich auch problemlos auslesen/verändern. Man könnte den Prozess sozusagen wärend dem Laufen umprogrammieren. Mir ist klar dass man damit sehr viel Mist bauen kann. Eigentlich wollte ich eine kleine Erschwerung bauen, mein Programm zu cracken, da bin ich auf so eine Idee gekommen.

Chryzler
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Sa 25.11.06 11:51 
Die liegen nicht irgendwoe ich Speicher (@Funktionsname liefert die Adresse)
Und was Bernhard angesprochen hat ist alles überhaupt kein Problem, man muss schließlich VirtualProtect drüberlaufen lassen und das funktioniert auch bei neureren Systemen.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Chryzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 25.11.06 12:55 
Aha, klingt interessant. Das mit der Funktionsadresse funktioniert perfekt. Nur was VirtualProtect macht hab ich noch nicht herausgefunden.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 26.11.06 18:03 
Hättest Du die API-Docs gelesen (MSDN oder win32api.hlp), so wüsstest Du was VirtualProtect macht. Vereinfacht gesagt: Damit kann man die Berechtigungen für den Zugriff auf die verschiedenen Speicherbereiche anpassen. Ist ganz nett zum Schreiben von SingleStep-Handlern ;-)

Außerdem bekommt man mit ein wenig Tüfteln auch für die Hauptanwendung die Adresse des Code-Segments. Einfach die MZ\PE-Infos auswerten, wenn man die Module des entfernten Prozesses hat ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.