Assembler code editieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
deify
Beiträge: 141
Registriert: 29.03.2010 22:01
Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM
Kontaktdaten:

Assembler code editieren

Beitrag von deify »

Hi Leute,
Ich habe folgendes Problem, ich würde gerne eine Assemblerzeile aus einem Programm modifizieren.
Ich gebe ganz offen zu um was es mir hierbei geht. Ich habe vor einen NOCD-Patch für ein Spiel zu schreiben, bevor ich jetzt verhöhnt werde ob das denn illegal sei oder nicht, würde ich gerne sagen, dass das Spiel von 2003 ist und der sourcecode bereits zum entwickeln freigegeben ist. Hierbei sollte also keinerlei Problem bestehen.
Desweiteren würde mich diese Methode des editieren einer .exe interessieren um einfach mods per JMP-Fixes etc zu schreiben, was in diesem spiel sehr leicht möglich ist.
Ich freue mich auf eure Hilfe.

Mfg deify
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Assembler code editieren

Beitrag von Bisonte »

Da man das ganze auch für andere Programme nutzen kann, wirst du wohl auf öffentlich Hilfe verzichten müssen...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
deify
Beiträge: 141
Registriert: 29.03.2010 22:01
Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM
Kontaktdaten:

Re: Assembler code editieren

Beitrag von deify »

wenn mir jemand infos dazu geben kann, gerne auch per PM oder via email (deify73@web.de)
ich dachte eigentlich, dass es generell nicht das problem sein sollte, da es hierbei ja lediglich um eine möglichkeit geht, die sowohl positiv, als leider auch negativ genutzt werden kann wie auch dll injection z.b. ... leider finde ich hierzu nichts verwertbares mit dem freund google :D

EDIT:
Ok generell ist es mir eigentlich klar geworden, nachdem ich mich etwas in olly umgesehen habe.... nun eine frage, die doch eher hier behandelt werden könnte.
Wie berechne ich das fileOffset anhand einer gegebenen Adresse im Speicher? Muss ich GetModulehandle() von dieser adresse subtrahieren? erhalte ich somit das byte an der gewünschten stelle?
Freue mich über info (:


mfg deify
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Assembler code editieren

Beitrag von Bisonte »

Also um Speicherstellen auszulesen, benutze ich ReadProcessMemory_()

Also erstmal die ProcessID ermitteln,
dann per OpenProcess_() die StartAdresse des Arbeitsspeichers des Programmes holen.

Dann kann man mit ReadProcessMemory auf die Daten zugreifen, wobei die Rechte die bei
OpenProcess_() mit angegeben werden, wichtig sind. Allerdings gibt es auch "Protected
Memory", will sagen, dass man da nicht so ohne weiteres rankommt.

Nun hast du einen "OffSet" und mittels Peek holst du dann die Werte raus ...

Meistens sind die OffSets Pointer auf die wahre Speicherstelle, sodass man erst den Pointer
holt und dann den Wert ausliest.

Schreiben dürfte mit Poke (wiederum Rechte beachten) funktionieren.

Auf diese Weise hab ich damals das Silkroad Applet gebaut. Wobei ich mich da nur auf lesen
beschränkt habe.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Assembler code editieren

Beitrag von ts-soft »

deify hat geschrieben:bevor ich jetzt verhöhnt werde ob das denn illegal sei oder nicht, würde ich gerne sagen, dass das Spiel von 2003 ist und der sourcecode bereits zum entwickeln freigegeben ist. Hierbei sollte also keinerlei Problem bestehen.
Auch der freigegebene Sourcecode macht das patchen der Orginal-Exe nicht legaler, in keinster Weise!
Wie kommt Ihr immer auf solche Ideen? Genau genommen ist bereits das Debuggen illegal.

Den freigegebenen Source kannst Du verwenden, nach den Lizenzbedingungen des Sources, das wirkt sich aber
nicht auf die Orginal-Kompilate aus.

Naja, einen Kläger wird es wahrscheinlich nicht geben, aber legaler wird es dadurch trotzdem nicht!

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Assembler code editieren

Beitrag von Danilo »

Da Du das Spiel gekauft hast und es wegen dem dummen Kopierschutz (enthält einen Treiber)
nun auf neueren Windows-Versionen nicht mehr nutzen kannst, solltest Du mal auf
gamecopyworld.com schauen. Da gibt es Hilfe für solche Fälle. Du hast ja das Original gekauft,
da wirst Du wohl keine 25 Jahre Knast bekommen, da Du nur Dein Recht auf Nutzung des
bezahlten Produktes durchsetzt.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Assembler code editieren

Beitrag von ts-soft »

Danilo hat geschrieben:da Du nur Dein Recht auf Nutzung des bezahlten Produktes durchsetzt.
Das "Recht" schließt sicherlich keine neueren Windows-Versionen ein, sondern nur die, für die das
Produkt verkauft wurde.

Wo kein Kläger, kein Angeklagter, aber die Worte "Legal" (ursprungsposting) und "Recht" sind hier eindeutig fehl am Platz :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Assembler code editieren

Beitrag von NicTheQuick »

ts-soft hat geschrieben:
Danilo hat geschrieben:da Du nur Dein Recht auf Nutzung des bezahlten Produktes durchsetzt.
Das "Recht" schließt sicherlich keine neueren Windows-Versionen ein, sondern nur die, für die das
Produkt verkauft wurde.
Das ist doch Blödsinn. Nur weil mein Lieblingsdrucker für Windows 7 keine Treiber mehr zur Verfügung stellt, werde ich mir keinen neuen Drucker kaufen, wenn ich in der Lage bin mir die Treiber selbst zurecht zu biegen. Privat kann man so einiges machen. Man darf es eben nur nicht veröffentlichen. Ich umgehe auch gerne mal den Kopierschutz einer Audio-CD, wenn mein CD-Player im Auto sie so nicht lesen mag. (Kam wirklich schon vor).
Also man kann auch übertreiben... :?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Assembler code editieren

Beitrag von ts-soft »

>> Also man kann auch übertreiben...
Mir geht es um die Begriffe: Legal und Recht. Weil es ist weder Legal noch hat man ein Recht darauf!

Der Rest ist mir wurscht :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Assembler code editieren

Beitrag von Danilo »

Ich denke auch das ein Gericht jemanden in der Praxis nicht schuldig sprechen wird,
wenn er ein legal erworbenes und somit bezahltes Spiel nach ein paar Jahren wieder
zum laufen bringt indem er einen NoCD Patch verwendet.
Dabei geht es nicht um Diebstahl, sondern eben wirklich darum Deine Nutzungsrechte
in Anspruch zu nehmen. Ich als Kunde habe nicht nur Verbote einzuhalten, sondern habe
auch Rechte. Das wollen die Softwarehersteller nicht hören, aber ein ordentliches Gericht
würde das sicherlich bestätigen, wenn es zu einer Anklage käme. Ich habe allerdings auch
noch nie gehört das Jemand angeklagt wurde, weil er eine gekaufte Software auf einem
neueren OS für sich privat wieder zum laufen gebracht hat.

Ich hatte vor kurzem den ganz konkreten Fall das ein Spiel nicht mehr lief. Ein DirectX 9.0c
Spiel, das eigentlich noch laufen müßte. Nach der Installation mit anschliessendem Reboot
weigerte sich Windows zu starten, weil der alte Kopierschutztreiber nicht zertifiziert sei.
Das ist schon eine Frechheit, ein Spiel so zu verkrüppeln, das man es wegschmeissen kann,
wenn man auf ein neueres OS upgraded, obwohl das Spiel selbst noch laufen sollte.
Da ist man als zahlender Kunde wieder der Arsch.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten